现在大大小小的公司都在搞开源,在被问到为什么开源某个项目时,负责人要么说是贡献社区与用户,要么以希望借广大开发者之力完善项目为挡箭牌,虽然这些想法都可以是真实也经得起考验的,但是在这背后更加真实的“目的”,公司都不愿意提及,比如营销品牌需要,比如先开源后“违规”收费,比如 KPI 担当,比如推动相应收费版本的销售……
虽然开源有个人/公益组织的开源、以开源项目作为基础的商业化公司的开源,以及商业公司反过来去涉及开源领域的开源这些区别,但是除去人个与公益组织的开源初衷不表,剩下涉及到公司的开源,他们关于开源的真实想法确实往往不会明示,这其实也可以理解,开源本是一种黑客式的高尚行为,过多地掩盖这种特性,会带来反感,于公司不利。
然而事实是,上述“背后的真实目的”其实都经常被达成。
与这些公司的表里不一不同,最近在接受 Computer Business Review 采访时,MongoDB 公司 CEO Dev Ittycheria 明确表示了 MongoDB 的开源用意:“我们的开源并不是为了获得帮助,使产品更好,而是作为免费增值策略,以推动采用。”
we didn’t open source it to get help from the community, to make the product better. We open sourced as a freemium strategy; to drive adoption.
在被问到 MongoDB 修改开源 License 相关问题时,Dev 说出了这段话。MongoDB 去年 10 月份宣布将开源 License 从 GNU AGPLv3 切换到 Server Side Public License(SSPL),以此回应 AWS 等云厂商将 MongoDB 以服务的形式提供给用户而没有回馈社区的行为。SSPL 明确要求托管 MongoDB 实例的云厂商要么获取商业许可证要么向社区开放其服务源码。
但是开源社区对此似乎有不少反对声音,许多人认为 SSPL 是具有针对性的,对特定类别的用户具有严重歧视性,这违反了开源的真谛,所以 Fedora 认定 SSPL 不是一个自由软件许可,红帽和 Debian 也宣布从发行版中删除 MongoDB。
对于这种情况,MongoDB CEO Dev 认为不必在意,他说:“从那以后,我们的业务增长得更快。这没有任何影响,它只影响那些可能在考虑使用我们的免费版本,并将其作为托管服务提供给第三方的人。”
而为什么 MongoDB 能够如此沉着呢?Dev 说 MongoDB 与其它开源公司不一样,“与其它开源公司不同,我们可以在一定程度上控制 License 是因为大多数其它开源公司都建立在已有技术上”,他认为其它开源公司只是将其非真正业务核心的东西开源出来,继而进入公共领域,他们的开源本质是想让社区进行众包研发,使项目完善得更好。
“根据定义,开源 License 必须非常宽松,因为它希望鼓励人们开发并使开源项目变得更好”,Dev 解释:“然而 MongoDB 不是这样,MongoDB 由 MongoDB 自己构建,没有其它技术经验支持。”他补充:“一方面,这说明了 MongoDB 团队的技术敏锐性;另一方面,我们的开源并不是为了获得帮助,使产品更好,而是作为免费增值策略,以推动采用。”
Dev 这话的意思似乎是直接否认了开源的分布式协作与同行代码审核这基本的特性,否认了参与 MongoDB 项目开发的开发者的贡献,也难怪有开发者会直接回应表示受到侮辱:作为一个为 MongoDB 源码做过一点点贡献的人,听到这样的说法简直觉得侮辱。
而另一方面,实际上,MongoDB 之所以受欢迎还有部分原因是其支持广泛的驱动,虽然 MongoDB 公司实现了与 MongoDB 一起使用的主要驱动,但其仍然依赖了第三方开发者以解决较少使用的驱动问题。
讽刺的是,虽然 MongoDB CEO 都这么明确地说了,但是 MongoDB 还将继续带着“开源”的光环走下去。
然而,回过头来联系一下文章开头提到的各公司的“遮遮掩掩”,是否会觉得 MongoDB 的这种表述多了几分真实呢?你怎么看?
Ittycheria pointed to cloud service providers such as Alibaba, Tencent, and Yandex. Those companies, he claims, are testing the boundaries of the AGPL by benefiting from the work of others while failing to share their code.
"such as Alibaba, Tencent, and Yandex"
看看点了哪些名
开源真的不等于免费,free这个单词在英语里有免费的意思,也有自由的意思,但是大多数人都只取对自己有利的那个意思,把另一个意思有意识地忽略了。
当你为了一个问题到处求助,一直没人回应,最后还是自己花了九牛二虎之力把它解决了的时候;当有人伸手问你要最终的可执行文件和详细说明文档,连编译都懒得编译的时候;当你听到别人说你这东西在实际生产环境中并不适用的时候(其实早就有厂商已经稳定运行近一年了);当你发现有厂商堂而皇之集成了你的软件,但是把你的开源协议文件(其实对商用还挺友好,只要在项目中携带协议文件,其他什么都不用做)剔除的时候;当有人自己的环境有问题,无端指责你测试不足的时候,你还会心平气和的开源吗?
所以搞一套商用的,搞一套开源且免费的,才有可能保证商用版本的收入能反哺开源版本,写开源项目的也是人,不要用圣人的标准要求,不然世界上个个都是坏人了。