对GPL的10大误解

Posted: 九月 1st, 2006 | Author: | Filed under: 文章 | Tags: , , | 4 Comments »

IT Manager’s Journal网站前两天登出一篇文章 10 common misunderstandings about the GPL 。文章作者 Bruce Byfield是一个讲师兼记者,为了澄清一些对于GPL的错误观念,他特地采访了Richard Fontana (Software Freedom Law Center的律师,GPL第三版的主要起草者之一)、David Turner (Free Software Foundation的认证工程师并参与GPL的修改)以及Harald Welte(主持GPL-Violations项目,追查各种违反GPL的行为)。Bruce结合这几个专家的意见,驳斥了对于GPL的10个常见误解。

  1. GPL是传染性的(viral)这个误解根源于微软的一个高级副总裁Craig Mundie于2001年在纽约大学Stern商学院的一个演讲,他宣称所有和GPL软件有所接触的其他软件都会受制于GPL。很多人据此认为一旦在机器中安装了GPL软件,其他的软件也要符合GPL的要求,以致于有些公司明文规定不许安装GPL软件。
    这是对GPL section 2关于修改后的GPL软件必须仍然以GPL发布的曲解,实际上条款还提到完全独立开发的软件并不受GPL约束,而且与GPL软件存在于同一个媒介上其他软件并不因此就变成GPL的。
  2. GPL不具备约束力产生这种误解的根源很大程度上是由于对违反GPL的现象,自由软件基金会更喜欢采取帮助违反者改正错误的做法而不是动不动就对簿公堂。从另一方面理解,违犯者之所以愿意改正错误,正是因为他们考虑到GPL的法律约束力。实际上,在德国和美国的一些诉讼案例中,GPL得到了法庭直接或间接的支持。
  3. GPL软件不能收费Red Hat、Novell这些公司的经营已经驳斥了这个误解。GPL的section 1中说到可以对实物分发软件或者提供额外保证来收费,section 3b要求对于源代码的收费不能高于进行实物分发所需的费用。
  4. 绝对化的“自由还是死亡”(liberty or death)条款GPL的section 7规定:法庭的指令或者对于违反专利权的裁定并不能成为不遵守GPL的豁免理由,如果不能兼顾裁定和GPL两者的规定,就不能再发行软件。这个条款被称为“自由还是死亡”条款。
    其实这个条款只是针对那些不允许用户以GPL进行再发布的专利许可证,但是一些人把它理解得过于苛刻,有人以为不允许在禁止转授的专利许可证下分发GPL授权的代码,还有人以为(这一句看不太明白)some have worried about the existence of a possibly-applicable patent, or of some law or regulation that might potentially be applied to everyone in a particular jurisdiction is enough to trigger this jurisdiction. 而GPL的文本中并没有这样的规定。
  5. 发行者只需要发布他们修改过的源代码许多从事派生软件开发的开发者认为,只要原始的开发者还在发布源代码,他们就只需发布修改的部分就可以了。然而,尽管要求所有发行者发布全部源代码有时候显得多余,但GPL并不允许有例外,而且今后也是如此。
  6. 发行者提供源代码就行了,不需要发布使用方法按照GPL section 3 的规定,发布源代码只是发行者的部分义务,发行者不仅要发布所有模块的源代码、相关定义文件,还要发布用于控制编译过程和安装可执行文件的脚本等,也就是说让源代码对每个人都有用的工具。尽管很多人已经有了相应的工具,但发行者不可以假定每个人都有。
  7. 发行者不需要提供获得源代码的方式(offer)section 3 允许发行者选择随二进制文件一起发布源代码或者给出一个提供源代码的方式(offer)。如果发行者两样都不做而是坐等别人的要求,尽管会比较省事,但是却是对GPL的直接违反。
  8. 发行者只需要给自己的顾客提供源代码如果发行者承诺提供源代码,根据section 3b的规定,这个承诺要维持3年,并且对所有第三者都有效,无论是商业客户还是其它对源代码有兴趣的人,都没有区别。
  9. 发行者只需要给出指向GPL文本的链接这样做对发行者来说很容易,但违反了section 1,它要求“在每一份拷贝中都明显地、适当地发布版权声明”。原因是并非所有人都能上网读到GPL的内容,他们也许因此不知道自己也可以继续发布这些软件。
  10. 我所理解的字面意思和你的不一致有些对GPL的混淆并不是出于误解,而是由于观点不一或者在法律上有不同的解释。在新的GPL修订中,将通过事先对概念的定义来减少这些混淆的现象。

