开源经济
尽管开源软件很快被许多硅谷大型科技公司所接受,但经济学家们仍在研究,这些项目怎么总能成功地解决市场问题呢?对此,自由软件人群给出的标准解释是:自由软件可以在自由和利他主义的道德要求下持续发展,但这似乎也不足以解释像Linux这样的项目为什么能如此快速发展。 人类历史上,从来没有任何行业仅依靠其贡献者的善意,就产出了这种对技术要求非常严格的项目。
为了搞清楚真相,21世纪初人们进行了一系列研究,这些经济学家试图在开发者身上找到理性生产者/消费者的概念。
2000年,哈佛大学经济学家Josh Lerner和麻省理工学院经济学家Jean Tirole分别发表了关于开源开发的经济学定义,他们声称能证明开源的主要动因是开发人员的经济利益,而不是给自由软件世界做贡献的愿望。
他们认为,直接利益来自他们所在的公司,而这些公司通过修复错误或添加功能来获利。长期利益方面,开源开发者通过向未来雇主或风投展示才能,以此推动职业生涯发展,同时也可获得开源同行的支持和认可。
Josh Lerner和Jean Tirole关于开源开发的经济学解释获得广泛认可。2000年,21世纪初,这一理论一度非常流行,但二十年来,FOSS(Free and opensource software,免费开源软件)生态在规模和生产方式方面都发生了很大变化。
这一变化主要因为一个叫Git的神器,Git是一个开源工具,它能让分布式协作开发成为可能,基于Git的Github(据说是全球最大的同性交友网站)网站大大加速的开源开发的节奏,降低了新开发者的入门门槛。在Github出现之前差不多十年前,Josh Lerner和Jean Tirole就预见到会出现一个允许大量贡献者协作的平台。
开源贡献者数量的激增,通常被认为是对其开发范式的验证。 在过去十年中,越来越多的FOSS开发者在抱怨维护开源代码库很麻烦。许多开发人员指出,用户的权利是这种抱怨的根源。
正如开发人员William Gross(威廉·葛洛斯)所说,当依赖开源软件的公司越来越多,那开源开发人员将面对激增的功能请求和代码问题,许多公司都希望他们的改进能快点得到反馈。 换句话说,人怕出名猪怕壮,一旦一个项目火了,该项目的开发者就快忙疯了。
此时,许多人又想起了Lerner和Tirole两位经济学家的言论,许多FOSS开发者也开始怀疑,依赖于志愿者善意的软件开发模式是否能持续扩大规模。一些开发人员把这个当做一种文化问题,可以通过让新手熟悉规则,让维护人员来解决这些问题。有些人则认为,这是一个可以通过钱来解决的问题。不过,也有人觉得这都不叫事儿。
开源的悲剧
2015年,Nadia Eghbal舍弃了她作为风投家的工作,开始研究为什么开源项目很难将这些工作货币化。Eghbal说,当看到许多开源软件被广泛使用后,他对开源的经济学越来越感兴趣,但始终搞不清楚改如何为其开发提供资金支持。
在Eghbal看来,这其中有许多让人费解的事儿。流行的开源项目跟成功的创业公司有相似之处:都能迅速被采用,都有庞大的用户群,开发成本或者说门槛比较低。不过,如果要看中投资回报的话,很多时候这些创业项目都是风头毒药。对支持开源社区的金主来说,最重要的是要找到能持续为开源提供资金的机制。
为了找到这个机制,Eghbal下了很大功夫去了解开源项目的维护者。在对数百名开源开发者进行了一年的访谈之后,Eghbal发布了(Roads and Bridges: The Unseen Labor Behind Our Digital Infrastructure)《路和桥:数字基础设施背后的奉献者》,可能是有史以来开源软件经济学最具代表性的研究了。
Eghbal的报告将开源软件视为一种非排他性的公有产品(原文是“public good”或者翻译成共有产品?),这是社会科学中的一种描述,简而言之就是任何人都可以使用的资源,无论他们是否交了税,非排他性的公有产品是健康社区的基石,但也受到所谓的“搭便车问题”和“公地悲剧”的影响。
这个问题也比较明显,就是有些公有产品一方面被过渡消费,一方面又产能不足,但是又没办法阻止那些没有做过贡献的人使用它。开源就是典型的公有产品,比如像谷歌这样的巨头能沉下心来研发一个叫Tensorflow的好东西,然后把它开源,谷歌没法让别人说你别用我的,如果突然有很多公司开始用Tensorflow,但是维护团队又没有对应增多,生产力跟不上消费者增多了,问题就来了。
社区公共用地也是一样,当人们无管制地使用公共用地,但没有机制来鼓励某个个体承担维护公共用地的成本,每个人都只顾着自己的利益而不付出的时候,最后都会消耗殆尽的。对应到FOSS中,公有产品是十亿行开源代码,代码本身不是消耗品,但开发和维护代码的程序员时间和经历是消耗品。
公共用地的悲剧是经济学中被研究的比较透彻的问题,它的解决方案是把将公地变成私人或受监管的商品,但Eghbal很快意识到,这办法在开源软件方面并不适用,因为将软件变成私有产品会破坏开源开发的整个过程。
另一方面,规范开源软件的生产过程(例如,建立类似于国家科学基金会的组织,将公共资助分配给开源软件项目)破坏了开源软件开发的主要优势。监管所带来的稳定性是以牺牲效率为代价的,在快节奏的软件开发领域,这根本行不通。
以前,一些开源维护者试图规范谁能用开源软件,例如禁止与移民和海关执法部门合作的公司使用这些软件,很快就遭到了来自开源社区的强烈负面反应,最终这项决定被撤销,这充分证明开源软件应该向所有人免费用。
开源社区设置访问规则被视为解决开发人员倦怠的一种可能性方案。William Gross在博客中写道,在这种“开源但封闭社区”的模式下,如果想要进入开发者社区,需要付费。
这种模式下,用户仍可以随意使用这些代码,但是如果想要提改动和需求的话,你得掏钱,因为我们也是付出了时间和精力的,William Gross认为这种激励下社区的活跃度会提升。
对于另外有些不愿意管理社区的维护者而言,最合理的解决方案是要求开源软件的用户聘请开发人员来开发,这种方法最重要的要找到谁从开源项目中受益最多,然后让他们能尽可能多地回馈生态系统。虽然准确的数据能跟踪开源贡献者,但有一样东西能尽可能的描述些情况,它就是GitHub。
GitHub是2008年上线的代码托管网站,被网友戏称为全球最大的同性交友网站,与开源社区关联巨大,来自全球各地约2500万贡献者在GitHub上存放着超过1亿个代码库,这2500万人参与开源的动机多种多样,根据开源Web开发框架Ruby on Rails的创建者David Hansson的说法,过去的二十年中,开源贡献者们的个人资料发生了很多变化。
“绝大多数开源软件,尤其是与网络相关的软件,都是一些公司为了解决一些重要的技术问题,给开发人员提供一些资金赞助。”汉森表示。 “这跟理查德·斯托曼所说的自由软件有很大不同,但它也是一种能产出优秀开源软件的方式。”
当然,也有很大一部分开源代码是由开发者在业余时间写出来的,这也非常具有代表性,汉森也认为,这些人对开源的热情是开源生态系统的基石。
但仔细看看GitHub 2017年的主要贡献数据会发现,汉森的说法更具有代表性,我们看到最活跃的开源项目贡献者都来自谷歌,微软,亚马逊,IBM,Facebook,腾讯,百度,红帽和英特尔等等大公司,他们每年都从基于开源软件的产品中获利数百亿美元。许多开发者都说这些大公司从开源上获利太多但是回馈太少,但是从这些大公司的回应中我们看到,实际上,这些公司对开源软件有实质性贡献。
IBM开放技术副总裁Todd Moore指出,自90年代中期以来,IBM一直在为开源项目做贡献,当大名鼎鼎的Linux和Apache还在发展初期就得到了IBM的支持,Tood Moore给出的数据说,先后有超过1200名IBMer为1000个开源项目做出过贡献。Moore还说,“很多”IBMer全职贡献Linux,Kubernetes,Java和Node.js等开源项目,并且IBM每年都会奖励社区里的顶级IBM开发者。
Moore还说,IBM推行了年度认证计划,帮助IBM员工了解与开源相关的价值和风险,教员工如何成为开源社区或者某个项目的有效成员,据说,有超过72000名IBMer已获得该认证。
Google开源主管Chris DiBona也有一段类似的描述。
自谷歌成立之初,自由和开源软件就一直是谷歌技术的一部分,DiBona表示谷歌多年来在开源许可下发布了数百万行代码。DiBona没说具体谷歌有多少人在全职贡献开源代码,只是表示谷歌在Github上贡献了2000多个开源项目,谷歌还为业界贡献了开源语言Go和k8s,还有大名鼎鼎的Tensorflow。
谷歌鼓励员工在与工作相关的开源项目上做贡献,或者出于个人兴趣去做贡献,DiBona说,Github公布的数据显示,谷歌员工在Github上的行为数(activity)占到总体的行为数的1%以上,你很难找到一个没贡献过代码的谷歌员工。
谷歌和IBM通过强制或者鼓励的方式让员工在开源社区做贡献,许多公司还向Linux基金会和Apache基金会捐钱。
不过,也有开发者提出,这些大公司做不做不是个问题,问题是这些公司做的贡献够不够,还有,这些公司贡献的是什么项目?
Django是非常著名的Web开放框架,它的联合开发者Jacob Kaplan-Moss表示,这些市值几十亿美元的大公司应该做更多贡献,之前微软不是说要收购Github吗?他觉得应该把这钱的一半给到开源软件的创建者和维护者们。
Jacob Kaplan-Moss在推特中说,开源软件这些问题的根源是钱,解决问题的方式就是钱,这些科技公司从开源软件中赚数十亿美金,但是没有什么回报,他们本可以很轻易的解决这些问题,如果这些大公司真的关心开源软件,而不是作作秀,他们应该在开源维护者和开源基金会上投入更多资金。
虽然汉森不反对为开源项目提供更多资金的提议,但在关于“开源和钱的风险”的问题时,采取了更为谨慎的立场。
如果你管理着有几百个贡献者的项目,有一天你为这个项目引入金钱奖励机制的话,那会很危险!汉森认为,这些人做这些事儿并没有经济上的考量,只是单纯出于兴趣或者创造热情才写的代码,你突然告诉他们说,你们投入了时间是吧,给你算成钱转给你,这样的话,很多人在心理上会很受伤。
这种伤害有多大呢?
汉森说起了在对Ruby on Rails做贡献代码时的故事。当汉森最开始启动Rails时,汉森就说迟早会被功能请求压得喘不过气儿的,后来确实涌现出铺天盖地的需求,一瞬间他感觉自己像个软件开发商一样。这时候,避开市场化操作的话就显得特别明智,因为他能不理会这些请求,如果真的拿了这些提需求的人的钱,那就得必须满足人家的要求,但是因为他是对社区做自由贡献,所以他不用感激任何人,拿人手短,哪儿哪儿都一样。
我的软件你可以免费用,如果你想让它变得更好,那可以啊兄弟,一起来吧,汉森说,但是如果你对我大喊大叫的说这说哪儿的话,对不起了,您内,走好不送!
需要注意的是,没人说给开源社区资金是坏事儿,包括汉森也说这是好事儿鸭!开源社区真正的问题不是要不要资金的问题,而是怎么分配这些资金的问题!(待续)