毫无疑问,开源软件的概念给企业软件的世界带来了革命,后者花费了几十亿与开源的概念斗争了多年后,才不得不接受了新的未来。但越来越多的人开始担心,开源软件允许任何人干任何事的本质可能会在分布式云计算的时代给开发者带来巨大问题。 上次我们也讨论了这个问题并发现,业界有两家重要的开源软件公司(Redis 和 MongoDB)决定改变它们的部分软件发布时采用的授权。此举表明它们试图让云计算提供商在它们的软件基础上提供服务变得更困难,甚至不可能。 两家公司当然不能撼动整个世界。但随着当前许多云计算公司已经安排好了 2019 年的计划,开源项目和云计算服务之间的交集开始成为许多人担心的问题。 Cloud Foundry Foundation 的执行主管 Abby Kearns 在 2017 GeekWire Cloud Tech Summit 上演讲 Cloud Foundry Foundation 的开源执行主管 Abby Kearns 说:“我认为,开源软件在建立商业机会的过程中扮演的角色已经变了。这种担忧只会越来越多。” 一、改变是为了保护“直白地说,这些年来我们都很傻,让他们白白使用我们开发的东西并赚了很多钱。” Redis Lab 的 CEO Ofer Bengal 并没有拐弯抹角。作为著名的开源内存数据库的开发商,他的公司已经存在了八年之久,这在现代企业软件的飞速变革的世界中算是非常长寿了。 云计算在 2011 年刚刚起步,但直到现在,它仍然是许多无法负担几百万服务器费用的早期创业者在尝试新想法时的首选。绝大多数成熟的公司依然使用传统方式构建自己的基础设施,但越来越多的公司开始意识到,开源软件能让他们用比传统企业软件公司的私有软件更灵活、成本更低的方式构建基础设施。 Ofer Bengal,Redis Lab 的创始人和 CEO Redis 在这一时期变得非常流行,主要的大公司如美国运通、家得宝、梦工厂等都在 Redis 数据库的基础上建立了他们的技术基础设施。Redis Lab 提供的产品 Redis Enterprise 能将该数据库在公有云上作为服务提供,或者为在自有基础设施上运行该数据库的公司提供技术支持。而且他们依然在不断为 Redis 开源项目做出贡献。 AWS 经常声称它的主要目标是客户,但从这个目标中也能看出,为了给客户提供相似的服务,哪些技术和服务开始受到关注。它于 2013 年启动了一项云服务,该服务基于开源的 Redis,由 AWS 管理。 Bengal 说,从那时起,AWS 通过为客户提供 Redis 赚取了“几亿美元”,但并没有像开源社区做出相当数量的贡献帮助构建并维护该项目。很难得知 AWS 究竟赚了多少钱,但显然 AWS 和其他云服务提供商都从开源开发者的劳动成果中获得了好处。 Bengal 说:“Redis 的 99% 的贡献都来自 Redis Labs。”Puppet 的创始人 Luke Kanies 在今年早些时候的一篇报道中说过,开源软件界的传说一直是“项目由社区中的贡献者驱动”,但实际上,绝大多数现代开源项目中的绝大部分代码都是由领工资的开发者贡献的。 而这些人的工资得有人提供。很长一段时间,Redis 就是成功的开源商业模型的典范,在维持最基础的项目的同时,在其上开发自己的软件并提供访问。但随着越来越多的公司开始使用云计算并且将自己现有的应用程序和基础设施转移到 AWS 等云服务提供商上,更现实的做法是与 EC2、S3 等其他 AWS 服务一起,使用 AWS 的 Redis 服务,而不是使用 Redis 通过 AWS 市场提供的 Redis 服务。 Bengal 说:“不仅是我们,几乎任何成功的开源项目都会遇到这个问题。”尽管由于巨大的市场影响力,人们在谈到这些问题时总会提到 AWS,但它绝不是唯一一家将这种开源项目作为服务提供的。 所以在八月,Redis 决定(https://redislabs.com/community/licenses/)将他们在 Redis 的基础上建立的数据库扩展(但不包括 Redis 本身)的授权改成 Commons Clause 授权,这个授权表明其他公司不能将这些扩展作为云服务提供。 “我们保留决定每个软件采用宽容的开源授权或 Commons Clause 授权的自由。”Bengal 说。“基本上,这是个商业决定。” 然后在十月,另一个注明的开源软件数据库做出了类似的决定。MongoDB 宣布(https://www.mongodb.com/press/mongodb-issues-new-server-side-public-license-for-mongodb-community-server),以后会对MongoDB Community Server 软件采取不同的授权,名为SSPL(https://www.mongodb.com/licensing/server-side-public-license),该授权允许云服务商将 MongoDB 作为服务提供,但要求他们开源所有创建该服务时编写的源代码,否则就必须与 MongoDB 达成商业协议。 “每当新的开源项目变得流行后,云服务商就会窃取技术,将自由软件放在他们的平台上,攫取绝大部分软件的利益,但很少回馈社区。”MongoDB 的 CEO Dev Ittycheria 说。MongoDB 目前在纳斯达克上的市值为 43 亿美元。“我们认为,由我们这样的公司来引领并帮助下一代开源公司和开源项目的生存和成长是非常重要的。” 两家数据库公司引导这次变革绝不是偶然。数据库是极其复杂困难的项目,而且是任何大规模的企业级公司最重要的组成部分。 Ittycheria 估计,多年来 MongoDB 在研发上花费了超过 1 亿 5 千万美元,才得以建立并维护 MongoDB 的开源版本。在上一个财政年度, MongoDB 从它的商业软件和支持的服务中获取了 1 亿 5450 万美元的收入。 “我们的观点是,开源软件从来不应该让云服务公司拿去卖。”在 Redis 宣布了它的决定后,Bain Capital Ventures 的管理总监 Salil Deshpande 在一篇 Techcrunch 上的文章中说。Deshpande 是 Redis Labs 的投资人之一,他帮助开源软件公司撰写了我们三月份看到的 Commons Clause 授权。 随着开源软件成为企业软件世界中的重要组成部分,它的方向和许多方面不可避免地会受到商业意向的影响。现在的问题是,成为开源软件的意义是什么?那些利用别人开发的开源项目来提供服务并从中获利的公司,他们欠开源项目的建立者和维护者什么? 二、开放和封闭在考虑第一个问题时,重要的是要考虑到 Redis 的 Commons Clause 授权显然不是一份开源授权,这一点所有人都同意。Redis 在广为人知的 BSD 授权下依然是个开源软件,但 Redis 公司为它在 Redis 项目基础上开发的扩展应用了 Commons Clause 授权。 MongoDB 的情况有点不一样。因为 SSPL 授权要求云服务商在将开源项目做成服务时,提供更多的开源软件作为汇报,因此 MongoDB 公司认为,这一点不违背开源软件的精神。 “每个人都希望有更多的开源软件,但总要有人为之提供资助。而为了保证资金,就必须保证在商业上有存在的价值。”Ittycheria 说。 位于西雅图的 Chef(https://www.chef.io/)的联合创始人兼 CTO Adam Jacob 维护着几个开源项目,这些项目的目的是让基础设施和应用程序的管理更容易。Adam 很怀疑这是否是开源软件项目、开源开发者和开源公司的正确发展方向。 “我不觉得这是在社区的基础上做出的决定,当然这次事件跟历史上的开源软件和免费软件的诞生也不一样。”Jacob 说。“我不觉得应该出现像‘我们的业务需要商业的保驾护航’这种三条腿的决定。” Chef 的联合创始人兼 CTO Adam Jacob Jacob 说,毕竟,当开源项目开始赚钱时,Redis 和 MondoDB 等公司很乐意看到开源社区的友好、开放的氛围,从而能将他们的作品广泛传播到全世界。 “更有意思的是,从开源商业模型的角度来看,他们所作所为中开源的部分一直都是他们商业模型中的一部分。更重要的是开发者能触及的深度。”Jacob 说,他们的主要目的是建立一个“漏斗策略”,利用免费版本吸引用户,然后销售商业版本。 但对于许多小公司,参与开源社区并维护项目是与成熟的公司竞争的唯一办法。对于年轻的企业软件公司来说,最难的事情之一就是说服其他公司为你的产品付费。 “开源软件提供了许多机会,特别是为创业公司。”Kearns 说。但在某一点上,早期的战略决策可能会成为沉重的负担;另一个很难的事情就是说服习惯了免费的人为之付费。 三、地平线上的云这一点可能是最重要的:开发者作为个人爱好而开发开源软件的时代早已终结,而云服务商能通过开源软件攫取收益而不用付出任何贡献的今天,通过社区的方式来开发任何人皆可使用的软件,是否还有存在的价值? Jacob 认为有。 “我相信我们的错误在于,我们实际上不再信任公众,不再信任自由软件的价值是构建更好的社区必须的,因为我们在一开始就认为,商业和社区是截然分开的。”他说。 Redis 和 MongoDB 认为,他们并没有将开源社区弃之不顾。他们认为,他们别无选择,必须找到新的途径从财务方面支持他们的开发者,这些开发者对于社区的健康发展十分重要,尽管部分工作依然属于私有财产,或者是有条件的开放。 最大的三家云服务商对于该问题依然保持沉默,拒绝让高管们讨论这次开源授权的变动。Google 从早期就在布道开源软件的价值,而微软和 AWS 在新世界中采取了不同的途径。 当了多年的开源头号公敌之后,微软开始拥抱开源软件,开始雇佣拥有雄厚的开源经验的开发者,并对一些社区做出了至关重要的回馈。AWS 在与开源社区合作的方面比较缓慢,但在过去几年里也在逐渐改变其基调,招募了许多开源开发者(如 James Gosling 和 Adrian Cockcroft)来改变他们对于开源贡献的看法。 如果更多的公司切换到这种更激进的授权,就会强迫云服务商改变产品开发战略,因为他们必须评价哪些服务更值得进入商用,哪些不值得。但是现在,还有许多创业公司和项目依然在使用传统的开源授权,意味着云服务商们还在观望市场对于 Redis 和 MongoDB 的反应。 但现代企业在竞争激励的二十一世纪中构建并管理技术的一切前提都已经被云计算改变了。因此不难想象,云计算也可能会改变开源软件开发背后的前提。 |