当前位置:Linux教程 - Linux - 选择GPL还是BSD?

选择GPL还是BSD?

作者:Mark Nielsen
编译:ideal

简介

什么是GPL软件授权许可证?
GNU通用公共许可证(GPL,The GNU General Public License)的全文非常烦琐冗长,其主要宗旨是在程序员社区内保证和促进可以连续自由和开放地保证软件源代码的共享。它的出现混淆了""free""和""freedom""的含义,因为其实际上限制了那些不希望开放共享那些从GPL授权的软件进行二次开发的程序员的自由。Rick Holbert建议我们使用解放软件(liberated software)这个名词来替代自由软件(free software)这个名词。但这仍然使我感到迷惑,因为GNU软件并不是真正的解放软件,其实你并不能任意处理GPL软件的源代码,但是""解放""这个词仍然要比""自由""这个词来的准确一些。GPL许可证强迫用户将对开放共享的GPL软件的修改后的源代码继续公开。因此,GPL保证了那些软件使用者自由的连续性,而不是那些修改软件的程序员。如果仔细分析可以发现,GPL有一些令人混淆的地方,一方面它保证了以后软件""接受者""的自由,而剥夺了软件开发者任意处置自己编写的代码的权利。总的来说,对于那些希望将自己的软件贡献出来的人来GPL是令人满意的,因为在GPL授权许可下,软件在整个开发中都保证了源码的开放和所有的人都可以使用和添加修改软件。
但是从商业角度来说,当然是希望使用那些可以可以关闭源码共享的软件,因为你往往是希望根据其开发一个具有潜在价值的产品。如果你关闭了具有价值的软件的源码,并且对其进行改进和二次开发,使其具有更高的价值,这样你才能向那些没有能力自行开发的软件使用者使收费,那么你就应该考虑使用具有BSD授权许可的软件作为起点。

考虑另外一种情况下,如果你更着重于服务而不是软件产品,那么GPL软件对你来说就没有什么缺陷了。例如,IBM在其各种服务器中使用Linux。如果你是在GPL软件平台之上开发一个商业软件,你也不必担心GPL对你的影响。另外,任何从头开发的软件或者是使用BSD软件作为基础来开发的软件,你都可以封闭自己的源代码。仍然有很多方法可以利用GPL软件而不威胁你的商务活动。一般来说客户并不真正关心事情是如何完成的,他们仅仅关心事情完成的结果。一个最好的例子是在最流行的桌面操作系统之上运行的各种软件,使用这些糟糕的软件的用户中99%都不知道,也不关心他们使用的软件是如何的垃圾和糟糕。只要看看用户是如何乐于下载和安装那些号称是最可靠和稳定的保证向后兼容的操作系统的补丁就可以理解这一点了。为什么一开始这些操作系统不能保证稳定和可靠的呢?并且如果最稳定和可靠的当前版本仍然时常崩溃并且有巨多的bug,那么以前的版本是不是垃圾呢?我一直在对人们强调那些比垃圾更加稳定和可靠的东西,实际上仍然是垃圾,只不过是稍稍更加稳定和可靠一些罢了。这并没有太多的意义。在商业上,重要的不是被卖的产品的可靠性和稳定性,如果你能满足使用者的最低要求,并且你能以便宜的价格占有主要市场,或者你能实现垄断,并且对用户进行洗脑宣传,大量进行广告金钱宣传,那么你的产品就是最""棒""的。如果你由于商业的原因害怕GPL许可证,那么你可能并没有足够地深入和仔细地考虑你的商业模型。在US最流行的Linux发布并不是最好的,其缺乏很多应该具有的特色,但是它仍然是最流行的,因为它已经占有了市场,并且每次版本升级其产品都有改进,这样使得它们的客户感的很开心,即使用户并不知道软件实际上应该有多好。

什么是BSD授权许可证?

BSD授权许可证(FreeBSD Copyright Information)具有多种授权许可证。总的来说你可以对软件任意处理,只要你在软件中注明其是来自于那个项目的就可以了。也就是说你具有更大的自由度来处置软件。如果你对软件进行了修改,你可以限制其他使用者得到你修改的软件的自由。

BSD授权许可证没有实现""通透性""自由,也就是其不保证软件源代码开放的连续性。这样如果你希望采用别人开发的BSD软件,进行一些修改,然后作为产品卖,或者仅仅保密自己的做的一些除了软件开发以外的工作,那么你就可以从中得利。

当一个非程序员仅仅理解一个程序的功能,但是不了解程序是如何做的时,即使你没有在开发软件中做任何工作那你就可以通过高超的市场技巧将软件卖给该用户。比如拿最流行的桌面操作系统作为例子,你就能很好的理解一个没有很好的程序技巧的软件公司只要具有高超的市场营销策略同样可以将垃圾卖给客户。如果你不具有很强大的编程能力,但是具有很强的市场能力和能将其他开发者的软件包括到自己的系统,而同时不将自己的修改开放出来将是非常强大的能力。从赚钱为目的的商务角度看来,如果你使用了BSD授权许可证的软件,那么你就可以任意进行。你可以更好地控制你的OS系统,并且防止其他人拷贝你的商业产品。

就我看来,只要是开放源码的东西,就都不是垃圾,因为只要是开放的其就可能被修改,发生变化;而一旦变成封闭源码的东西,它马上就成为了垃圾,因为我不知道它是如何实现的。所有BSD授权声明的开放源码的软件都是很棒的东西。

哪种更适合你?

有一个信念你是必须理解的:授权许可之间并没有好坏之分,除非你从你希望达到的目的的角度去看待问题。一个授权许可证是人们行为的基础,就象法规一样。从商务角度来说,美国有一个非常棒的政府,因为这里是金钱统治一切;从人性角度看来,其他政府可能更具有理想主义一些。但是如果他们实现了他们人民希望达到的目标,它们之间是没有好坏之分的。如果授权许可证保证了你希望的目标,那么它对你来说就是好的,但是对于其他人来说可能并不是如此,但是你可能往往不会关心别人对该授权许可证的看法。因此,只有白痴才会认为一种授权许可证比另外一种授权许可更好。一旦我们知道了你创造程序的目标,那么我们就可以判断你的软件更适合使用哪种授权许可。

无论什么时候我和BSD人们交谈,他们往往也承认GPL是一个不错的东西。怎么会这样呢?正如前面讨论的那样,授权许可是为人们来使用的。没有人强迫你对你的软件使用GPL或者是BSD授权许可。因此如果你选择使用GPL作为自己创造的软件的授权许可,那么不要在意人们对源代码具有完全处理的权限。既然你选择了GPL,那么你就不应该在意,因为你没有希望从其他封闭授权的软件获利,因此你就不希望其他人通过你的软件获利。GPL划定了游戏范围以保证每个人能平等地从同一个软件获利的权利。就象好的市场驱动竞争以促进商业发展一样,大家都有平等的权利但只有最优秀的人可以获胜一样。同样一旦你选择了将自己的软件平等地给所有人共享。如果有人不想象别人那样共享代码,他可以选择投资几百万来开发自己的软件,没有人会阻止他这么做。

可以对软件定义若干种授权许可,例如Perl同时具有GPL授权许可和艺术性授权许可(Artistic Licenses)。如果你希望你的软件和其他自由软件一起配合使用,那么你必须对其不仅仅定义GPL授权许可。但是GPL一般往往并不能和其他免费软件授权许可很好的配合使用。

自由软件社区对于GPL的一种批评是:它偷窃了自由(freedom)这个单词。问题是这样的:一个独裁者有自由成为一个独裁者吗?答案:是可以的。自由和社区没有任何关系。自由意味着你可以在任何时候随意做你想做的任何事情。人们有自由选择不自由(have the freedom not to be free)。困扰我的一件事情是:虽然我从政治角度理解为什么他们要这么做,但是FSF和GPL这些人则倾向于重新按照他们希望的目的来定义自由的含义,但其实他们只是看到了很狭义的自由的含义,而不是完全的自由。他们感兴趣的是在社区内部共享软件代码,而不是个人对自己的软件的任意处置的自由,例如将GPL化的一段代码变成封闭代码等等。因此GPL本身从自由真正的含义上并没有真正地促进自由,而是限制了自由,仅仅保证了社区内共享代码的自由。我不喜欢这些家伙,他们重新定义了自由的含义,而且如果你按照他们的意思定义自由他们往往就懒得答理你。但是我认为从政策意义上来说,他们是很好的,因为他强迫人们考虑自由,大多数人没有时间去考虑自由的真正含义。

那么对于BSD,它也是不坏的选择。它对于那些希望编写封闭代码程序的程序员是很有意义的。我理解为什么BSD授权许可这么有吸引力和它对于一些人为什么如此重要。但是也使我对从政治角度来看没有意义的BSD有了更深入的理解:

如果有人以BSD授权许可发布软件,那么别人就可以利用该软件创建一个封闭源码版本,他不必向任何人公开自己做了哪些修改。因此一个项目组可能花费数年来开发一个很棒的软件,而一个人或一个公司则可能""偷窃""该软件,进行一些简单的二次开发并形成一个封闭源码的产品来盈利,却和原始开发者则可能没有从中得到任何利益。我就是不能理解为什么这么多人这么辛苦的工作来努力使其他人成为百万富翁。GPL则组织这种事情的发生,它保证了软件开放性的连续和所有使用者具有平等的权利。

BSD授权许可危险性的一个明显的例子就是:它如何使一个病毒扩散到整个世界。只要看看Kerberos的情况就可以了解情况是如何糟糕的。对于我自己来说,当一个邪恶的公司糟蹋了一个软件,那么就没有任何办法强迫它们和社会一起合作来改善情况,我个人是抵制所有这些软件的。我不能承受担心相互之间不兼容的版本到处出现。Kerberos就是这样被糟蹋掉的,我永远不会再使用它。为什么说它被糟蹋了呢?被糟蹋的版本到处都是,而且影响很大之间又不相互兼容。我不会花时间去使用这样的软件:知道有一天它会变成封闭源码的,但是而且会和我在使用的版本不兼容。对于我来说不兼容性是非常糟糕的和不能接受的,如果我能避免使用这样的软件我一定不会使用它。

既然GPL和BSD各有优缺点,那么哪个更适合你呢?其中一个,没有一个或者是都适合你。重要的是要理解授权许可的含义,如果你不重视结果,那么很好。虽然我不喜欢BSD授权声明适用于我的软件,但是如果你不介意别人利用你的软件获利那么BSD就是你的最好的选择。

哪种更适合?

哪种更好一些?答案是两个一样好。然而我选择了GPL,为什么呢?我对于所有的自由软件都是非常的感激,我没有真正开发任何能被用来售卖的软件(我通常使用Python来开发web脚本)。我为世界创造的任何东西我都希望在我之后有人能利用它和改进它,所以我选择了GPL。但是我从来没有对我的软件使用BSD授权许可,因为我不希望那些不劳而获者利用我的软件来盈利,而隐藏对软件的修改。但是BSD授权许可对我来说好的一面是它是未来的一种选择,我不是用它但是我很高兴它是一种选择。

结论

Anonymous Coward有很好的结论:“我可以认真写一个很长的短文作为回应,但是大多数的读者可能希望有一个简单的概要:GPL授权许可有益于软件的解放,BSD则有益于人的解放。对于GPL,确保了软件的发展拥有比软件开发者更多的自由;而对于BSD,保了软件开发者拥有比软件的发展更多的自由。“
我个人这样认为:

* GPL提倡和促进最终用户的自由
* BSD提倡程序开发者的自由。

总的来说,任何认为一种授权许可比另外一种好的人都是思想简单的人,他们不能理解他们仅仅从他们自己的角度考虑问题,而不是从别人的角度考虑问题。我希望强调的是这些人应该被消灭,这样他们的DNA就不会传播,不会创造那种用另外的标准对待别人和做出判断的政客、将军和法官。

我这里严重的冒犯了那些在关于软件授权问题上为别人做决定的人,可能要稍微冒犯了那些让别人为自己做决定的人。我不介意有关授权许可是如何影响世界的理论,但是不要宣称一种授权比另外一种好的,因为这是一种基于特定价值的选择而已,而不是一种事实。我接受这样的事实:你所考虑的对你来说随最合适的授权许可,但是不一定是其他人的最佳选择。

参考资料

感谢Rick Holbert的建议,使得我得以提高我的文章,使我明白被解放一词比自由一词更适合于讨论GPL。
Slashdot有很多很好的文章给予我了很多的启迪。

作者Mark Nielsen一个独立咨询者,给诸如GNUJobs.com等写评论文章,编写自由软件和在eastmont.net作为一个自愿者工作。