开源的热情激发了开发者的创造力和学习社区的活力,但它不是“香格里拉”式般的存在。在加入开源项目之前,需要考虑以下七个陷阱。
作者 | Peter Wayner
译者 | 伊桑
策划 | 言征
毫无疑问,开源哲学在编写代码和生产软件方面的优点。现代计算核心的许多软件包,从Linux操作系统到MySQL,都是使用开放共享和协作开发的模式创建的。四十年来,在开放哲学的滋养下,伟大的代码解决了任何关于开源思想是否有效的问题。
尽管开源有其巨大之处,但它也并非没有缺点。现在开源已经成为主流,让我们考虑一下它的一些缺点,与其说是哲学,不如说是日常现实。以下是开发人员在为开源项目做出贡献时可能会再三考虑的七个原因。
1、开源不适用于云
今天的许多开源许可证都产生于在云之前,当时用户通过下载并在桌面上运行软件来访问软件。自那以后,云公司已经找到了在保持其代码更改所有权的同时,释放开源风气的方法。一家大型云公司的一位开源经理颇为腼腆地告诉笔者,他们分发软件,因此不需要共享源代码。
正如Drupal(PHP语言编写的开源内容管理框架)公司CEO,在一次接受采访时所说,“云技术的快速应用实际上可能会阻碍开源活动”、“它将开源开发者的大量收入转向了云供应商”。
这里有几十个云供应商创建开源项目的特殊版本以在云中转售的例子。亚马逊Web服务和Elasticsearch的创建者之间的分歧就相当明显。当双方无法达成协议时,最后闹掰,彼此单干了,现在有两个有效版本的Elasticsearch代码库。
一些开源拥护者正在通过制定更严格的许可证或修正案(如公共条款)来抵制云合作选项。我们可能会看到未来的改进,但这些改进无助于原始开源许可证下的遗留系统。
“公共条款”许可条件v1.0如下:
本软件由许可方根据以下定义的许可证提供给您,但须满足以下条件。在不限制许可证中的其他条件的情况下,授予许可证下的权利不包括,许可证也不授予您销售软件的权利。就上述内容而言,“出售”是指行使许可证授予您的任何或所有权利,以收取费用或其他代价(包括但不限于托管或咨询 / 支持软件相关服务的费用)向第三方提供其价值完全或实质上来自软件功能的产品或服务。许可证要求的任何许可证通知或归属也必须包括本通用条款许可条件通知。
2、开源存在多样性问题
社区这个词在开源圈子里被广泛使用,但这并不意味着开源文化就是某种香格里拉。首先,开源开发者可能是一个激进的群体:粗鲁、分心、固执己见,甚至是彻头彻尾的卑鄙。众所周知,开源存在着多样性问题,一些知名人士,诸如自由软件运动的精神领袖斯托尔曼就被指控种族主义和性别歧视。
其次,当个人以相对匿名的方式参与开源项目,仅通过电子邮件或公告栏进行交流时,结构性不平等可能不太明显。但有时这种匿名会产生脱节的感觉,这会使协作过程不如想象中的那样令人愉快,也不那么包容。
3、社区建设和维护需要时间
许多企业公司将其产品的开源版本作为“社区版”发布。这是一个很棒的营销工具,也是收集想法的好方法,有时也是改进产品的代码。然而,围绕该项目建立一个真正的社区需要时间和资源。如果用户和潜在贡献者向在线社区公告栏发布问题,他们希望得到答案。是的,许多贡献都是本着开源的精神自由做出的,但培育社区仍然需要时间。当它运行良好时,结果可能是一个正在构建伟大代码的新兴团队,但在这一过程中通常有大量工作要做。这种权衡的一个结果是,较大的企业项目往往会主导该领域。他们可以通过小型公司无法管理的有偿角色为社区模式提供资金。
4、开源Mentors出奇的少
类似地,许多开发人员很乐意与任何人分享他们的代码,但这并不意味着他们想帮助其他人真正学习。让某人访问Git存储库需要几分钟的时间,但支持他们作为开发人员和共同贡献者的成长是一项重要的承诺。有些项目甚至在其出资人协议中包含了一项条款,即出资人不应期望获得入职或支持,甚至不应期望得到回答。
从本质上讲,为一个开源项目做出贡献就像是一个“大灌篮”:这里有大量的代码行和一个问题需要您解决。你会发现很少有评论来解释发生了什么。谢谢,祝你好运!
5、理想派也需要薪水
大多数开源开发者都是理想主义者,他们不受名声和财富的驱使,但他们仍然需要在屋顶下吃饭和睡觉。现实世界有许多物理限制,与开源的自由共享精神不兼容。对于数字世界来说,“匮乏”可能是一个陌生的字眼,但对于现实生命形式来说,这是一个非常真实的物质问题。
对于小型堆栈和激情项目而言,开源非常有效,因为在这些项目中,没有人期望得到报酬,但对于全职程序员支持的大型代码库来说,它可能不太适合。如果有太多用户选择免费版本,整个项目可能会崩溃。
6、没有什么是真正免费的
在开源环境中待久了,你可能会遇到缩写词TANSTAAFL(There Ain’t No Such Thing As a Free Lunch.),即“天下没有免费午餐”。理查德·史泰尔曼喜欢说,他想创建一个“像演讲一样自由,但不像啤酒那样免费”的软件
在用户下载并使用开源软件后,他们将开始发现其局限性。有时,代码只需要一些小的改进。有时,它根本没有提供正确的功能。没有人想抱怨杯子只有半满,尤其是当价格为零时。但是,在最后期限内填满剩余的半杯,可能会给开发商带来巨大的负担。即使当自由代码让你99%的时间达到目标时,最后的1%也可能是一个非常艰难的过程。
7、有些项目不应该是开源的
有位数据库开发人员告诉笔者,他从未真正考虑过开源项目。他的客户是一些拥有大量数据集的大公司。他们有预算,愿意付钱给他做这项工作。如果客户想阅读源代码,他非常愿意让他们阅读。但他不想经历拆分项目正式、开放版本的麻烦。
开放源代码版本适用于广泛的开发人员使用的代码,他们可以帮助共同开发代码。但在某些情况下,金钱交换,是组织软件研发工作的一种更简单、最终更可持续的方式。