这是针对英文原版页面的中文翻译。

为什么你的下一个库不应该使用 LGPL

在GNU工程中对函数库的使用有两种主要的许可证。一种是GNU LGPL;另一种是普通的GNU GPL。选择许可证会造成重大的区别:LGPL许可证允许专有软件使用该函数库;而普通的GNU GPL只允许在自由软件中使用该函数库。

对函数库使用哪种许可证最佳的考虑是策略问题,而且它取决于具体的情况。目前,大多数GNU函数库使用LGPL,这意味着我们只使用了两种策略之一,而忽略了另一个。所以我们现在要追求更多使用普通GPL许可证的函数库。

专有软件的开发者有金钱上的优势,而自由软件开发者需要为彼此创造优势。使用普通GPL的函数库给予自由软件开发者一个超越专有软件开发者的优势:能够使用按照普通GPL发布的函数库,而专有软件的开发者不能使用这些库。

使用普通GPL并非对每个函数库都有好处。在某些情况下,使用LGPL更好些。最常见的情况是,专有软件可以通过其他函数库来实现使用自由软件函数库的功能。在这种情况下,该函数库不能给自由软件带来任何特别的好处,所以最好对它使用LGPL许可证。

这就是为什么我们对GNU C库使用LGPL的原因。毕竟,世界上有那么多的C函数库;让我们的C库使用GPL许可证会迫使专有软件的开发者去使用其他的C库—对他们不是问题,对我们则是。

然而,当一个函数库提供了一个重要并独一无二的功能的时候,像GNU Readline,这又是另一回事了。Readline函数库实现了输入编辑和为交互程序提供历史记录的功能,而这些功能在其他库中一般是没有的。在GPL下发布它并把它的使用限制在自由软件中,这是对我们社区的一种实际帮助。今天,至少有一个应用软件就是因为需要使用Readline库而成为自由软件的。

如果我们聚集了大量的、功能强大的GPL函数库,而且它们没有专有软件的替代品,它们就会为开发新的自由软件提供广阔的可用模块。这对进一步开发自由软件是一个显著的优势,而且有些项目为了使用这些库,会决定把软件变成自由软件。大学的项目容易被影响;目前,当有公司开始考虑把软件变成自由软件的时候,这甚至也可能会影响到一些商业项目。

专有软件的开发者企图否定自由竞争这么一个重要的优势,他们将试图说服作者不要把函数库放到GPL库中。例如,他们可能会推崇自我意识,保证如果我们让他们在专有软件产品中使用这些代码,那么“就会有更多的用户使用该库”。普及是一种诱惑,而且函数库的开发者容易认为帮助软件库普及是社区最需要的。

但是我们不应该听信这些诱惑,因为如果团结在一起,我们会取得多得多的成就。我们这些自由软件开发者必须相互支持。通过把函数库局限在自由软件中,我们可以使得相互的自由软件超越同类的专有软件。整个的自由软件运动也会因为自由软件在竞争中整体上获得优势而变得更加普及。