原文中牵涉到不少法律概念,本人水平有限囫囵吞枣,摘译了大概,还望方家指点。


GPL妨碍了谁?

Posted: 二月 28th, 2006 | Author: | Filed under: 文章 | Tags: , | No Comments »

人类的近代史告诉我们,一项先进的技术能够转化成产品服务于社会,在它的后面肯定有一个商业公司默默的付出。因为后现代的社会更多需要的服务于我们的产品,各种高新技术在普通人眼里仅仅是被科学家束之高阁的梦想而已。这个规则在Linux世界里面也适用。试想Linux是一个非常好的技术,如果不对其加以产品化(或者说商品化),提高其稳定性和易用性,那她只会变成少数高手手中的玩物,逐渐的丧失市场,丧失用户对其的信任,失去发展的源动力,那么她很快就会消失在历史的洪流中。所以我可以断言,如果Linux还要保持其快速的发展,必须调整生产关系――即GPL公约对她的限制。如何调整好GPL公约和商业公司之间的利益,将是交给每一个Linux从业者最大的挑战。

上面那段话来自中科红旗软件公司副总裁白柯的文章《Linux的“原罪”》。关于GPL,这段时间在开源/自由软件社区也是一个热点话题,但谈论的焦点多数集中在如何对10多年没有更新的GPL 2.0版本进行修改以适合当前的发展形势,尤其是应付来自软件专利等知识产权法规的挑战等方面。从影响商业利益实现的角度看到改进GPL的需要,倒是比较新鲜,尤其当这段话来自于一个仰赖GPL产品维生的公司负责人的时候。

GPL(General Public License)是最常见的自由软件(free software)许可协议,可以称之为自由软件的基石。无数的自由软件在GPL的庇护下成长起来,许多软件开发者在发布自己的软件时也会不假思索地采用GPL。GPL最基本的要求之一就是发布软件二进制编码的同时,必须要发布源代码,所谓自由软件的“自由”二字包含了4种含义,而获得源代码是实现这些自由的前提。

GPL尽管已经广为接受,但围绕着它还存在一些争议。争议集中在GPL的“病毒”(viral)特性,也就是传染性。这里所说的“病毒”和“电脑病毒”没有任何联系,它的意思是这样的:如果软件A以GPL发布,软件B是软件A的衍生产品,使用了软件A的部分或全部源代码,那么软件B发布时就必须遵循GPL,否则就是违反了许可协议。这个过程,我们可以理解成GPL“感染”了软件A之后,通过源代码从软件A“传染”给了软件B。有人借此抨击GPL,说它不代表真正的自由,因为软件B是“被迫”采用GPL的。而依我看来这正是对自由的一种保障,它有效地避免了某些人用了GPL软件的成果却逃避回报自由软件社区的义务。相比之下BSD许可证更为宽松,它允许你用BSD许可的软件做几乎任何事情,不公开源代码也行,改头换面变成私有软件(proprietary software)也没人追究,这一点恐怕很对一些商人的口味。

古语云:“皮之不存,毛将焉附”。 照理说如果没有遵循GPL的Linux,红旗Linux也不会存在,那么红旗为什么不爽GPL?以我的揣度,无非一个“利”字。前几年,以红旗为代表的“国产”Linux厂商已经在开源/自由软件世界落下了一个违反GPL的坏名声,各厂商的惯常做法是只发布编译好的系统,源代码欠奉。对于这种做法有各种各样的冠冕堂皇的托词,但归根到底无非是为了保证自己的所谓技术优势,GPL暂时就放到脑后了。这种做法,无视自己占用了开源/自由软件社区无数志愿者的辛勤劳动的事实,是地地道道的只顾掠夺而没有丝毫回馈的流氓行径,更有甚者有人还恬不知耻地自称是什么“自主知识产权的国产操作系统”,视天下人如无物。

