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