现在人们普遍认为,开源是生产软件的更优方式。几乎每个人都在做开源。特别是,用户能够查看内部机制并进行更改的能力,使得工具能够更好地适应他们的工作流程。这降低了被供应商锁定在不平衡关系中的成本和风险。这有助于持续改进的良性循环,模糊了消费者和生产者之间的界限。它使每个人都能够重新组合和发明新事物。它增加了共同的人类知识。
然而
然而,许多开源软件是在运行闭源代码的专有服务上(以及在它们的帮助下)开发的。无数的开源项目是在 GitHub 上开发的,或者借助 JIRA 进行错误跟踪,Slack 进行通信,Google Docs 进行文档编写和共享,Trello 进行状态看板。这听起来有点自相矛盾和虚伪——有点太“只许州官放火,不许百姓点灯”了。这是为什么呢?如果我们都同意开源有如此多的实际好处,为什么我们如此愿意在使用它来生产开源软件的工具上放弃这些好处呢?
但是它是免费的!
通常的论点是这样的:这些平台可能是专有的,但它们提供了强大的功能,并且它们是免费提供给我的开源项目的。我为什么要费力设置、维护和付费基础设施来运行功能较少的解决方案呢?或者我为什么要付费让别人为我托管它呢?诀窍在于,正如俗话所说,当产品是免费的,你就是产品。在这种情况下,你的开源社区就是产品。
在最坏的情况下,你的社区成员的个人数据和活动模式将被出售给第三方。在最好的情况下,你的开源社区被强行征募到一支军队中,这支军队进一步增强了网络效应,使得下一个开源项目更难不使用该专有服务。
在所有情况下,你作为一个项目,决定不承担直接成本,而是要求你的每一位贡献者间接支付它。你强迫你所有的贡献者接受专有服务不断变化的条款,以便参与你的“开放”社区。
认识到权衡
重要的是要认识到这种情况的本质:一种权衡。一方面是闪亮的功能和便利性。另一方面是通过特定功能、数据格式、专有协议或仅仅是旧的网络效应和习惯来锁定你的社区。
每种情况都不同。在某些情况下,专有服务和开放平台之间的差距会非常大,以至于承担成本是有意义的。Google Docs 在它所做的事情上做得很好,当我协作处理比 Etherpads 或 Ethercalcs 更复杂的事情时,我发现自己会使用它。在光谱的另一端,当你可以使用 Framadate 时,真的没有理由使用 Doodle。同样地,Wekan 与 Trello 非常接近,你真的应该考虑它。对于 Slack 与 Mattermost 与 IRC 相比,权衡更加微妙。
作为旁注,当专有服务建立在标准协议之上时,锁定的成本会大大降低。例如,Gmail 不是什么大问题,因为它很容易使用 IMAP 来集成它(并可能在未来摆脱它)。如果 Slack 只是一个使用 IRC 协议和服务器的出色自以为是的客户端,那么它也不会成为什么大问题。
部分解决方案
对于这种权衡,任何简单的答案都将是教条式的。如果你使用专有服务,你并不是不纯洁,如果你为你的项目基础设施使用开源软件,你也不是在戴着有色眼镜。每个社区都会根据他们的根基和历史,以不同的方式回答这种权衡。
重要的是要承认没有什么东西是免费的。当做出选择时,我们都需要意识到我们获得了什么,又失去了什么。总之,我认为我们都可以同意,在所有其他条件相同的情况下,当存在具有专有产品所有功能的开源解决方案时,我们都更喜欢使用它。推论是,当这些开源解决方案变得更好时,我们都会受益。
因此,为了成为解决方案的一部分,请考虑帮助这些开源项目构建像专有替代方案一样好的东西,特别是当它们在功能方面非常接近时。这将使解决这种权衡变得容易得多。
本文最初发布在 ttx:reloaded 上,并经许可根据 CC BY-SA 4.0 许可重新发布。
4 条评论