客观地说,近两年来,国内的Linux厂商在遵守GPL方面还是有一些进步。仍以红旗为例,先是没有源代码,然后是只提供旧版本的源代码,现在基本能同步提供最新版本的源代码了。我不知道它是真的有所觉悟还是迫于开源世界舆论压力的权宜之计,因此白副总裁的文章,让我想起了红旗的前科而不自觉地提高了警惕。白副总裁说得比较隐晦,但我总觉得他的逻辑是:红旗就是一个默默付出的商业公司,红旗对于推广Linux居功至伟,所以理应取得相应的商业利益。可惜,GPL阻止了红旗像微软那样以封闭源代码的方式成功,所以必须调整GPL。果真如此,倒也没什么新鲜,不过是让我们更加认清了商人逐利的本性。

不要误解,我并不是说遵循GPL就要排斥商业利益,GPL本身也并不排斥任何人用自由软件获取金钱利益,只不过GPL内在的逻辑使得人们不能像私有软件那样把盈利建立在封闭源代码的机制之上。通过GPL软件获利,需要更多的想象力和创造力,成功的例子也不是没有,但绝不是仅仅打着“国产”的旗帜、依靠政府采购就能做到的。你可以说我站着说话不腰疼,但我给红旗的建议是先别想着从开源社区得到什么,想想自己能给开源社区奉献什么,有了一种共享和回馈的良性循环,或许能发现GPL不仅是一种束缚,更多的是一种保护。

假如红旗真的非常不爽GPL,大可以基于BSD系列开发出一种类似“麒麟”那样的操作系统,好处是不必受GPL的约束。反正按照红旗最大限度模仿Windows界面的策略,那华丽界面后面到底是Linux还是BSD,红旗的用户根本无需关心。


自由,开源与私有软件

Posted: 十二月 14th, 2005 | Author: | Filed under: 文章 | Tags: , , | No Comments »

尽管自由(free)/开源(open source)软件越来越为人所熟知和接受,但是许多人对于它们之间的区别并不清楚。还有很多人把与它们相对的另一个概念──私有软件 (proprietary software)错误地等同于商业软件(business software)。Free software Magazine第9期上Tom Chance的一篇文章Free, open or proprietary?,从哲学的角度分析了这三种软件许可证的区别。

私 有软件的目标在于“生产好的软件”,技术上是用版权来保护软件免受外来干扰,并保护软件作者的经济利益。虽然很多私有软件的支持者宣称版权的作用在于给予 软件作者以回报以及鼓励创造能力,但是取得回报这一点并不是私有软件与自由/开源软件的本质区别,因为很多私有软件是免费发布的(freeware),而 自由/开源软件也并不禁止取得回报。私有软件与自由/开源的本质区别在于它的支持者认为软件的高质量来源于封闭源代码,只允许被授权人士接触源代码。

开源软件的目标也是“生产好的软件”,但是采用的是与私有软件不同的解决途径。开源软件组织认为当程序员能够阅读、修改和传播源代码时,软件本身就得到了 进化,人们能够改进它、改造它、清除bug,而这些都能够比封闭源代码的开发方式更快地实现。开源软件倡导不受限制地使用、修改和发布软件,只是因为这样 能够产生更好的软件。

可见,开源软件与私有软件在目标上是一致的,只是实现的方式大相径庭。

自由软件的目标是创造能够实现某种社会自由的好软件。自由软件的目标主要出于伦理上的考虑,而不是从实用上考虑,软件是作为实现伦理目标的载体,这是私有软件和开源软件都没有涉及的内容。根据自由软件基金会的定义,自由软件要达成4种自由:

  • 为任何目的而运行软件的自由;
  • 研究其工作原理、修改之以符合自己需要的自由,接触源代码是实现这种自由的前提;
  • 发布软件的拷贝以帮助他人的自由;
  • 改进软件、向公众发布以使社会受益的自由,接触源代码是实现这种自由的前提。

