delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

22 Jan 2008

Qt 4 将提供 GPLv3 授权选项

在 Google campus 举行的 KDE 4 Release Event 上,Trolltech宣布将提供 GPLv3 授权选项。许多国内媒体将这一变动称为"以GPLv3授权发布",很明显这与事实是存在差距的。

Qt的授权

Qt是一组C++的GUI库。早期版本的 Qt 是商业软件,使用 Qt 代码发布可执行文件需要购买授权;后来,由于市场推广的需要,Qt增加了GPLv2的授权选项。从 Qt 4 开始,Trolltech 将提供 GPLv3 授权选项,以方便开源软件使用 Qt。

GPL不同版本之间的兼容性

与许多人的想象不同,GPL不同版本之间是不兼容的。这种不兼容会给发布预编译包的发行商(即使他们遵循GPL要求发布源代码)带来法律上的困难,即,如果某个软件是以 GPL 的某个特定版本,而不是"GPL某个版本,以及其后(如果你愿意的话)由自由软件基金会发布的新版本 GPL"授权,那么,混合不同 GPL 版本授权的代码编译出来的二进制文件便不能发布。

对于开发人员来说,这并不是一个很大的问题。多数使用开放源代码软件的开发人员,都会更喜欢自行编译,而不是使用预编译的包来安装软件,以便根据需要加入调试符号或需要的调试特性。然而,对于使用开放源代码软件的最终用户来说,从头编译所有的东西无疑是一个费时费力的工作。由于 GPL 不同版本之间的不兼容,发行商便不能发布预编译包,从而只能将这一工作交给最终用户来进行。

如何规避GPLv3升级带来的授权风险

对于发行商而言,规避 GPLv3 升级的方法有以下几种:

a. 剔除发行包中全部以"仅GPLv2"而不是"GPLv2或更新版本"授权的软件。
请注意,混合"GPLv2或更新版本"授权的代码和GPLv3授权的代码是安全的。

b. 将"仅GPLv2"授权的软件更换为其他授权,如BSD授权的软件。
混合BSD授权的代码与GPLv3授权的代码编译出来的二进制包是可以发布的。

c. 剔除所有GPLv3代码,停止跟进其更新版本。
这种方法也是安全的。

如何看待GPLv3

随着GPLv3发布的时间越来越多,已经开始有一系列针对 GPLv3 的专业的法律分析。一般而言,自由软件基金会发布的软件,会以与最新版本GPL相容的授权发布(例如ncurses采用的是MIT授权)。但是其他一些软件,如 Linux、OpenJDK等等,采用的都是 GPLv2 only 授权。

目前为止,GPL的任何版本都没有经历过英美法系法庭的检验。因此,GPL的合法性经常遭到质疑。通过不断升级,未经检验的版本将越来越多,从而影响 GPL 的推广。

Qt 4 提供 GPLv3 授权选项意味着什么

Qt 4提供GPLv3授权选项意味着使用 Qt 的软件终于可以使用 GPLv3 授权发布了,这是一个进步。然而,这并没有解决 Qt 与未来版本 GPL 的相容问题,换言之,如果 FSF 发布新版本 GPL,那么仍会给使用 Qt 带来麻烦。如果 Qt 采用的是与 X.org 同样的 X11/MIT 授权,便不会遇到这个问题。