从Web服务器到信息站,再到挖掘Facebook信息的大数据算法,几乎所有与您交互的计算机系统都至少有一部分在开源软件上运行。在科技行业,开源软件催生了一大批初创公司,促成了世界历史上最大的软件收购。
免费的软件似乎是一件礼物,它使我们所熟知的世界成为可能,并且在商业世界里引起了轰动,最初的企业不习惯这种慷慨大方的状况。这些公司并不愿意使用免费软件,免费听起来过于激进,还似乎有某种政治化的意味,所以人们给它重命名为“开源”。
所以,开源软件便渗透到了整个世界。
但是,最近开源世界出现了一些问题。在过去的一年中,RedisLabs、MongoDB和Confluent等公司都更改了软件许可,从开放源代码许可改为更严格的条款,限制了软件的操作范围,从而使其不再是开源软件。
RedisLabs、MongoDB和其他公司认为,这是一种更现代的技术趋势:托管软件服务,也称为“云”。
为了应对Elastic(ElasticSearch的公司)的许可变更,AWS在今年春季发布了自家版本的开源Elasticsearch:OpenDistroforElasticsearch。除了就AWS新版本的命名引起新的商标争议外,Elastic的回应与MongoDB和Redis的回应也大相径庭,没有发表任何抗议。
云计算的爆发
MongoDB围绕着与该公司同名的开源NoSQL数据库创建。MongoDB对于存储非结构化数据(例如图像)非常有用,它可以处理更多传统数据类型。数据存储在类似JSON的文档中,而不是关系数据库的列和行中。由于没有结构化表,因此没有用于处理数据的“结构化查询语言”,因此被称作“NoSQL”。
MongoDB并不是唯一的NoSQL数据库,但是它是使用最广泛的数据库之一。DBEngines的数据显示,MongoDB是第五大受欢迎的数据库,Google、CodeAcademy、Foursquare等都在使用MongoDB。
MongoDB也在牵头创建一种新型的开源许可证,其CTOEliotHorowitz认为,随着云计算的到来,这对于保护开源软件是必要的。
Horowitz等人认为,云计算要求开源社区重新考虑并更新开源许可证,以“应对新环境中的新挑战”。实际上,所谓的挑战其实是AWS、谷歌云和微软,它们都能够采用开源软件,并将其包装为服务并进行转售。AWS或Azure打包MongoDB并将其作为SaaS的一部分提供的问题在于,它被用来与MongoDB自己的SaaS产品(MongoDBAtlas)竞争。那么,受到威胁的不是MongoDB的源代码,而是MongoDB自己的SaaS。
为了应对其面临的潜在威胁,MongoDB已从Gnu通用公共许可证(GPL)转移到服务器端公共许可证(SSPL)。SSPL意味着你可以用这个软件做任何你想做的事情,除了用它来构建与MongoDBAtlas竞争的东西。
最初,MongoDB将SSPL提交给开源审计组织(OSI),该组织负责监督和批准新的开源许可证。但是根据OSI邮件列表上进行讨论的结果以及许可证的措辞后,SSPL不太可能会得到OSI的批准。MongoDB在今年早些时候取消了转为SSPL的考虑。SSPL不是开源许可证,并且永远不会是。
要理解原因,就要知道MongoDB并不是第一个遇到这种情况的开源企业。事实上,一部分原因是公司随意使用软件,但对开源社区毫无贡献。
开源许可证各不相同,但自年OSI成立以来,其主要内容如下:您可以使用此代码并对其进行所需的操作,但不能使该代码专有,并且如果在其他代码中使用它,那么该项目也不可以是专有的。这些许可证通过这种方式编写,以防止公司在自己的代码中使用开源代码,却不将工作中的任何成果共享给原始项目。
但是SaaS的概念在二十年前还不存在。如今,在SaaS产品中包装一段代码在现代意义上等同于在应用程序中使用它。
这个说法很新,但它可以解决另一个老问题,而不仅仅是许可。这个问题早在OSI出现之前就存在了:如果免费提供软件,那该如何从软件中赚钱?
一个传统的答案是围绕开源软件出售服务。但是对于Horowitz来说,这明显还不够。他表示,通过支持合同使开源货币化从来都不是一种伟大的商业模式。RedHat可能会反驳这一观点,但是Horowitz认为,更多保护性许可证将带来更多风险投资,并在MongoDB使用的开放模式的基础上催生更多的软件企业。他说:“我们是独一无二的,但我希望我们并不那么独特。”
他可能是对的。保护性更强的许可证可能会吸引更多的风险资本投资,因为他们的投资有更大的回报可能性。但是,如果这些资金真的来了,那它就不会投资于开源,因为这种对软件的限制意味着它不再符合开源的定义。
相反的论点
很多开源厂商对MongoDB的Horowitz的观点提出了反驳。其他人认为,目前的这一套许可证还是没问题的,需要改进的是业务模式。
原开源定义的合著者BrucePerens说,SSPL与OSI的开源定义第九条是不兼容的,“许可证不能限制其他软件”。由于SSPL强制任何与所覆盖的软件聚合(并不是派生)的SaaS软件成为开源软件,因此它无法通过这个测试。Perens把第九条写进了OSD,以禁止这种行为。
MongoDB并不是唯一一个抱怨云计算正在侵蚀其利润的公司。RedisLabs是第一个对云提供商威胁其业务发出警告的公司,而RedisLabs最终可能会有更好的解决方案。RedisLabs最初改变了它的许可证,加入了“通用条款子许可证”(CommonClausesub-license),它禁止任何人出售它所涵盖的任何软件。带有通用条款许可的软件都不是开源的,而Redis实验室承认这一点,它从未将其软件的这些部分描述为开源。
但今年春天,Redis实验室做出了另一项许可变更,对其部分模块采用了自主开发的专有许可。需要说明的是,大多数Redis是由三个子句BSD许可管理的,但有些模块如RedisJSON、RedisSearch、RedisGraph、RedisML和RedisBloom则不是。
RedisLabs表示,虽然用户可以查看和修改代码,或在其应用程序中使用代码,但它限制了用户可以构建的应用程序类型。在Redis实验室的新许可证下,就不能自由地构建任何你想要的东西。比如不能构建数据库产品、缓存引擎、处理引擎、搜索引擎、索引引擎或任何ML或AI派生的服务引擎。换句话说,你不能使用Redis实验室的代码来与Redis实验室竞争。这违反了开源许可的核心原则之一:对衍生软件没有限制。
但对于RedisLabs和MongoDB而言,说您是开源的同时,只有您应该从自己的开源软件中受益是没有道理的。但在商业模式中的专属软件中,这是有一定道理的。
这是Elastic曾走过的路。虽然有些问题最终还未定格,但有部分公司已经设法通过开源和专有代码获得成功。Elastic就是一个例子,并且它在已经面临来自AWS的竞争时,还准备一直坚持下去。
AWS不仅提供多年的Elasticsearch服务(表面上与Elastic自己的产品竞争),而且AWS最近打包了自己的Elasticsearch代码库版本,将其扩展为免费提供Elastic尚未作为开源发布的一些服务。
历史的教训
为什么MongoDB不想开源?毕竟成功的专属软件很少。为什么不继续开源呢?
Horowitz表示,开源会带来更好的系统软件,尤其是在数据库领域,他会继续将安全性和社区性作为保留开源的优势。对软件的更多