因此,尽管看上去开源软件和自由软件都采用同样的开发方式,甚至共享许多开发人员,但是它们的目标是截然不同的。自由软件运动从本质上说是政治运动,着眼 点在于“自由”,而开源软件是从实用的角度将自由软件运动的载体当作了目标。为了实现商业推广的目的,开源软件刻意避开了自由软件的政治意味,转而把着眼点放在软件本身,强调软件实用性的目标。正是在这一点上,自由软件运动的领袖Richard Stallman(RMS)与开源软件运动的创始人Eric Raymond(ESR)产生了根本性的分歧,从而分道扬镳。


乱砖砸向《研究报告》

Posted: 十一月 14th, 2005 | Author: | Filed under: 文章 | Tags: , , | No Comments »

前几天,在Donews上面看到中国软件行业协会发布的《有关开放源代码软件与商业软件知识产权的研究报告》(以下 简称《研究报告》),众多网络媒体争相转载时都采用了吸引眼球的标题:“开源软件不值得政府扶持”,不同的声音只有倪光南的《政府放弃支持开源软件就是放任垄断》。IT时代 周刊的文章反映了软件业界对报告出台背景、内容和结论的一些质疑,但是我google的结果,没有发现开源社 区的反应。

从Donews发表的报告摘要,我明确地感觉到它所代表的是软件业的垄断巨头的利益,采用的是它们一以贯之的散布开源软 件FUD的手法。当然,报告中指出的目前国内开源软件厂商那些不争气的所作所为还是客观准确的,但是如果仅仅从它们身上就得出开源软件不值得支持的结论未 免太过于匆忙了。

作为一个开源软件的积极使用者,我认为有必要向《研究报告》扔几块砖头,方式是先引用报告中的相关内容立一个靶子而后拍之。正如倪院士所指出的,开源社 区把开源软件的对立面称为专有或私有软件,但在下面的行文中,为了方便还是沿用报告中“商业软件”的说法。

从事开源软件业务的企业的商业模式或盈利模式长期以来是开源软件业面临的难题。由于开源软件最重要的通用公共许可协 议 (General Public License ,以下简称GPL许可证协议)规定,Linux等开源软件不能像商业软件那样收费,只能收复制成本和服务费,这大大约束了开源软件企业的盈利。

这是对GPL的一种曲解。实际上,GPL的文本 里面并没有限定软件的收费,它限定的是发布人在提供源代码时 只能收取“实际发布源代码所需成本的费用”(for a charge no more than your cost of physically performing source distribution),这是为了保证使用者获取源代码的权利。尽管对于软件本身,初始发布者可以开出任何价格,比如说一个天价,但是一旦有人买了这 个软件的使用许可,购买者就享有了不受限制地使用、重新发布和修改软件的权利。而一旦每个用户都具备这种权利时,任何天价就都不可能成立了。所以说, GPL这样的协议并不是规定软件能不能收费、收多少钱,而是其内在的逻辑关系决定了采用这种许可证的软件不可能就软件本身收取很高的费用,这就是为什么很 多以GPL或其它开源许可证协议授权的软件实际上可以免费获取的原因所在。

确实,在开源的许可证协议下,软件企业很难像销售专有软件那样盈利,但是也并不是没有商业上成功的例子。作为类比,绝大多数的互联网应用也是免费的,但是 一波波的互联网热潮也造就了许许多多成功的商业公司,关键就在于如何找到适合自己的盈利模式。对于开源软件,到底哪种模式好我不知道,但是像国内那些企业 一味等着政府扶持显然不可能长久下去,反而授人以柄,败坏了开源软件的名声。

软件的费用不单单是直接的许可费,还应 当考虑长期支持的维护和维护需求,有些低廉的前期费用,往往导致较高的后期维护等费用,特别是原有信息系统的改造和人员的培训等意味着巨大的开支。

