开源诱饵和转换
我读了这篇文章,本来想发表评论,但觉得有必要写一篇回应文章。首先,如果你不认识我,我写过很多开源代码,甚至整个平台,甚至更多。我认为那篇文章以及我在网上看到的很多空洞言论表达的普遍观点过于简单,而且很危险。
我们需要得到报酬
谁来支付你的工资?
人们对开源商业模式的回答五花八门。例如“咨询”或含糊其辞的“支持”。我总是好奇,这些人是否尝试过推销咨询服务?或者“支持”。
人们不买这些东西,尤其是在经济低迷时期。销售人员通常会暗示你可能会违反许可证,如果你付费获得商业许可证,事情会容易得多。我甚至会免费提供“支持”。是的,如果你把所有时间都花在打电话上,你就能得到一些赞助商。这是一个永无止境的销售过程。追逐潜在客户,打电话。经营这种生意需要大量的开销。
一些开发者使用有问题的开源许可证,然后利用这些许可证来销售产品。但随后他们却被指责“不够开源”。这样做根本赢不了。
在我从事开源软件工作期间,Sun Microsystems 支付了我的薪水。他们破产了,估值从 2000 多亿美元跌落,最终以 70 亿美元左右的价格出售。当然,这并不是因为他们是开源的。这只是个轶事,而且也于事无补。真正的人之所以失业,是因为开源软件不赚钱。即使能赚钱,也赚得很少。人们常说,开源软件最终只会从更大的蛋糕中分到更小的一块。这话没错,但只适用于大公司,而你只有两个选择:要么成为大公司,要么看着大公司从你的辛勤劳动中榨取利润。
别误会,我并不反对人们利用我的工作成果牟利,甚至反对大公司。我做开源软件只是为了好玩,也乐见人们凭借我的工作成果获得成功。但我理解许多开发者的沮丧,而且我看到人们一概而论的“开源倡导”是有问题的。
诱饵和转换
糟糕的是企业的玩世不恭。以谷歌为例。他们在 Android 还没有用户的时候就开源了它。公司和开发者都在其基础上构建系统。围绕它形成了拥护,因为“它是开源的”。后来,他们发布了闭源的 Google Play 服务,后来又增加了对 Firebase 的 SaaS 依赖,以实现一些基本功能(目前这项功能是免费的),现在我们却面临着伪装成开源的、对闭源厂商的深度依赖。
如果我们想为 Android 开发应用,并非必须使用Google Play 服务。没错。但这会让开发 Android 应用变得更加困难,如果你不使用它来做某些事情(例如推送、购买等),你就会被最大的 Android 应用市场拒之门外。绝大多数开发者“只是使用它”。这意味着,任何想要将 Google Play 从 Android 设备上移除,转而选择 100% 开源解决方案的人,都会发现他们的应用软件选择非常少。
以 Elastic Search 为例。他们是开源的,并且正在蓬勃发展。但 AWS 却在进行分叉,这对他们的盈利并没有真正的帮助。于是 Elastic 修改了许可证来屏蔽 AWS。AWS 也开始了自己的分叉。有些人在这件事中诋毁 Elastic,但这些人可能从未为了业务的生存而与亚马逊抗争过。在这种情况下,双方都在商业斗争中将开源武器化。
Java 的情况略有不同。Java 并非开源,后来才开源。它仍然保留了语言的知识产权。因此,我理解甲骨文对 Java 项目的严格控制,并且接受这一点。Java 有一个稳定的掌控者,这很好,也促成了 Java 的成功。谷歌诉讼的问题在于,甲骨文试图将其知识产权扩展到 API。这是一个错误。
GPL 是最好的许可证
大约十年前,一家名为 RoboVM 的初创公司发布了一款开源编译器,可以将 Java 代码转换为原生 iOS 应用。这非常酷,我和 JavaOne 的创始人聊了很多。当时,我们正在考虑构建自己的虚拟机,或者选择像 RoboVM 这样的解决方案。最终我们选择了前者,构建了自己的虚拟机,它更简单,也更符合我们的需求(而且它还是开源的)。
这个决定是基于技术优势的,我认为它最终得到了回报,但我仍然非常尊重 RoboVM 团队。我担心的是苹果。他们经常破坏一些东西……构建一个低级虚拟机就像一场危险的猫捉老鼠游戏,苹果可能会突然改变一些东西,然后我们就陷入困境。第二个担忧是盈利问题。我知道 RoboVM 团队必须以某种方式支付员工和创始人的工资。如何利用开源编译器赚钱?请注意,这已经是十年前的事了,当时还没有像Zig这样的先例可以作为模板。
后来,我对苹果政策的担忧终于成真了,苹果在针对某些平台时增加了对位码的支持要求。RoboVM 投入了大量时间开发位码支持,最终决定关闭其源代码。他们明白,如果没有位码支持,就无法继续开发。请不要以此评判他们的决定。我完全理解,正如我所说,开源软件的盈利非常困难。
GPL 强制 RoboVM 在迁移到 bitcode 之前发布最终版本的代码,从而保护了社区。这使得 RoboVM 在后来的几年里可以进行一些代码分叉,但至今仍无人维护。该公司被 Xamarin 收购,并随着后者被微软收购而迅速停业。如果没有 GPL,这些代码可能无法访问。GPL 还强制第三方发布他们的代码。
在这方面,我非常相信 GPL,而不是 MIT、BSD、Apache 等更宽松的许可证。我认为,作为一个社区,我们应该选择一种能够维护社区权利而非公司权利的许可证。这种许可证也为项目创建者提供了一个良好的盈利选择。只需将其重新授权为专有许可证并收取费用即可。不幸的是,GPL 对许多开发者来说往往行不通,因为他们错误地认为这对他们不利。事实恰恰相反。从长远来看,GPL 是维护社区权利的最佳方式之一。
情况有改变吗?
我之前提到过 Zig。还有很多其他成功的基金会,比如 SQLite、Mozilla 等等。要达到这一点通常很难,而且并不一定适用于所有开源项目。例如,几乎每个人都在使用 cURL,但我认为我们不会再看到 cURL 基金会了。另外要注意的是,所有这些项目都位于美国的科技中心。根据我的经验,在其他地区获得赞助商要困难得多。
这是否意味着所有开源都应该是一种爱好或一个包罗万象的大型项目?
很遗憾,我没有好的答案。但我有一个问题:过度热衷的开源倡导者。你们帮不上忙!
开源正在成为一场仅限企业参与的游戏。它被科技公司之间当作一种武器。在零售业,这被称为“亏本销售”。
在零售业,大型超市会亏本销售部分商品,并宣传其惊人的低价。这吸引了顾客,顾客会顺便购买其他商品,最终超市会盈利。但这样做的目的是为了压制竞争对手。竞争看起来很昂贵(因为他们无法亏本销售)。他们倒闭了,大型零售公司又提高了价格。起初,我们似乎从竞争中获得了巨大的利益,但最终我们却亏损了。正因如此,一些监管机构禁止此类行为,因为它们最终会破坏市场。
大型科技公司也以类似的、玩世不恭的方式利用开源。他们雇佣大批开发者关系专家,组建“社区”,营造出一种草根热情的假象。有时他们不需要将市场货币化,只要能将竞争对手挡在门外就足够了。
TL;DR
我热爱开源,认为它非常重要。正因如此,我们不应该让企业将其武器化。我们需要生态系统的多样性,我们需要支持规模较小但至关重要的项目。向开源项目提供“资助”或“咨询”的想法是不可持续的。
大型公司利用开源作为武器相互竞争,短期内我们似乎获益匪浅。但随着他们获胜,企业思维模式占据上风,他们加倍控制。我建议的解决方案是:
- 使用 GPL——它是为了保护社区权益。难怪公司不喜欢它。
- 不要成为开源软件的清教徒——小公司需要赚钱。他们会提供 SaaS、闭源扩展等等。这没问题。
- 大公司并非仁慈——我看到 FAANG(MAANG)公司对开源软件项目的倡导是有问题的。他们并不支持开源软件。他们只是使用并利用它。别误会,我很感激他们的代码,他们发布这些代码也很棒。但我们需要谨慎,他们有受托责任要求,这可能与按照开源软件标准做“正确的事情”相冲突。
我不知道下一步会不会选择开源软件 (OSS)。我也不知道会不会选择 GPL,因为正如我所说,人们对它有意见。但我知道一点:如果你是开源倡导者,就别再说那些花言巧语了。这于事无补。
鏂囩珷鏉ユ簮锛�https://dev.to/codenameone/open-source-bait-and-switch-1g34