我们需要分布式系统的免费软件许可证

2021-08-05 20:47:15

用户能够运行、修改、分发和分发他们使用的软件的修改版本对用户来说是件好事。从经验上讲,过去 30 年我们已经看到开源使软件变得更好、更便宜。当软件在一台本地机器上运行时,如果软件是开源的,用户很容易运行软件的修改版本,并将这些修改版本分发给其他人进行协作。这种协作创建了一个反馈循环,使软件甚至更好。但是当软件被用作服务时,即使软件是开源的,用户运行和分发软件的修改版本也更加困难。该服务作为更广泛的分布式系统的一部分在不受控制的节点上运行。用户。为了让用户运行自己的副本,用户必须运行自己的分布式系统,该系统由服务、其他支持服务和该服务的客户端组成,所有这些都分布在多个节点上。众所周知,运行分布式系统比运行本地软件更难,但为什么呢?在某些方面,这是一个技术问题。我们非常了解如何在单台机器上编写和运行单个进程,即使是新手用户也可以在基本级别上管理这样的机器。但我们对这方面的了解相对较少如何对分布在多个节点上的分布式系统做同样的事情,因此即使使用我们开发的所有工具,这也是一项艰巨的任务。然而,在其他方面,这是一个社会问题。一个用户(可能是一个人或整个组织,例如 Facebook、亚马逊、Netflix、谷歌等)开发的脚本、软件和技术来运行特定的分布式系统,通常不与其他用户共享。而且,至关重要的是,这些脚本和技术对服务的最终用户不可用。如果最终用户希望自己运行服务,他们从无到有;他们必须重新创建从零开始的分布式系统。如果明天立即可用,这些脚本可能不会很有用。 这又回到了技术问题:我们对如何在理论层面上运行分布式系统没有很好的理解,所以我们编写的脚本是用来做的它是高度专业化和定制的。然而,想象一个世界,所有用户,包括最大的组织,都发布了他们用来运行分布式系统的脚本。随着时间的推移,最有用、最便携和最灵活的脚本将被其他人采用,并且它们将被扩展为甚至更有用。这与我们在所有开源中看到的动态相同。考虑本地软件中的一个例子:Linux。Linux在理论上并不是“精心设计”的。但是,在实践中,它质量高,相对易于使用,并且被广泛用于许多不同的目的。它做到了这一点状态,因为它是开源的,每个人都为共享的 Linux 代码库做出了贡献;如果他们想使用 Linux 发布产品,他们必须这样做。今天,存在于 Linux 的反馈循环并不存在于分布式系统。实际上用于由最大组织维护的最大分布式系统的软件不可用,即使其中的个别服务是开源的。用户可以访问一些单独组件的源代码,但他们无法访问更广泛的分布式系统的代码,因此没有开源的改进反馈循环,使该系统具有高质量和可重用性。对于本地软件,我们可以通过使用 copyleft 来保留运行整个本地应用程序的自由。整个组合工作。这确保了某些软件的用户始终有能力对其进行改进,从而维持对 Linux 如此有效的反馈循环。我们可以为分布式系统编写新的、类似的 Copyleft 开源许可证。当分布式系统使用根据新许可证授权的服务时,该系统将需要为其用户提供整个组合分布式系统的所有开源自由。用户将有能力运行和修改他们自己的分布式系统副本,并使其变得更好,就像使用 Linux 一样。有些人担心这样的许可证不允许在专有云托管之上托管服务;最终用户将无法使用专有分布式系统的 API 来运行服务。这是 GPL 处理的问题也是。GPL 包含“系统链接豁免”,允许使用专有“系统库”,专有操作系统的一部分;这在专有操作系统占主导地位的时候很重要。我们新的分布式许可证可以有一个类似的系统链接豁免以允许与专有云托管一起使用。 SSPL 的支持者声称这是为分布式系统编写这样一个 Copyleft 开源许可证的尝试。批评者声称它是完全不同的东西。我真的不在乎;我只想要一个需要的开源许可证,当许可软件时用于提供作为更大分布式系统一部分的服务,必须为该服务的用户提供运行和修改他们自己的分布式系统副本的自由。如果这不是 SSPL,那么我们应该开发一个新的这样的执照。 AGPL 的部分目的是为了保证用户的这种自由,但它失败了。专有的分布式系统经常结合 AGPL 软件来提供服务。实施此类系统的组织相信,只要提供服务的单个流程符合AGPL,分布式系统的其余部分不需要遵守;似乎法律界也同意。我希望用户能够轻松运行高质量的分布式系统。我们可以追求很多技术进步让这变得更容易,但我们也应该追求社会补救。我们永远不会有大量低成本的,高质量的分布式系统软件,除非开源反馈循环开始为分布式系统运行。