第一节 二十年目睹中国开源社区之怪现状
前段时间我参加了一个官办开源组织的会议,去之前说是要跟华为相关人士会晤,讨论操作系统和近期的重大事项。我抱着围观的态度过去了。
去了之后,华为的人还没来全,开源组织的领导先分析了一下中美贸易战的情况,以及美国针对华为采取的科技封杀措施。
领导提到,华为现在受到美国的科技封杀,尤其是安卓不给用了,看看我们中国的开源界可以帮些什么忙,比如最近我们刚组织专家鉴定了一款国产操作系统,可以作为华为的操作系统备胎。
后来华为的人来全了,但还没说几句话,领导突然宣布散会。会后领导的秘书发来致歉说明,说华为来的人做不了主,讨论下去也讨论不出个结果,所以就提前散会了。
这会议让我很不爽。来回花两个小时顶着炎炎烈日,结果还没谈到主题就结束了。领导说散会的时候,有个自称开源社区人士的人还跟我争了起来,说国产基础软件没搞好,还不是你们这些人不行?当年他找北京市政府给国产操作系统一个大机会(指的的是2000年左右北京市政府采购国产基于 Linux 的桌面操作系统一事),花了很多钱,结果一个个都是“狗肉上不了席”。他这话批评得很对,但只是批评错人了。这位开源社区人士没搞清楚的是,我并没有参与那些所谓的国产操作系统的开发,相反的是,我坚持做自己的基础软件做了20年,没从国家拿过什么钱。
再回到这会议的主题上。为啥华为来的人做不了主?难道任正非来了就能做主,就能让专家鉴定过的国产操作系统做华为的备胎?在我看来,20年过去了,所谓国产操作系统还停留在当年的那个水平,给华为提鞋都不配,华为怎可能让所谓的国产操作系统做备胎?就因为是中国开源界开发的?
这会议,折射出中国开源界的很多怪现状。
1)有意忽视基础软件
去年,我总结过国产操作系统的七宗罪,这里就不重复了。有兴趣的读者可以阅读这篇文章:《国产操作系统七宗罪》。
20年来,这些国产自主操作系统围绕着自主可控的大方向,以替代 Windows 为目标和需求,以本地化和整合已有 Linux 开源社区的软件为手段,通过为国产芯片做定制、优化而寻找自身的市场定位。
政府的需求当然也是一种市场需求,但无法代表操作系统的未来发展方向。既然只是替代,那就没有必要做技术改良,能跑办公软件,有个好的浏览器和中文输入法,就差不多了。因此这么多年来,前前后后差不多 20 家国产操作系统厂商,没有一个为基于 Linux 的桌面系统之基础设施做出过重大贡献的。比如 Linux 桌面上的 X Window 窗口系统的技术改良,涉及到内核以及一众基础软件,全是在以 RedHat 为代表的海外开源企业的支持下发展起来的。
这种情况下,开源软件被当做是实现“自主可控”目标的一个手段,也就是说:只要是基于开源软件做的操作系统,就是自主可控的——源代码都在嘛!但却忽视了一个重要的事实:别人的开源软件永远是别人的,人家不让你用的可能性是存在的!
前个阶段本公众号做了一篇文章,讲述 Apache 基金会以及 GitHub上的开源软件受美国出口法律法规管控的一事。文章一出,马上有人出来辟谣:洋大人说了,开源软件永远自由;洋大人说了,开源软件本质上是言论自由,受美国宪法保护;洋大人又发表权威说明了,开源软件不受出口管制……还有人给这些文章的作者扣上了一个制造恐慌的帽子。可事实是,不管洋大人怎么说,这些网站上有关开源软件受美国出口管制的声明还在那里,并没有删除。
其实真正恐慌的是那些所谓的国产自主可控操作系统厂商。他们的技术几乎全部构建在欧美(主要是美国公司)开发的开源软件基础上。若是大家都知道了他们在基础软件方面没有做任何积累,几十年了,花了国家很多钱,用人家的东西不知道贡献,连你中有我、我中有你都没做到,被老百姓骂是小事,国家不再拨款没钱可骗才是他们最怕的。
2)官办开源组织的作用有限
政府有自主可控的需求,自然就有人想着去找政府要钱,然后就有了官办的开源组织。不仅仅有全国范围的开源联盟,还有一些地方政府搞的实验室,也想支持和推出一些开源项目。
这也是非常怪异的一件事情。开源软件和开源思想发源于美国,但美国从来没有过官办的开源组织,相反,几乎所有的开源组织都是以慈善基金会的名义在运行,通过来自社会和企业的赞助资金来发展。另外,有很多大型的 ITC 企业发起或重度参与着重要的开源项目,如Linux、FreeDesktop、Chromium、WebKit 等等。
为何 20 多年来,中国没有形成类似的良性循环发展环境?官办的开源组织是不是应该反省一下自己多年来到底发挥了什么作用?
3)有人拿开源装逼,而某些人把开源当成道德绑架的工具
国内大大小小冠以开源名义的组织、公司、会议可谓是五花八门。做软件的,不提点开源好像低人一等。但本质上,开源只是一种市场手段,开源生态要得到发展,也只能在大的知识产权范畴内进行。如果你的软件不开源就能卖得很好,那开源本身就没有多大的意义;如果你的软件本身没有解决市场的痛点,将软件开源出来也不能促成软件在市场上的成功。
“开源免费”,这是很多国内开源组织宣传的主要用语。他们可能认为,开源就意味着占领了道德制高点,那何不干脆免费让所有人用?在我看来,只有官方或者半官方性质的开源组织,才会大言不惭地宣传开源即免费——因为他们根本不需要为工资发愁!
很多开源软件的确是免费的,但开源和免费并不能划等号!很多开源企业选择通过增值服务或者双许可证模式来获取收入,从市场获取了收入才能继续发展。这有利于建立某种合理的商业模式,进而促进开源软件的良性循环。国外的 RedHat、国内飞漫的 MiniGUI,都可以证明这种模式的可行性。
MongoDB 这个开源软件,国内外有一堆云服务厂商在“免费”使用,去年突然宣布要更换许可证以方便收费,国内的开源社区就开始口诛笔伐,意思是你利用开源占据了市场,现在大家都用了,你却要收费,这不道德!还试图自己 fork(派生)一个出来继续免费给大家使用。
这种说法实在是可笑得很。MongoDB 本来就是用 AGPL 许可证发布的,这个许可证和 GPL 类似,但主要针对的就是使用自由软件提供服务(但不复制和分发软件本身)的这种情况。本来MongoDB 在 AGPL 许可证的框架下,其目的就是要建立双许可证的商业模式,结果很多厂商(尤其是国内的云服务厂商)不按这个规矩来,MongoDB 收不到钱,所以 MongoDB 要更换更明确的许可证来收钱。作为版权所有人,这种切换无可厚非。
然后,国内开源社区的人们,一方面批判 MongoDB 的做法,另一方面呼吁社区 fork 出一个完全开源且免费的版本来。我就想不明白了,先不说你是不是有能力维护一个这样的软件,就算你有能力,难道中国的工程师只需要喝西北风?
4)强调分享,而忽略了协作
不管是在哪个冠以“开源”的会议上,大家都一个劲地强调“分享”两个字。是啊,开源就是免费,免费给你用,我就是雷锋,我就是在分享啊!然而,开源软件的最重要特征是协作,只有大家一起协作,发挥各自的长处,才能彼此依靠,做到你中有我,我中有你,才能形成生态。
而中国目前一些成气候的开源基础软件,基本上都是孤军奋战。
5)国外的屁都是香的
在我所在的技术群里,经常会有人发一些开源软件的项目介绍过来。比如前两天有人发了一个什么GUI 的,五千行源代码,开源而且免费。我做 GUI 做了二十年了,五千行连个编辑框都做不出来,这么个一两周就可以做出来的玩具,有必要拿出来欢呼吗?
还有人呼吁复辟“MeeGo”,让华为拿这个系统做备胎。MeeGo 是 Android 的手下败将,这么多年过去了,一个没有成功产品化的东西,要想战胜应用了十年的 Android,能胜任才怪。究其心理,恐怕还是洋奴心态在作祟。
结论
中国的开源社区说起来已经走了二十年了,有一段时间还被互联网创业大潮搞得安静了那么几年,是 2010 年之后才又活跃起来的。然而,回首望去,我们走过的路看来没啥可以大书特书的,未来的路还很长。
前几天,美国政府开始封杀华为之后,很多企业纷纷现身,以国产操作系统厂商的面目出现。一看吓一跳,有国产操作系统背景的 A 股上市公司居然有二十多家!以小人之心度之:他们最终的目标也就搞点钱花花罢了,至于操作系统做成啥样,能不能做成,则不是他们首要考虑的事情。这些公司还是别把自己打扮成开源公司的好,除非你对开源社区的贡献能比得上 RedHat 的一半儿。
另外,在我看来,大家没有必要为华为操心。华为接近市场,知道用户的需求,踏踏实实投入了七年,华为自己的备胎不知道比那些国产操作系统强出去多少!替华为操心,真是咸吃萝卜淡操心啊!
再次强调我的观点:如果不面向市场来开发,所谓自主可控的操作系统或者基础软件根本没戏。我不认为政府应该扮演掏钱者的角色;政府应该做的,就是建立良好的知识产权保护环境,让市场发挥作用,并通过大力宣传改变人们心目中软件可以免费用的惯性思维。只有做基础软件的企业赚到钱了,国产的操作系统以及基础软件才能得到良性发展。
最后一句:官办的开源组织应该转变思路了!
网友热评:他们应该做的,不是转变思路,而是解散。
第二节 给国内开源组织的建议
前两天发布了《二十年目睹中国开源社区之怪现状》一文之后,有同志反馈说别光发牢骚,应该提出建设性的意见或者建议。
的确,发牢骚容易,做事儿难。对我来说,很多情况我并不了解,让我提具体的意见或者建议还是挺难的。但是,我还是可以针对开源组织这种特定类型的单位,提五点建议出来,供大家参考、商榷。
1)开源组织要有明确的组织目标或愿景,有切实可行的行动纲领以及执行路线
很多开源组织的组织目标或者愿景是很模糊的。比如说“促进开源”,这意思是促进开源软件的应用、还是促进本土的开源软件项目?显然,这样的组织目标和愿景是不合格的,最终导致时间一天天、一年年过去了,除了组织了几场活动或者会议之外,没有其他可圈可点之处。
今年四月,山东一家企业邀请了几个搞开源软件的朋友去青岛参加了一个会。他们是想依托青岛搞一个开源国际中心。然而,大家讨论了半天也没得出个有效的执行方案来。后来我跟组织这次会议的朋友说,你们自己还没想清楚搞这个开源国际中心的目的是啥,叫大家来参会,结果其实更像是老朋友聚会,并不能达成任何有效的方案或者路线。
前几日,由于近期开源软件成了一个讨论热点,我也经常被拉到不同的群里边。大家你一句我一句在讨论一些热点问题。我一般很少在这些群里说话,因为我不知道说什么。为啥呢?因为我不知道拉这些群到底要解决什么问题。
成立一个公司,要用产品或者服务来赚钱。这个道理大家都懂,开源组织也一样,虽然可能没有直接的盈利目标,但也得有组织的愿景,切实可行的行动纲领以及执行路线。
去年我听深圳市政府搞了个鹏城实验室,要在几年内搞几个有足够影响力的开源项目。这个目标听起来很清晰,但其实非常模糊。比如什么叫有足够影响力?一个如 Linux 这样“有足够影响力”的项目从酝酿到成为“有足够影响力”的项目,通常要经过五年到十年的时间。领导们有没有这个耐心呢?
2)不要把形式当做结果来追求
就我所知,二十多年来,很多人都希望建立中国自己的开源软件基金会,但最终都因政策不允许而作罢。我认为,这就是标题所说的“把形式当做结果”的那一类问题。
要清楚的是,首先你要有目标,然后才是实现这个目标的手段,而开源基金会只是手段之一。没有一个明确的开源项目, 成立基金会做什么?要先有项目,才有基金会,而不是先有基金会,才找项目。做事儿不能做反了。
另外,基金会并不是运作开源项目的唯一途径。国外的 RedHat 等厂商,为开源做了很大的贡献,但一点儿不影响赚钱,而且人家还上市了。
在国内,比如我做 MiniGUI,我成立一个公司,用双许可证商业模式,我没想挣太多钱,自由自在能够养活一个小团队就好。二十多年来,虽然也遇到过困难,但现在活得挺好。再比如小熊主持的 RT-Thread 项目,先是开源项目,然后成立公司,现在得到资本市场的青睐,也没有走基金会的道路。显然,基金会只是一个形式,在国内的体制下不好搞就不用非要这么搞,公司也是一种开源项目的组织形式,没有基金会也照做不误。难道非要有个基金会才叫开源软件?或者,成立公司搞开源,就一定要有盈利,非要做大甚至上市?
3)要务实不要务虚
要做好开源组织的工作,必须打造几个拿得出手的开源项目。所谓民族的才是世界的,这话很对。然而,目前很多开源组织的工作以务虚为主,并没有组织开源项目的能力。试图通过组织一些相关厂商来一起做不太具体的项目,这种想法简直就是天方夜谭。
大家很羡慕国外的基金会,人家的基金会就是在做项目,一个接一个。比如,自由软件基金会的各种工具,Apache 基金会的各种项目,无不是在从具体的项目入手开展工作。
4)不要犯常识性错误
比如我上一篇文章所讲的,开源并不等于免费。把开源和免费两者相提并论的做法是不正确的,是犯了常识性错误。
再比如很多人经常提到,我们应该制定一个自己的开源许可证。我认为这种想法跟先搞基金会再搞项目的想法如出一辙。开源许可证是为开源软件或者项目服务的。正确的做法是,开源软件的作者根据软件本身的特点以及他自己的愿景来选择某个特定的开源许可证或者自己制定一个,而不是凭空制定一个许可证,然后告诉大家请使用这个许可证。
5)要协作,不要竞争
面对美国的科技封杀,国内开源社区可以做的事情太多了。但是开源组织经常会追逐热点,比如大家都想着搞操作系统、搞人工智能。这是不对的,中国的现状是开源精神没有普及,基础软件方面的人才不足,软件价值无法得到很好的市场体现,这都成了制约我们发展的因素。因此,我们更加要团结起来,协作起来,而不是搞重复性的工作。比如我曾提到的,华为要做手机操作系统,那其他厂商的正确做法是围绕华为操作系统的生态做相应的工作,而不是再搞一个新的手机操作系统来和华为竞争。从资源配置的角度讲,这种做法绝对是浪费。
以上就是我的建议。在我看来,国内很多开源组织存在的问题是在方法论层面的,还到不了具体的措施层面。所以,我所提的建议也是宏观方法论层面的。只有方法对了,才能把路子走对。
注:本文转自公众号“开源操作系统百家谈”,略有删节。
[修改于 5年6个月前 - 2019/06/08 04:08:21]
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |