【CSDN编者按】作为一名使用开源软件的开发者,你是否曾思考过开源软件是如何盈利?如何运营下去的?本文作者从正反两面给出自己看到的案例和建议,思考让开源软件持续下去的方式,一起来看看吧。
作者 | TJ VanToll
译者 | 香槟超新星,责编 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
以下为译文:
作为一名软件开发者,你可能并不会意识到,对大多数人来说开源背后的商业逻辑完全不合常理。
比如说,几天前我与一个“普通人”的对话如下:
我:“对不起,我来晚了。今天工作忙的焦头烂额的”。朋友:“没事没事。工作遇到什么问题了吗?”我:“我们要在三个不同的JavaScript框架中选出一个用于项目开发,下周就Deadline了,所以必须尽快选择。”朋友:“哦哦,明白了。哪个框架最便宜呢?”我:“哦,它们都是免费的,不要钱。”朋友:(๑°ㅁ°๑)‼
在大多数行业中,你需要为能够帮助你完成工作的工具付费,但软件的世界里我们大多数人都能使用各种免费工具来搭建应用程序。
最受欢迎的文本编辑器?Visual Studio Code,免费。
最受欢迎的源代码管理提供商?Git,免费。
最受欢迎的JavaScript库?React、Angular、Vue以及其他竞争对手全部免费。
付费软件并不稀奇,但令人惊讶的是,仅仅在过去的几年中,我们就已经把很多重要的基础架构转移到了免费和开源的软件上。
这种向免费且开源的工具的转移对开发人员和整个软件行业都有极大的益处,但这种转变也带来了其他后果。在本文中,我将就其中的一种后果进行讨论:即一个有问题的经济模型和我们可以采取的措施都有哪些。
首先让我们先简要回顾一下,我们最终是如何获得今天这样的开源模型的。
开源是如何来的?
为了能让你体会到时代的变迁有多么巨大,我们来看下2000年代初期微软高管们说的话:
开源是对知识产权的严重破坏。我想象不到还有什么会比开源对软件业务和知识产权行业的伤害更大。”——前Windows主管Jim Allchin“历史证明,尽管这种类型的模型(开源)可能会占有一席之地,但对于建立一个大众化的市场,以及搭建面向消费者们的功能强大且易于使用的软件,这种模型并不成功。”——前微软高级副总裁Craig Mundie
站在今天的角度来嘲笑这些言论很容易,但在当时这种观点并不能算得上是激进。到2000年,开源已经是一个已经立足并在逐步增长的概念了,但大多数公司主要还是选择使用付费方案来搭建应用程序。
我在软件行业的职业生涯始于2000年代初期,当时我的第一份工作涉及一个基于IBM的IDE,用于编写Java代码,一个付费的源代码管理方案(我倒宁愿不记得),以及一个托管我们的生产程序的IBM大型机。
IBM的Rational Application Developer,我在2000年代初期用过,直到今天这个软件还存在。
所有这些工具都需要花钱,很多钱,但这种支出被认为是可以接受的,因为这些工具提供了足够的价值,能够保障付出的成本是值得的。
在之后的十年中,业界慢慢地转向开源。公司越来越能够意识到,像MySQL和Apache这样的开源代码工具不仅是可行的,甚至比花大价钱买的商业产品更好。
我向开源转移的经验是关于Web的,与今天的Web相比,2000年代中期那时候的Web像是未经开发的蛮荒西部。Web开发人员的任务内容包括支持一堆令人眼花缭乱的浏览器,从最新发布的Internet Explorer 7到古老的IE6,以及Firefox,开源浏览器开始挑战微软对浏览器市场的束缚。
开发人员搭建的旨在用来管理跨浏览器开发复杂性的工具包括Dojo、MooTools、jQuery以及许多其他工具等等。
2007年6月的jQuery主页
这些框架都采用了不同的方法,使用了不同的API,但它们都有一个重要的共性:免费以及开源。
更多成熟的开发生态系统,如Java,.NET等,在那时候面对开源的益处时还在纠结,但Web从一开始就是建立在免费且开源的软件的基础上。
这对像我这样的Web开发新手来说是个福音,因为这意味着我在家里就可以立马用Dojo和jQuery上手做点东西了,我在公司也可以开始使用它们了——我曾经习惯于掏钱来购买自己需要的软件工具。
不只有我一个人能立即抓住使用这些新库的机会。jQuery的使用率在2000年代后期激增,催生了一个庞大的jQuery插件生态系统,这些插件在jQuery的基础上添砖加瓦。这些插件中的绝大多数都免费且开源,因为到了那个时候,免费且开源已经成为了人们对所有Web框架以及插件的期待。
新一代的Web软件激发了许多开发人员(包括我自己)的灵感,并帮助Web变成现在。“所有软件都必须要免费且开源”的预期导致了当今开源界的一个困境:经济和资金结构方面是有问题的。
开源与经济学
在最开始时,开源项目是个人或小团体的兴趣项目,发展到后面免费分享给世界。这种现象在软件世界中很普遍,是很棒的一件事情。
但这并不意味着这些开发人员所做的工作100%都是为了无私奉献。时至今日,人们参与开源项目的主要动力是为了自己的职业发展。例如,jQuery团队的前成员们现在很多都在大型科技公司中担任重要角色。MooTools的几个贡献者现在Facebook,从事React方面的工作。我曾参与jQuery UI两年,后来这段经历帮助我得到了今天在Progress的这份工作。
本来把职业发展作为参与开源的主要动力无可厚非,但当项目作者取得一定成功时,可能就会出现问题。因为事实证明,一旦你已经得到了自己想要的知名度,突然间就会觉得,处理那些GitHub的随机issues已经不再是你度过星期六晚上的理想方式了。
在这种情况下,许多开发人员会试图通过收集捐款来覆盖他们自己所花的时间和精力。例如,如果你回顾2007年的jQuery网站,请注意看,屏幕的左下方已经出现了一个捐赠按钮。
Dojo项目也从差不多那时候开始在网站上设置了捐赠选项。
如今,捐款通常是通过Patreon或某种形式的赞助来收集的,ESLint和Vue.js等项目就是这样。也许最臭名昭著的例子是流行的core-js库,在每次安装时都会显示一个公开的捐赠请求,这引发了一些争议。感谢您使用core-js(https://github.com/zloirock/core-js)来polyfill JavaScript的标准库!这个项目需要您的帮助!请考虑在Open Collective 或 Patreon上支持我们!> https://opencollective.com/core-js> https://www.patreon.com/zloirock还有,core-js的作者目前正在找工作中。-)比这争议更大的是,从去年开始,the Standard JavaScript项目开始在你每次安装它的软件包的时候都显示广告了。
如你所料,开发人员对广告不太满意,因此npm迅速采取了行动——禁止任何在运行时,安装时或在软件开发周期的其他阶段(例如via npm脚本)显示广告的软件包。
无论你如何看待npm日志中的广告,有一个共识是我们都能达成的:从经济学的角度来看,作者想要通过自己的作品来赚钱的想法再正常不过了。
在当今的开源世界中,像core-js和Standard这样的项目所提供的价值,与维护者所获得的经济利益之间存在巨大的鸿沟。
考虑到这一背景,让我们来看看我所认为的可以用来试着解决资金缺口的三种方法。
解决方案
解决方案1:基金会
解决开源项目资金问题的最古老方案就是以基金会的形式存在的。其中最著名的是Linux基金会。该基金会成立于2000年,如今拥有超级多的团体成员。该基金会支持着几个最大的开源项目,从Linux本身,到Node.js,再到jQuery,以及差不多它们之间的所有东西。
Linux 基金会支持了大量项目的开发
尽管Linux 基金会是最大的软件基金会,对于更专业的软件技术或领域,还有许多其他的基金会存在。例如,.NET 基金会帮助支持.NET项目,而FINOS,即Fintech Open Source Foundation,则支持着金融领域的开源项目。
这些基金会做了很有益的事,像Linux这样的大型开源项目得以维护到今天的原因,但它们不是万能的,不能完全解决开源的资金问题。
基金会最大的问题,也许是所支持的项目的广度太大。如果你是一家公司,然后你花钱加入一个基金会(通常是一大笔钱),那么你将只能指望基金会把这些资金适当地分配到各个开源项目中。当基金会支持的项目数量多的惊人时,也无法保证你的钱会投入到你的公司会用到或会关心的项目中。你的资金也很有可能会流入你的竞争对手使用的开源项目中。
因此,对于大型的成熟项目(例如Linux,Node.js和jQuery),我认为基金会是一种出色的解决方案,但它对于没有那么成熟的开源项目就起不到多大作用了。不过好消息是,针对这些较小的项目,有另一种模型近来引起了很多关注:订阅。
解决方案2:订阅
长期以来,“订阅”一直是开源项目作者用来筹集资金来支持自己工作的一种流行方式。
在2000年代初期,用PayPal这样的服务来进行一次性捐赠以及重复付款很流行。最近,Patreon推广了一种为开源项目提供资金的订阅模型,并且现在许多不同的订阅平台都在争相提供类似的订阅服务。
例如,2016年启动的Open Collective平台提供了一种围绕公共捐赠展开的融资模式。
如今,非常多的项目都使用了Open Collective,包括Bootstrap和core-js。因为Open Collective上的捐赠是公开的,所以能够告诉你某些项目的实际收入是多少。例如,以下是Open Collective上给Bootstrap捐赠最多的一些组织和个人。
这种模式最让我喜欢的地方在于,它能激励组织对项目进行捐赠——激励就是捐最多的组织会出现在顶级捐赠者名单上。比如说,我本来并不知道Segment是个什么东西,但是在看到他们是Bootstrap的第二大捐赠者之后,我就去查了一下Segment是提供什么服务的。
然而Open Collective并不是这个领域内的唯一玩家。去年GitHub就首次推出了GitHub Sponsors——GitHub内置的开源赞助项目。GitHub在这方面具有相当大的天然竞争优势,因为GitHub本身在过去的十数年中一直是托管开源项目的经典选择。
不过,值得称赞的是,GitHub确实采取了措施来让自己的赞助程序能够与竞争者的并列。比如,现在GitHub上的任何项目都可以创建一个.github / FUNDING.yml文件,你可以在该文件中列出这个仓库所能给出的所有赞助方式,不论这种方式是不是GitHub Sponsors。
如果你试一下,就会发现GitHub会在你的仓库上显示一个“赞助商”按钮,列出了你的用户可以选择的所有赞助方式。例如,core-js 的GitHub库中的过程是这样的:
最后一项服务在上面这张截屏里,也就是Tidelift,该服务具有非常独特的功能。Tidelift是每月约1,500美元的订阅产品,提供他们称之为“托管开源”的服务。在Tidelift的网站中他们将这种服务分为三个部分:
工具。我们提供工具来跟踪你使用的所有依赖项(denpendencies),标记issues,以及执行策略
管理。我们代表你来管理核心的,关键的package,还包括调研并解决issues,这样你就不用亲力亲为了
维护者。为了维护诸多重要的项目,我们会招募维护者,并付钱给他们,这样来从根本上积极预防以及解决问题
我对这种方法怀疑态度,一是因为它感觉上像是一种间接的支持开源维护者的方式,二是因为我认为公司没有足够的动机去订阅。尽管如此,看到有公司在尝试用创新的方法来创建一个不同的开源资金模型,我还是感到很欣慰的。还有一点就是,Tidelift筹集到了4000万美元巨款的资金,所以说确实还是有投资者认为Tidelift的模型具有一些真实潜力的。
总体而言,也许对订阅服务的未来感到乐观的最大依据就是当前竞争对手的数量。更多的竞争者意味着更多的创意,如果背后的经济学原理能正常发挥作用的话,最好的那些创意将会带来越来越多的项目。而随着GitHub参与其中,以及在仓库上提供“赞助者”按钮,有助于确保这些赞助服务一直都保持可见的状态。
我对订阅服务持悲观态度的原因是它们严重依赖于善举。想说服公司捐款并不容易,而即使这些订阅服务提供了一定的激励措施,例如出现在顶级捐助者名单中,我仍然认为,他们需要向公司提供更多东西来跟公司换取现金。
在结束我们对开源资金解决方案的讨论之前,我想就一种你可能想不到的终极选项谈谈。
解决方案3:花钱购买软件
为了写本文,我在做调研时了解了很多有关如何解决开源的财务问题的观点,但其中没有一个包含最简单的经济解决方案:直接让公司为他们使用的软件付费。
我在免费软件和付费软件领域都有很多经验,因为我的职业生涯两种都涉及过,而随着时间的流逝我的观点已经逐渐改变,从坚定地信仰开源,到面对什么时候该为软件付费的问题时更加务实——很大程度上是因为我亲身经历过开源项目的资金困难问题。
从前我参与免费开源的jQuery UI项目有两年之久,并且在看到我们的组件帮助世界各地的Web开发人员们搭建出了更好的应用程序时会引以为豪。但是同时,我还看到,当维护者们失去兴趣,以及赞助商的钱不再够支付账单时,一个项目就会很快消亡。今天,jQuery UI理论上是Linux 基金会的一部分,但该项目的最近一次发布还是在2016年。
在这之后,我为免费且开源的NativeScript项目工作了五年,而且我们的框架已帮助众多的JavaScript开发人员搭建出了iOS及Android应用程序。但是在维护NativeScript时,我明白了,当不能直接赚钱时,要为框架筹集资金是多么困难,尤其是你的框架还要与Facebook的React Native和Google的Flutter之类的框架竞争,而这些公司似乎有无尽的预算,并且能接受收入为零。
与我在jQuery UI和NativeScript所做的工作形成鲜明对比的是,在过去的几个月中,我换到了KendoReact团队工作,在这个团队中我们向React开发人员出售高级UI组件。在jQuery UI和NativeScript的时候,我很难解释项目的财务状况,而KendoReact团队的情况就非常简单了:开发人员付钱给我们,而作为回报,我们向他们提供一套很棒的UI组件。
kendo-react UI组件的示例程序:https://telerik.github.io/kendo-react-finance-portfolio/#/stocks
付费软件有诸多好处。比起在GitHub上随机地找项目,付费能给你提供更多保障——例如保障更新,保障更一致的API,以及保障你在不可避免地遇到问题时可以联系某个公司。
但这并不意味着付费软件是完美的。付费会给社区的建设增加难度,因为你的付费用户永远不可能会像免费用户那么多。而且收款还要求你拥有一些公司的基础设施,这对于小型项目来说可能过于繁复。
由于以上这些原因,我不建议所有的,或者大多数的软件都采取收费措施。开源软件为世界带来了很多好处,并且开源应该继续成为我们开发大多数软件的方式。但是我确实认为付费软件会占有一席之地,而不应被开发人员视为原则错误然后马上拒绝。
在基金会和捐赠这两个途径以外,对软件收费应被视为资助软件项目的另一可行方法。
总结
在当今的软件世界中,开源项目所能提供的价值,与项目能获得的报酬之间存在巨大的脱节。
在这种脱节的刺激下,许多服务应运而生,试图使开源的经济层面更加合理化。基金会可以帮助确保大型开源项目能够继续运行,订阅服务可以帮助规模较小的开源项目维护者能够付得起账单。
我所希望的是,我们可以鼓励公司更多地为自己使用的软件付费。这些付费可以以基金会会员,订阅开源项目等形式来进行,也可以直接通过为软件付款来实现。理想情况下,这一领域的持续创新将有助于简化付款流程,并促进更多公司对使他们受益匪浅的行业进行反哺。如果企业们愿意如此的话,这样我们就能更简单地向朋友和家人们解释开源是怎么回事了。
原文链接:
https://www.telerik.com/blogs/can-we-make-open-source-more-sustainable
作者简介:TJ VanToll,前端开发者,作家,有十年以上的web开发经验,曾在jQuery以及NativeScript团队工作数年。
本文为CSDN翻译文章,转载请注明出处。