跳过导航.
主页

22、针对GPL存在哪些疑问?

GPL


  随着Linux的日益普及,业界对于Linux所遵循的GPL也越来越重视,由于迄
今为止GPL并未在任何一个国家的法庭上得到过解释或验证,因此引发了不少疑
问。在Linux内核方面出现过一些违反GPL的案例,但是已经友善地加以解决。目
前还有一些正在进行中的案件,比如去年9月自由软件基金会指责RTLinux(一种
基于Linux的实时操作系统,加入一个相对独立的实时内核模块与常规Linux内核
协同工作)专利违背了GPL,同样的问题也发生在遵循GPL的著名游戏软件DOOM和
QUAKE身上,他们试图让用户在使用其源代码时签署所?quot;点击通
过"(clickthrough)许可来放弃其GPL权利。

  在GPL中一些用词存在模糊之处比如"发布"("release")、"发
表"("publish")和"发行"("distribute")。技术的发展已经允许软件构件
可以利用构件技术或Web服务技术更为轻松地'连接'('linked'),因此"发
行"的概念已经与GPL第二版制订时大不一样了。据说自由软件的创始人Stallman
正在制订(进度非常缓慢)一个更加具有"商业友好性"的GPL第三版。在嵌入式
Linux社区中也出现了一种担心,因为按照目前的GPL,如果一些专有的嵌入式
OS不是通过系统接口而是直接与GPL应用连接的话,则就被认为违反了GPL。在此,
人们主要担心的是无法确认一个软件究竟是不是GPL派生作品,因为没有人真正
测试过这个定义。GPL隐含的认为一个派生作品就是那些与原始作品静态/动态连
接的作品(这可能在GPL第三版中发生变化),但不少开源法律专家认为与GPL代
码的动态连接并不构成派生作品,FSF也承认最终的解释权掌握在法官手中,至
今尚未正式测试过。顺便提一下,由此还引发了一个更为重要的问题,可以想象
某人会声称,在阅读了具有特定实现目标的源码后写出一个实现同样目标的代码
事实上构成了一个派生作品,这也就是人们对于微软的共享源码策略的重大疑虑
所在。

  由于GPL与现行的专有软件商业模式截然相反,因此专有软件公司对GPL的疑
虑很多,在这方面微软有相应的研究结果,基本反映了GPL针对专有软件公司而
言存在的各种问题。对于GPL各种讨论穿插在本文的不同部分,以下针对专有软
件如何使用 GPL软件(如Linux)进行初步讨论。

  GPL是经过精心编写的,但从未在法庭上测试过。这对于专有软件来说是一
个机会,可以使用 GPL 下的库,即使GPL禁止这样做。GPL是通过版权法实施
的,美国(包括中国)的版权法都对"合理使用"有例外。两种重要的合理使用包
括相兼容和逆向工程。

  设想你想要写一个Windows的程序,但是你需要使用一个未公开的
API。Microsoft是不会提供给你信息的,因此你不得不自己寻找。美国法律(中
国新颁布的《计算机软件保护条例》也有类似规定)通常允许你反汇编Windows
的一部份和调用秘密函数,即使Microsoft说你不能。类似的,Microsoft 不能
阻止著名的开源项目Samba小组对Windows的文件共享作逆向工程。

设想你在销售Linux上的专有软件。如果用户的系统中有Readline库,你将要使
用它,但是Readline库是遵循GPL的。因此你决定不自带Readline库,相反,你
修改了你的程序去查找Readline,并且要求用户自己安装它。(例如,在
RedHat 5.2 中,Readline 是缺省就安装的。)

  你这样违反了法律吗?你并没有为任何人复制Readline的拷贝,GPL 并不阻
止你拷贝自己的程序。你是自己使用Readline,而GPL并不禁止这个。(即使
GPL想禁止,它在"合理使用"的例外规定下也可能无效。)你的用户可能不把你
的程序与Readline连接,而美国的法律允许他们这样做(中国的法律类似),
GPL 也不会阻止他们。

  那么,有什么能阻止专有软件使用Readline呢?你的程序是Readline的派
生品?因而被GPL约束?这并不恰当,既然它没有包含任何Readline的代码。使
用 #including Readline的头文件就使之受GPL的约束?很可能不--一个好的律
师会说,这与"以内部兼容为目的的逆向工程"是一样的。也许你不得不在一个干
净的环境下重新键入头文件,但这对小的库来说并不难。

那么,一个专有的应用程序可以动态连接到一个GPL库(注意:不是LGPL库)上
吗?也许可以。但如果一个专有的应用程序不能动态连接到一个GPL的库,那么
Microsoft也许可以对Samba找麻烦。这是一把双刃剑。

  而且,所有开源许可证关注的是软件的发行,因此,除非发行GPL软件的派
生作品,否则当仅供内部使用时,GPL并不要求公开源码。这为涉及国家安全的
重要部门提供了一种可能性,即在内部使用定制的安全Linux但不公开源码,从
而加强保密性。