基于云的架构和开源应该是天作之合,但像Kubernetes这样的成功案例是例外,而不是规则。
从某些角度来看,开源在云中取得了巨大的成功。像Kubernetes这样的开源解决方案已经吃掉了闭源替代方案。然而,在其他方面,云中的开源已经完全失败了。基于云的架构继续为实现开源保护用户自由的创始目标带来根本性问题。对于许多组织而言,使用云意味着将控制权交给专有解决方案提供商并面临严格的锁定风险。
这些观察引出了一个问题:为什么开源在云中没有更大的影响力,以及可以做些什么来使云计算对开源更加友好?
开源的云问题
从云时代的早期开始,开源和云之间就一直存在紧张关系。
当自由和开源软件在1980年代在RichardStallman和GNU项目的支持下首次出现时,主要目标(正如Stallman当时所说)是将软件源代码提供给任何想要它的人,以便用户可以“无耻地使用电脑”,彼此团结一致。
如果您在本地设备上运行软件,访问源代码就可以实现这些目标。它确保您可以研究程序的工作原理,与他人共享修改并自己修复错误。只要源代码可用并且您在自己的设备上运行软件,软件供应商就不能“划分用户并征服他们”。
但是,当软件迁移到基于云的架构时,这种计算方式发生了根本性的变化。在云中,您作为最终用户访问的软件在由其他人控制的设备上运行。即使软件的源代码是可用的(在SaaS平台的情况下通常不是这样,尽管理论上可能是这样),其他人——特别是拥有运行软件的服务器的人——可以控制你的数据,决定如何配置软件,决定何时更新软件,等等。最终用户之间没有团结,最终用户和软件提供商之间也没有平等。
Stallman和其他自由软件倡导者很早就意识到了这一点。到2010年,Stallman哀叹用户在使用基于云的软件时放弃了控制,并创造了诸如“服务替代软件”之类的术语来模拟SaaS架构。他们还引入了Affero通用公共许可证,旨在将GNU通用公共许可证(主要的自由软件许可证)的保护扩展到通过网络托管的应用程序。
这些努力的成果充其量只是平庸的。自2000年代中期以来,Stallman恳求用户不要使用SaaS平台并没有阻止云的爆炸性增长。今天,很难想到一个主要的软件平台不能通过SaaS架构使用,也很难找到一个因软件自由问题而回避SaaS的最终用户。
尽管Affero许可证获得了关注,但它在云中推动自由和开源软件事业的能力有限。Affero许可证的主要目的是确保软件供应商不能声称基于云的软件没有“分发”给用户,因此不受传统开源许可证(如GPL)的规定的约束。这总比没有好,但对于解决用户在使用基于云的服务时面临的数据控制、软件修改等相关问题几乎没有帮助。
因此,基于云的架构继续对自由和开源软件的基本目标构成根本性挑战。很难设想一种方法来解决这些挑战,更难以想象它们会在云采用比以往任何时候都更加强大的世界中消失。
开源的云成功
您可以用另一种更积极的方式讲述云中开源的故事。从某些利基的角度来看,比如私有云和“云原生”基础设施技术,开源已经取得了巨大的成功。
我在这里考虑的是像Kubernetes这样的项目,这是一个开源应用程序编排平台,它已经变得如此占主导地位,以至于它甚至不再有真正的竞争。当即使是虚拟机编排工具与Kubernetes竞争的VMware现在也运行自己的Kubernetes发行版时,您就知道Kubernetes赢得了编排器战争。
OpenStack是一个构建私有云的平台,它在基于云的架构上的开源方面也取得了类似的成功。也许它没有像Kubernetes那样彻底消除竞争,但OpenStack仍然是一个非常成功、广泛使用的解决方案,适用于寻求构建私有云的公司。=
您可以对Docker得出类似的结论,Docker是一个开源容器化平台,对于希望获得比专有虚拟机更敏捷和资源效率更高的解决方案的公司而言,它已成为首选解决方案。
即使在公司确实希望使用普通虚拟机构建云的情况下,KVM(内置于Linux的开源虚拟机管理程序)现在也能与来自VMware和Microsoft等供应商的竞争VM平台相抗衡。
在构建私有(或在较小程度上,混合)基于云的基础设施时,开源在过去十年中做得非常好。十年前,您将不得不依靠专有工具来填补Kubernetes、OpenStack、Docker和KVM等平台现已成为事实上的解决方案的空白。
开源和公共云
但是,当您查看公共云时,开源似乎不太成功。尽管主要的公共云为Kubernetes和Docker等平台提供SaaS解决方案,但它们倾向于将它们包装在专有扩展中,使这些平台感觉不像实际那样开源。
同时,公有云中的大部分核心IaaS和SaaS服务都由闭源软件提供支持。如果您想将数据存储在AmazonS3中,或在AzureFunctions中运行无服务器功能,或在GoogleCloud中启动持续交付管道,您将使用专有解决方案,您将永远看不到其源代码。尽管存在许多这些服务的开源等价物(例如Qinling,一种无服务器功能服务,或Jenkins,用于CI/CD)。
云市场的消费者方面也由闭源解决方案主导。尽管存在Zoom和Webex等平台的开源替代品,但它们很少受到关注,即使在对专有协作平台的隐私和安全缺陷感到恐慌的情况下也是如此。
构建更好的开源云
反对在云中运行更多开源软件的一个明显反对意见是,云服务需要花钱托管,这使得供应商更难提供免费的开源解决方案。将Firefox赠送给人们安装在他们自己的计算机上很容易,因为用户提供了他们自己的基础设施。但是托管一个相当于Zoom的开源软件会更昂贵,这需要广泛且昂贵的基础设施。
然而,我认为这种观点反映了缺乏想象力。传统的集中式云基础架构有多种替代方案。与传统的IaaS基础设施相比,分布式对等网络可用于托管开源云服务,服务提供商的成本要低得多。
我还要指出,许多专有云服务是免费的。从这个意义上说,SaaS提供商需要收回其基础设施费用,因此无法提供免费和开源解决方案的论点没有多大意义。如果Zoom可以免费用于基本使用,那么它也没有理由不开源。
诚然,让更多的云服务开源并不能解决上面讨论的关于用户在其他人拥有的服务器上运行代码时放弃控制的基本问题。但它至少会为用户提供一些了解他们使用的SaaS应用程序或公共云IaaS服务如何工作的能力,以及更大的扩展和改进它们的机会。
例如,想象一个Facebook或Gmail的源代码是开放的世界。我怀疑对隐私问题的担忧会少得多,如果有人能看到代码,第三方就有更多的机会构建与这些平台集成的优秀解决方案。