如何衡量一个开源组织的贡献
开源本质论
开源的本质:通过开放式协作的方式,创造数字公共产品。
开放式协作的特征
- 开放参与:在一个公开的平台(数字公共服务)上进行协作,任何人都有机会参与进来。
- 规则公开:在公开的平台上,有能够被方便查阅的规则,且这样的规则,允许讨论,允许社区成员提出修改意见,并且可以通过民主的方式修改这些规则。
- 协作过程公开:在公开的平台上,所有的协作过程,包括共同创造数字公共产品的过程,以及围绕规则进行讨论的过程,都是公开的。
- 独特的荣誉与激励机制:在社区中的个人,他的决策权限和地位是基于功绩而非强加的,也非外部强行任命的。这也意味着,社区有一套公开记录、计算、展示功绩的办法。
数字公共产品的特征
按照数字公共产品联盟的定义有九大要点,但是我们认为可以简化描述为:
- 数字化内容:保证能够在互联网上,快速传播
- 开放标准:保证所有人都能够自行实现阅读、理解、运行、修改等操作
- 开放许可证:保证能够以开放式协作的方式来生产
数字公共产品的本质
数字公共产品的本质:以数字化方式凝结的人类知识
我们可以将数字化之后的人类知识,分为两种:
- 可阅读的知识:通常是一份文档,或者数据,可以阅读、理解,然后应用于自己的领域
- 可使用的知识:或者是可以直接运行的代码/系统,或者是可以被IT系统直接使用的开放数据
无论是哪种知识,都大大节约了其他人再次创造这些知识,所需要的时间。
开源价值论
开源项目的价值 = 开源项目投入的时间 × 用户总数
开源生态的总价值 = 被共享的数字公共产品,为全人类节约的时间
再展开一层,一个开源项目&社区,会在很多方面节约大家的时间
- 不用再写一遍代码,直接能够使用,节约了开发时间
- 通过阅读优质的文档,能够快速运行,节约了应用时间
- 在社区里提问,大家快速给予解答。后来遇到相同问题的人,甚至不用再次提问就能找到答案,节约了摸索时间
- 通过在社区里酝酿创新,大家的创意在讨论阶段就快速融合,节约了分头探索的时间
总结:一个开源组织的使命,就是增加开源生态的总价值。
再稍作展开:一个开源组织的使命,就是以开放式协作的方式,推动更多的开放式协作,创造更多的数字公共产品,并且让更多的个人、企业、组织用上这样的数字公共产品,从而增加开源生态的总价值。
企业与开源
在探讨开源基金会的价值之前,首先需要搞清楚,企业为何会使用开源,更奇怪的是,企业为何会主动开源?
虽然今年来,大家一直都在倡导“开源不等于免费”的观念,但毋庸讳言:企业最初采纳开源的原因之一,就是免费。或者说“以为是免费的”。
假设有两家开发高度类似的软件的公司,一个版本的开发工作量都是100人年。其中一家公司使用了80%的开源软件成分,另一家公司使用了90%的开源软件成分。我们可以做一个简单的推测:更少采纳开源的公司,需要投入更多的人力成本,在后续的企业竞争中,将会处于劣势。
随着采纳开源的比例越来越高,企业拥抱开源的“副作用”也逐渐的浮现出来。一方面要加大合规、安全的投入,越来越需要关注开源供应链安全。另一方面,企业所采纳的开源软件,在社区中还在不断的向前发展,如果不能及时跟进,也会导致企业的竞争力持续下滑。于是“upstream first”,主动回馈开源社区的实践模式,就浮出水面了。
另一方面,我们还发现,有一些企业不仅是被动回馈开源,更积极主动的对外开源,这背后的逻辑更加需要“扭转传统思维模式”,然后才能理解。
于是,我们可以提出一个“知识落差”的概念,就是企业内部知识,相对于社区公共知识,具有一定的“领先优势”。知识落差的大小,与产品利润成正比。当一个企业开始将自己的知识贡献到知识公地,他的用户数量将会扩大(因为更多的用户会采纳他的产品),而另一方面,知识落差将会缩小,因此产品利润将会下降。在这个过程中,企业需要不断调整自己贡献开源社区的策略,以追求“用户数 × 利润”的最大乘积。
这就是企业制定开源战略的核心逻辑。
基金会的价值
相对于其他的草根开源组织,基金会具有特殊性,因为企业会将金钱与项目,捐赠给基金会。因此:基金会需要同时承担公益使命与服务职能。
对于整个社会而言,基金会的价值在于有效增加开源生态的总价值。
对于基金会所服务的企业而言,基金会的价值在于帮助企业制定合理的开源战略,实现收益最大化。
前者体现基金会的社会价值,后者体现基金会的商业价值。
如何衡量开源组织的贡献
在成都的COSCon’23上,我提出了一个衡量的标准:
- 帮助多少人,成为开源人?成为更好的开源人?
- 激励多少人,留在开源社区,持久贡献?
- 帮助多少开源项目,变得更有价值?
- 更好用,更多人用?
- 维护整个知识公地,保值增值
- 供应链安全
- 生态健康
- 凝聚共识
这些衡量的办法,说实话都很难量化,也许我们可以再进一步,尝试如下的计算。2022年的时候,我写过一篇文章试论开源生态的经济模型,大意是:我们可以计算一款开发软件的“社会必要劳动时间”。然后,再尝试估算一款软件的用户数量,或者“装机数量”。
最终,我们可以尝试计算,一个开源组织,或者一个基金会,对于各个开源项目,以及各个开源社区产生的帮助的总和,也就是 Σ 项目开发耗时 × 用户数量。
我们可以设想,有这个组织,与没有这个组织,在它所影响到的开源项目中,产生的价值总量差异。这就是一个开源组织的贡献。
至于影响了多少开源人,维护供应链安全,增进生态健康,凝聚共识这些间接的贡献,也只能折算到这个组织所能影响到的开源项目中去计算。
以上,就是我的一些粗浅的思考,希望与大家多多交流。