译者 | 李睿
审校 | 孙淑娟
开源软件在编写代码和生产软件方面具有的优点是毋庸置疑的。许多处于现代计算核心的软件包(从Linux操作系统到MySQL)都是使用开放共享和协作开发的模式创建的。40年来,在开放文化的熏陶下,开源代码解决了关于开源思想是否有效的问题。
尽管开源软件有很大的好处,但并非没有缺点。如今开源软件已经成为主流,人们需要了解开源文化一些缺点,与其说是文化,不如说是现实。以下是开发人员在为开源项目做出贡献时需要认真思考的7个原因。
1.开源不适用于云计算
当前的许多开源许可证都是在云计算技术出现之前获得的,当时用户通过下载软件并在桌面设备上运行软件来访问。自此以后,云计算供应商已经找到了免费利用开源软件的方法,同时保持他们的代码更改的专有性。一家大型云计算供应商开源业务主管表示,他们通常是分发软件,因此不需要共享源代码。
如今,有许多云计算供应商创建开源项目的特殊版本并在云中转售的例子。最明显的分歧之一是AWS和Elasticsearch创建者之间的分歧。当双方无法达成协议时,最终不得不分道扬镳,因此现在有两个有效版本的Elasticsearch代码库。
一些开源倡导者正在通过制定更严格的许可证或修正案(例如公共条款)来抵制云共享。人们可能会看到未来的改进,但这些改进无助于原始开源许可证下的遗留系统。
2.开源存在多样性问题
“社区”这个术语在开源圈子里被广泛应用,但这并不意味着开源文化是理想之境。开源开发人员可能是一个激进的群体:粗鲁、分心、固执己见,甚至是刻薄和卑鄙。众所周知,开源软件存在多样性问题,某些知名人士被指控具有种族主义和性别歧视倾向。当个人以相对匿名的方式为开源项目做出贡献,仅通过电子邮件或公告栏进行交流时,结构不平等可能不那么明显,但这种匿有时名会产生脱节的感觉,这会使协作过程不如想象中的那样令人愉快,也不那么包容。
3.社区的建立和维护需要时间
许多企业将其产品的开源版本作为“社区版本”发布。这是一个很好的营销工具,也是一个收集用户意见的好方法,有时还可以为改进产品编写代码。然而,围绕这个项目建立一个真正的社区需要时间和资源。如果用户和潜在贡献者在在线社区公告栏上提出问题,他们希望获得答案。许多贡献都是本着开源的精神提供的,但构建和培育社区仍然需要一些时间。当它运行良好时,其结果可能是一个快速发展的开发团队,将构建伟大的代码,但在这个过程中通常有大量的工作要做。这种权衡的一个结果是,更大的企业项目往往会主导该领域。他们可以通过小企业无法管理的有偿角色为社区模式提供资金。
4.开源导师出奇地少见
许多开发人员通常很乐意与任何人分享他们的代码,但这并不意味着他们愿意帮助别人学习。允许某人访问Git存储库只需要几分钟,但是支持他们作为开发人员和贡献者的成长是一项重要的承诺。有些项目甚至在他们的贡献者协议中包含了一项条款,即贡献者不应该期望能够加入或得到支持,甚至他们的问题也不会得到回答。从本质上来说,为开源项目做贡献就像是把水灌入池塘的深处:有大量的代码行和需要解决的问题。你可能会发现很少有评论来解释发生了什么。
5.即使是理想主义者也需要获得报酬
大多数开源软件开发人员都是理想主义者:他们不会受名利的驱使,但需要维持生计。现实世界有许多限制,与开源软件的免费共享精神并不兼容。对于数字世界来说,稀缺性可能是一个陌生的概念,但对于开发人员来说,这是一个非常现实的问题。
开源软件对于开发小型堆栈和项目非常有效,因为在这些项目中,很少有人期望获得报酬,但对于全职的开发人员支持的大型代码库来说,可能不太适合。如果有太多用户选择免费版本,整个项目可能会崩溃。
6.没有什么是真正免费的
在开源社区中,人们可能会看到“TANSTAAFL”这个缩写术语,意思是“世上没有免费的午餐”。 当用户下载并使用开源软件之后,他们会开始发现它的局限性。有时候,代码只需要一些小改进。有时,开源软件根本没有适合的功能。开源软件在免费提供时即使功能不全也很少有用户抱怨,但完整地开发开源软件对开发者来说是一个巨大的负担。即使免费开源软件实现了99%的目标,最后的1%的开发工作对于开发人员来说也可能是一个非常艰难的过程。
7.有些项目不应该是开源的
一位数据库开发人员表示,从未真正考虑过开发开源项目,他的客户是几家拥有大量数据集的大公司。他们有充足的预算,愿意付费支持他完成开发工作。如果客户想要获得源代码,他非常愿意提供。但他不想经历拆分开源项目正式版本的麻烦。
开源版本适合于开发人员广泛使用的代码,他们可以帮助共同开发代码。然而,在某些情况下,获得报酬进行开发才是一种更简单、更可持续的开发软件的工作方式。
原文标题:7 downsides of open source culture,作者:Peter Wayner