这 里说的实际上就是个TCO的问题。更改现行系统必然会导致一定的转换成本,这个成本就是既得利益者用来阻挡后来者的壁垒,就算是从开源软件转换到商业软件 也需要考虑转换成本。报告在这里的立论显然是在暗示开源软件虽然免费,但是转换和维护成本比商业软件高。关于开源软件和商业软件的TCO孰高孰低,是近 年来很热门的话题,不同的研究机构有不同的结论,且与研究背后的赞助者属于哪个阵营呈紧密相关性, 因此这个问题并没有定论。在很多人的印象中,掌握开源软件需要更高的培训成本,这其中既有开源软件的易用性较差的原因,也有培训资源不足的因素。书店里面 铺天盖地的商业软件的使用教程和偏居一隅的开源软件书籍形成了鲜明对比,这两者之间社会资源投入的差异,往往被计算TCO的人们所忽略。

从另一个角度来分析,开源软件又可归属于版权法中的演绎作品。但是在GPL等开源软件许可证的约束下,开源软件的众多演绎作品的开发者除了可以在其 演绎作品上表明身份之外,没有了任何支配权。从这个意义上来说,除了开源软件初始许可证颁发者之外,任何其他参与开源软件开发的人都不是真正意义下版权所 有者。

如果原始许可证颁布者单方面撤销或者修改许可证,那么后续的开发者,无论是作为共同开发者也好,还是作为演绎作品的作者也好,将处于十分尴尬的地位。

俗话说“嫁出去的孩子泼出去的水”。我的理解是,一旦软件以开源协议发布,并且融合进后续开发者的劳动成果,那么初始发行者也不能再称为完全的版权 所有者,他即使想撤消许可证,也只能是针对他自己的那部分代码,而且也不能追溯以往。软件完全可以以他撤消许可证之前的版本为基础在开源社区中继续演化。 这种事情并不是没有先例。开发x86机器上使用的X Window系统的Xfree86组织在2004年1月修改了其产品的许可证,结果多数Linux厂商认为新的许可证与其它的开源许可证不兼 容,纷纷放弃了Xfree86的产品,而转向了以其更改许可证前的最后一个版本为基础开发的X.Org版本。“死了张屠户,就吃混毛猪?”,开源社区最不可能发生的就是这种事。

一旦SCO指控IBM的违约事实成立,IBM对开源软件组织所做的代码贡献就失去了法律基础。Linux系统核心部 分的合法性将丧失。将直接波及全球的Linux用户。

对于这一观点的反驳可以参见上面。且不说SCO的所为越来越像四处乱咬的疯狗,就算IBM不幸真的败诉,我相信Linux社区 能很快剔除有问题的代码,找到替代的解决方案。尽管IBM这些商业公司支持Linux之后,Linux取得了加速发展,但不等于离开了IBM Linux就活不下去了,说到 底还是张屠户和混毛猪的关系。

发展的现实告诉我们,在软件业中针对各种的用户对象,不同的使用和服务的需求,商业软件和开源软件各有千秋,具有各自的优势和不足,完全取决于厂商和用户 的选择。目前两者不但共存于市场之中,而且又有某种彼此融合之势。开源软件的制作者越来越多的因他们的工作而获得报酬,而商业软件的制作者也开始公开源代码以接受公众的仔细审查。情况是在不断变化中的,两者也是开始相互转化。

面对这种情况,我们的政策一定要倾向于开源软件是没有意义的。

这里是明显的本末倒置。从追逐最大利益的角度出发,所有的商业软件公司都没有开放源代码的内在动力。之所以现在出现了所谓“融 合”的趋势,完全是因为开源软件在市场中与之竞争的结果。假如没有开源软件的强有力冲击,很难想象任何一家软件企业会主动把源代码拿出来接受公众的审查。

《研究报告》在最后的结论中:“片面地过度地宣扬‘开源软件’的‘免费’和‘自由使用’,迎合了社会上轻视和低估软件价值的错误思潮,由于其违背了市场经 济的基本规律,不利于软件产业的发展,不利于我国信息化建设健康持续的发展。”终于说出了大实话,报告之所以要反对扶持和推广开源软件,就是因为开源软件 在根本上动摇了商业软件的存在基础,使得商业软件开发商在封闭源代码基础上建立起来的商业模式失去了竞争力。由此,尽管自己强调客观、中立,但报告究竟代 表了什么人的立场已经不言而喻了。