开源文化和商业之重思考

October 1, 2021

2021年,开源在国内得到了前所未有的关注和重视。

最具分量的国计民生规划–十四五纲要,都已经首次在国家级大政方针上提到开源:“支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务”,可以看出国家在战略层面对开源的肯定和支持。

目前众多互联网公司贡献了上千了优秀的开源项目;国内涌现出众多人气旺盛的开源社区;开源基金会陆续成立;得到各研究机构、学校、国有背景、投资机构的广泛关注;金融、电信等行业已经充分采纳开源方案,并且将开源治理提到企业顶层设计的位置。

然而,开源在大多数人思想中,还是一个相对不清晰的概念,很多人第一反应是“免费”,潜意识中认为价值不大,无法和商业优质产品相提并论。 还有人虽然了解开源,却将其当成一个待价而沽的商品,想办法销售出去是唯一要务。

我本人有幸参与了国际开源社区近20年的一线工作,并且在开源商业成功的软件公司长期就职。经过仔细思考,结合国内的情况,谈一谈我对开源文化和商业的理解和感悟。

  1. 什么是开源,开源就是指开放源代码么? 我们就从软件开源角度来探讨。source一词中译为“来源; 出处; 起源; 根源”等含义。所以开源不是特指开放源代码,而是指将一件事物的本源对公众开放,这件事的来龙去脉都是公开透明的。并不只是开放源代码,还包括软件开发过程中的文档,讨论记录,代码提交注解,问题处理过程和结果等等。 这和我们常说的政府办事应公正公开公平,是比较类似的。一个开源社区项目团队中,有分工有职责,代码所有权属于团队中的每个人,对于公开的问题,每个人都有提出意见的权利。这和西方社会长久以来的“委员会”文化有密切关系。

  2. 开源就是免费么? 这个问题很确定:开源不等于免费,开放文化和商业收费没有一点冲突。每个人可以公开获得开源产品和了解创建过程,这个过程可以是免费的,但更可以通过付费获得更好的服务和收益。 开源商业公司最成功的就是红帽软件公司,从08年开始,每个季度收入都在增长,股价也一路飙升,直到被IT巨头IBM收购。这两年从IBM财报看,红帽相关业务依然是拉动IBM整体业绩的重要部分。 那么,为什么很多人认为开源是免费的呢?和我们文化也有关联,经过几百年的积弱,国人更喜欢勤俭节约,一分钱掰成两半花。 既然有了不花钱能获得产品的机会,那就自己学习来实现业务目标呗,不是就不花钱了么。让我们接着第三个问题说说为什么不应该免费。

  3. 开源产品或项目的质量如何? 这个问题其实问的不对,应该是:“开源产品中做的最好的哪几个质量如何?”答案是,在很多领域,比如基础软件方向上,开源产品是一流的,质量已经千锤百炼。 开源产品因为其开放性,获得更多用户的使用和反馈。我们从经济学角度知道一种商品,最好的形态就是广泛使用,公平市场竞争,最终能达到一个相对平衡点,且是优化结果。 开源产品也是如此,用的人多,反馈后社区力量大很快改善,新的版本得到更好体验,这样形成一个正向循环。 对于一个好的开源产品,既然有很高的价值,又有高质量的附加在开源产品之上的服务,那么用户付费来获得对自身业务的支持,是再正常不过的。 至于定价多少,是一个市场化竞争的结果。我认为,开源服务也是需要被“开源”,可以提供什么,到什么程度,带给客户什么收益,一切公开透明。

  4. 把一个相对没那么成熟的开源项目放到社区里,由其自身发展行不行? 通过这么多开源项目运作结果显示,纯粹的无领导者的社区,效果是不好的,这也和社会中情景一样,没有好的物业管理的社区,最后变得脏乱差的概率较大。 那么问题是开源社区管理应该怎么管才能实现质量优秀,社区活跃呢?我认为有三点重要原因: a.有一套完备的开源社区管理制度。怎么提交代码,谁审核,谁检查质量,讨论内容范围等等,这些需要制定并监督执行。 b. 有若干社区领袖人物。他们把握项目的架构,发展路线,并积极提交主要的工作成果,引导社区成员积极参与讨论。一般而言,这些领导者为商业公司雇员或者有理想抱负的开源参与者。 c. 一定的激励措施。对于积极参与社区建设的开发者,给与积极的激励。可以是物质上的,也可以是精神上的,比如一个github长期参与度帐号就是一份最好的简历,一个知名开源项目的commiter就是最好的工作经验背书。

  5. 目前的开源公司和社区,都是理想化的么? 答案是no,真正能做到纯开源精神的,恐怕只有实现了财富自由的一些个体。 即便是商业成功的开源公司,也无法做到真正意义的完全开源。有的是提供更多功能的商业版封闭,有的是通过商业许可证来约束和收费,有的是隐藏文档、开发过程等提高使用门槛。 我们看到数以百计的开源许可证,也是达成商业倾向的一种体现。GPL的“传染性”用来确保衍生代码继续开放;Apache鼓励更多开发者贡献和商业友好;MIT有学院派的宽松和自由;还有带脏字的WTFPL,渲泻开发者一时的快感和无奈。 开源是个大社会,我们应该允许任何形式的文化,只要是开源,不触犯法律法规,不泄漏隐私等等。

  6. 怎么参与开源? 简单来说分为三类:使用者;参与者;引领者。 使用就是利用开源软件,自己使用也好,包装出售也好,只要不违反开源许可证和相应商业公司的权利就行。 参与是充分融入开源社区,积极贡献代码和参与讨论,回馈社区。这种是大多数企业参与开源的良好形式。 引领是从上游(upstream)来领导开源项目,把控发展方向,建设开源社区。需要一定的投入和专业人才团队。 upstream是开源的“根”,对于真正意义上的开源商业公司,就是牢牢抓住upstream并引领发展。

  7. 国内用户如何更好的运用开源? 目前国内很多企业已经大量使用了开源产品,但面临有若干问题:1. 被滥用;2. 存在安全漏洞; 3. 无专业人员支持; 4. 生命周期管理问题。 究其原因还是在于一开始使用时成本太低,开发应用时随手就拿来用了。已经部署的应用系统,时间一长就可能会有安全漏洞。大量的开源软件,想要找到合适的工程师维护非常难,而且对于用户甲方而言,并不是核心业务能力。开源软件版本更新迭代远大过商业软件,既然商业软件都会购买维保服务,那同样起支撑作用的开源软件,也应该得到运维服务支持。 开源必须需要得到治理,这个方面信通院云计算开源产业联盟做了很多非常有意义的工作,一方面组织很多开源治理做的好的企业进行经验分享,另一方面形成了开源治理的方法论和调研报告,可以通过OSCAR搜索到相关内容。

国内开源发展,需要涌现更丰富的开源项目,建设更完善的开源社区,孕育更成熟的开源专业服务公司,培养更广泛的开源开发者。