我为什么不使用 GPL
我曾经毫不犹豫地以 GPL 协议发布我写的所有东西。然而,我已经得出结论,根据 GPL 许可的软件远非“自由软件”。因此,我所有软件(AutoRPM、Logwatch 等)的新版本将以 MIT 许可证(类似于 BSD 许可证)发布。
我并不是想挑起口水战;我的决定有非常充分的理由,我认为其他开源软件开发者应该考虑使用 GPL 以外的许可证。
GPL 试图强制个人和企业发布他们的源代码。这本身并没有错,只是我不认为这符合“自由软件”的定义。我希望任何人都可以对我编写的程序和/或其源代码做任何他们想做的事情。我没有理由限制他们的活动。大多数公司在开始设计产品之前就已经决定他们的产品将是闭源的。如果一家闭源公司决定可以在其产品中使用一些开源代码,并且该代码是在 GPL 许可下发布的,那么该公司将做以下两件事之一:使用开源代码而不告诉任何人,或者从头开始编写自己的代码。
这两种选择对每个人来说都是不利的。对于第一种选择,对代码的任何改进都将被保密,并且不会对整个项目有所帮助。对于第二种选择,公司现在将做已经完成的工作,并且将使用他们自己的专有方法而不是已经存在的方法来完成。此外,现在将会有更多相同代码的实现,它们有自己的错误、怪癖和偏好。
现在,考虑同一家公司查看在 BSD 或 MIT 许可证下发布的相同代码。如果代码不错,他们将在他们的产品中使用它。当然,他们的产品可能不是开源的。但是,真正造成了什么危害呢?开源项目仍然存在。与试图欺骗 GPL 相比,该公司更有可能与开源开发者合作以改进项目。这只会为项目带来更多的用户和更多的开发者。此外,公司可能希望保持开源代码的最新状态,而做到这一点的最简单方法是将任何更改整合到整个项目中。
还有更多优势。公司的产品将更容易修改和定制,因为它将至少使用一些开源组件。想象一下,如果 TiVo 因为 GPL 而无法使用 Linux——破解难度会增加多少?更妙的是,商业产品中更多的开源代码意味着更少的专有技术。专有技术越少,人们就越容易从专有操作系统切换到 Linux。例如,想象一下,如果微软为其文件系统使用了 ext2,或者为其 shell 使用了 bash?如果这种情况发生,(某些)应用程序将更容易移植到 Linux。用户从 Windows 转换为 Linux 也会容易得多。
我承认,如果我是一名 Apache 的开发者,而微软有一天用 Apache 替换了 IIS,我会感到有点被欺骗。我会觉得我应该得到微软从我的项目中赚取的一部分钱。然而,从长远来看,我将有助于微软的衰落。一家公司将 MS/Apache 网络服务器替换为 Linux/Apache 会比目前将 MS/IIS 替换为 Linux/Apache 容易得多。我在一家公司工作,该公司使用 MS Exchange 来满足其所有电子邮件和日程安排需求。如果微软使用开源邮件服务器而不是编写自己的邮件服务器,那么将他们的基于 NT 的邮件服务器替换为 Linux 服务器会容易得多。
最后但并非最不重要的是,开源社区作为一个整体的经济利益。大多数开源程序员都有正常工作,并在业余时间从事他们的开源项目。那么,如果更多的开源程序员能够获得报酬来从事他们的开源项目,那不是很好吗?任何使用您的开源项目的公司都是潜在的雇主。如果您的开源项目以真正自由的许可证发布,那么会有更多的公司使用您的开源项目。根据我的经验,支付报酬让您从事开源项目的公司希望它们保持开源。他们意识到该项目之所以能取得今天的成就,是因为开源社区,他们非常乐意看到他们付费进行的更改应用于整个项目。
总的来说,我认为开源开发者应该在他们认为最好的任何许可证下发布他们的代码。但我确实认为,根据 GPL 发布您的程序与微软向您出售带有限制性 EULA 的程序相比并没有好多少——在这两种情况下,版权所有者都在告诉您您可以和不可以对他们的软件做什么。我还认为,从长远来看,MIT 和 BSD 许可证更好地服务于开源社区的利益。
Kirk Bauer 是一位狂热的 Linux 用户,并且是佐治亚理工学院 GT 运动跳伞俱乐部 的成员。
电子邮件:kirk@kaybee.org