越文丹 2018-09-18发布 阅读:1266次 ⋅ OSS  开源软件文集  开源定义   ⋅

Bruce Perens 著

雷红旗 译

洪峰 校

典型的计算机用户手上会有很多几年前购买的,但现在已不再使用的计算机软件。他的计算机可能已经升级了或品牌改变了。原有的软件不能再用了;也可能他的那些软件本身已经过时了,也可能这些软件无法胜任他目前要做的工作;可能他有两台或多台计算机,但不想为此买两套相同的软件,等哼。总之,多年前购买的软件现在无法再用,这种情况难道真的无法避免吗?

你是否有权在需要时对自己的软件进行自由的升级?当你由使用苹果机转而使用PC机,能否自由地使软件版本随之转换?当你的软件已不能胜任工作或功能不强了,你是愿意对它进行更新升级,还是勉强凑合着用?当你的软件仍能正常使用,而软件制造商已经倒闭了,你该怎么办?你的软件能否既可在你单位的工作站上使用,也可在你的便携电脑和家里的桌面电脑上使用,而不是仅能在一台计算机上使用?上述种种要求都是开源软件赋予你的权力。

“开源软件”是计算机用户手中的一张权力清单。它确定了开源软件许可证授予用户的权限。由于开源软件的用户拥有他们早应得到的这些使软件增值的权力,使得非开源软件程序很难与开源软件程序进行竞争。像Linux操作系统和Netscape浏览器这些开源软件,已经取代了其他有严格限制许可证的软件,成为非常流行的软件。

开源软件的用户,通常是几家小型的合作公司,甚至是为使软件适应自己的需要,而对软件进行改进的个人。使用开源软件对于公司的快速发展是有利的。

像研制Linux这种软件的志愿者是存在的。而软件公司由于开源软件的权力通常只能是合作型的。一般的计算机程序开发人员会认为,投入很大的精力去改进一个软件,而当他将这一改进的软件提供给别的使用者时却得不到任何回报,这样做是愚蠢的。但另一方面,由于开源软件同时也授予他们许多的权力,他们又会感到一种满足和平衡。这些权力是:

1. 制作程序拷贝,并且可以发行这些拷贝的权力。

2. 获得修改程序必不可少的源代码的权力。

3. 对程序进行改进的权力。

这些权力对于软件的贡献者是非常重要的。因为它保证了所有的软件贡献人员处于同一水平线上。任何一个愿意参加此项工作的人都可以出售一套开源软件,因此软件的售价很低,更新换代的速度也非常快。只要投入了时间在开源软件的建设上都是对开源软件的支持。程序开发人员可以对开源软件程序进行剪接加工以满足某类顾客特殊的需要。在做这些工作时程序开发人员不需要强迫地支付许可证费或其它费用。

在全球的共产主义运动面临困境的今天,这种带有某种共产主义色彩的营销战略成功的原因在于,知识经济产品根本不同于其他类型的产品。复制一个象计算机程序这样的信息产品的成本是非常低的。电能的消耗不足一美分,使用的设备也很少。相比之下,你必须用一磅的面粉才能复制出相同重量的面包来。

历史

自由软件的概念由来已久。计算机是做为计算工具首次出现在大学校园的。软件自由地相互交换。程序开发人员通过实地的编程运算来取得报酬,而不是设计程序本身。只是到了后来,当计算机进入了商业领域,程序开发人员才开始通过限制他们研制的软件的使用权限,并对每一个拷贝收费来保护自身的利益。自从1984年Richard Stallman成立自由软件基金会并发起GNU工程以来,自由软件做为一种政治性的观点已经深入人心。

Stallman的理论基础是计算机用户应当享有更多的自由,而且非常感激这些自由。他列出了一些他认为所有的计算机用户都应享有的权力,并且将其编入了GNU General Public许可证(GPL)。Stallman一语双关地将他的许可证命名为“Copyleft”(版权所无),因为他授予了用户合法地进行拷贝的权力。Stallman本人开发了一些创新的自由软件,例如GNU C编译器,以及GNU Emacs,一个被大家当做宗教圣物而广受欢迎的编辑器。他的开创性的工作鼓舞激励了许多人加盟到GPL麾下为自由软件效力。开源软件包含了许多Stallman的思想,甚至可以说是他的工作的派生物。

开源软件首次作为政策性文件出现在Debian GNU/Linux发行版上。Debian是Linux系统的早期版本,直到今天仍很流行。它完全建立在自由软件基础上。由于Debian在定义什么是自由上存在一些问题,后来其他的软件许可证再也没有将自由软件的政策定义的很明确。作为Debian项目的主管,1997年7月我通过起草“Debian Social Contract”和“Debian Free Software Guidelines”来解决存在的问题。我将许多Debian软件开发者的批评和建议体现在文件中,Debian Social Contract规定了Debian系统完全建立在自由软件的基础上;Free Software Guidelines则通过将指南与软件许可证比较,很容易地划分自由软件与非自由软件。

Debian的指南尤其受到像Linux开发人员这样的自由软件团体的欢迎。当时他们正在忙于开发第一个实际的自由软件操作系统来实现自由软件的革命。当Netscape决定使其浏览器成为一种自由软件产品时,他们与Eric Raymond进行了接触。Raymand是自由软件的Margaret Meade,他写过一些人类学的作品来解释自由软件现象和由此产生的文化。这类作品是首次出现,使得自由软件这种以前对于普通大众来说鲜为人知的现象成为一个热点问题。Netscape的管理者对于Raymand的短文《教堂和集市》印象很深,文章讲述的是分文不取的自由软件志愿者,编写出一个非常优秀的自由软件的故事。Netscape向他请教咨询。在不对外公开的前提下,他们设计了一个自由软件许可证。Raymand力争让Netscape的许可证按照Debian指南来做,使软件成为一个严格的自由软件。

我与Raymand是在一个电脑黑客大会上偶然相遇的,那是一种只有被邀请者参加的聚会,与会者都是一些有创新精神、非传统的程序开发人员。此前我们两人已在几个项目上通过Email进行过联络。他在1997年2月就关于开源软件的思想与我联系。Raymond担心保守些的商业界人士会被Stallman的自由主义的高调吓跑,而恰恰这种类型的人在自由职业的程序设计人员中占大多数。他认为尽管Linux在研究领域非常繁荣,但这仍会妨碍Linux在商业领域的发展。当Linux产业仍处于初创阶段时,他与一些商业界人士相聚过,一起探讨如何将自由软件的思想推销给打领带的商业界人士。VA Research的Larry Augustin和Sam Ockman(后者后来离开VA,创立了Penguin Computing)还有其他一些我不认识的人参加了讨论。

在开源软件思想诞生前的几个月,我在思考开源硬件的思想。它是一个与开源软件很相似的概念,不同之处在于它适用于硬件设备及其接口,而不是软件程序。开源硬件至今未能像开源软件这样成功,但它仍在进展着。你若感兴趣可从以下网址获得有关信息:http://www.openhardware.org/。

Raymond认为Debian Free Software Guidelines是一个正确定义开源软件的文件,但它需要一个更通俗的名称,再除去一些Debian的专用术语。我根据指南改编成“开源软件定义”,我过去曾为Debian组织过一个叫Software in the Public Interest的团体。我为开源软件注册了商标,这样就可以将使用与定义结合起来。在Raymond同意下,我注册了认证标志,一种可应用在其他人的开源软件产品上的特殊形式的商标。一个月后,我清醒地意识到Software in the Public Interest不是开源软件商标的最佳归宿。于是我将商标所有权转给了Raymond。于是我与Raymond组建了Open Source Initiative。它是一个专门管理开源软件运动及其认证标志的组织。目前,这一组织由从知名的自由软件贡献者中挑选出的6人组成的班子管理,将来准备扩充到10人。

开源软件在其概念产生之初就遇到了许多的批评。甚至包括已经接受了自由软件思想的Linux阵营中的人。许多人指出在知识经济界已经在使用的“Open Source”一词,另一些人则指出“Open”一词已经使用过滥。许多人宁愿选择已经众所周知的“Free Software”一词。而我则认为与“Open”一词的过度使用相比、英文“Free”的一词双意更为糟糕,既有人身自由的含义,又有商业价格上免费的含义。而且价格上的免费一词在计算机和软件界都已经使用过滥了。Richard Stallman后来以开源运动对自由的强调不够为由表示反对,而实际上是开源软件已经变得非常梳行,他的自由软件创始人的角色,以及他的自由软件基金会,都已渐渐被人遗忘。他报怨自己已成为历史的记录了。更糟糕的是软件产业界的人士有意将Raymond与Stallman进行对比,似乎他们两人不是用不同的方法解诀相同的一个问题,而是为不同的哲学思想而辩沦。我请Stallman与Raymond在Linux Expo和Open Source Expo上彼此辩论大概使局面变得更坏了。现在人们习以为常地将他们两人看成是通过E-mail进行辩论,从不旨在于出版,只是以一种每日在线沙龙的面貌出现的辩论对手的角色。有鉴于此,我建议Raymond将两人辩论趋向缓和,以至于他再也不愿进入了。

在开源软件定义一文写作过程中,已有一大批的产品适应它的要求。问题是与之不适应的产品也仍然受到用户喜爱。

KDE、Qt和Troll Tech

KDE、Qt和Troll Tech三者在这篇文章里是相关连的。KDE和Troll Tech曾试图将一非开源产品Qt应用在Linux的基础构造上,但遇到了意想不到的抵制。公众的报怨和用一个完全开源软件取而代之的威胁最终使Troll Tech确定转向完全开源软件许可证。这是一个极好的例子,说明如果Troll Tech要使它的产品获得成功,就要使它的许可证顺应社会热烈接受的开源软件的定义。

KDE第一个针对Linux推出了自由图形桌面环境。KDE的应用程序就是在GPL之下的KDE本身。但它依赖于Troll Tech拥有所有权的图形库Qt。Qt的许可证条款中禁止对软件进行更改,或使用任何不同于老的X视窗系统的显示件。如果使用的话要交1500美元的开发商许可证。Troll Tech为微软和Macintosh提供了多个版本的Qt,这已成为它的主要财源。这一针对X视窗系统的伪自由软件许可证,是要将Linux开发者的奋斗目标引向昂贵的Windows和Mac上。

尽管Qt许可证存在的问题很清楚,但由于人们对Linux的图形桌面寄予厚望,以至于许多用户宁愿容忍Qt的非开源软件的特征。开源软件的发起者对KDE反感,是因为他们已察觉到KDE开发者有意想模糊自由软件的定义,以便能包含像Qt这样的部分开源软件。尽管没有哪个可运行的版本不依赖于非开源的图形库,KDE开发者仍坚持他们的程序是开源的。我和其他人则主张KDE的应用程序是包含非开源软件的部分开源软件。必须在Qt有了一个开源软件版本后,KDE才可能被认可为开源软件。

KDE开发者试图通过与Troll Tech谈判,达成一个KDE Free Qt Foundation协议,来部分地解决这一问题。具体来说,就是由Troll和KDE共同控制Qt自由版的发行,而Troll Tech发放的Qt是基于当其被收购或停业时可申诉的开源许可证。

另一团体启动了GNOME工程,它是完全开源的,是KDE的竞争对手,目标是提供更高的特性和复杂程度。还有另一个独立的团体启动了Harmony项目,它也是完全开源的,与Qt几乎雷同,支持KDE。面对着GNOME跃跃欲试和Harmony也将可能变得有用武之地,Troll Tech意识到如果Qt的许可证再不改变,将不会在Linux的市场上取得成功。Troll Tech最终为Qt发放了完全开源的许可证,平息了冲突,打消了Harmony工程的动机。GNOME工程仍在继续,现在的目标是在特性和复杂程序上超过KDE成为最好的,而不单单是在许可证上。

Troll Tech在将要发放新的开源软件许可证之前,他们以在正式宣布之前保密为条件,给了我一个副本供我审核。出于与KDE团体讲和的愿望和好功心理,我提前8小时在KDE的公告板上宣布了这一许可证。这一消息当即被Slashdot和其他的在线新闻杂志转载了,使我懊悔不已。

Troll Tech的新许可证的显著一点是它利用了开源软件定义的一个漏洞。允许在对修补文件的处理上与其他的软件不同。我会在将来对开源软件定义修订时指出这一漏洞。但新的文本不应因此将Qt排斥在开源软件之外。

在此文写作时,开源软件的拥护者正成指数地增长。最近IBM和Ericsson(爱立信)的加盟是头版新闻。两个Linux的经销商Yggdrasil和Debian,正在发行完整的Linux系统,其中包括许多完全开源软件的应用程序。其他还有像Red Hat等,也都非常接近。随着GNOME系统的完成,一个与Microsoft NT形成强有力竞争的开源软件——GUI桌面办公系统将会逐渐被人们认识。

开源软件定义分析

在这一节里,我将展示开源软件定义的全文,评论部分为楷体。在以下网址还可查阅到开源软件定义的权威版本http://www.opensource.org/osd.html。

有学者已指出了开源软件定义中一些小的模糊不清之处。考虑到它诞生刚一年多,也为了让大家感到它的稳定,我暂时不准备对它进行修订。将来会有轻微的文字上的改动,但很少有内容上实质性的改动。

开源软件定义(1.0版)

开源不仅仅表示开放程序源代码。从发行角度定义的开源软件必须符合如下条件:

应注意开源软件定义不是软件许可证本身。它是详述在软件许可证中满足了哪些许诺,才可以说明该软件是开源软件。开源软件定义不期望成为一个法律文件。为明确软件许可证中开源软件的内涵,如同Linux Documentation Project这样的许可证建议稿,我打算写一个更为严格的版本,以便与那样的要求相适应。

作为开源软件,下列术语必须全部的,而且针对所有情况都适用。例如,它们不但适用于初始版本的程序,而且也同样适用于该程序的派生版本。只适用于一些版本而不适用于其它版本,或者只在某些时期适用都是不充分的。在经历了一些对开源软件定义特别天真的解稀之后,我试图加上一句:这意味着你!

1. 自由再发行

许可证不能限制任何团体销售或赠送软件,软件可以是几个不同来源的程序集成后的软件发行版中的其中一个原件。许可证不能要求对这样的销售收取许可证费或其它费用。

这意味着你可以随意制作多少个软件拷贝,还可以出售或者赠送这些拷贝。你不需要为此向任何人支付特权费。

“几个不同来源的程序集成后的发行版软件”是为了与Artistic许可证中的一个漏洞相适应。Artistic许可证在我看来是一个草率的许可证。它当初是为Perl软件设计的。目前,几乎所有的使用Artistic许可证的软件同时也在使用GPL,因此这一条款已不再需要。也许会从将来的开源软件定义中删去。

2. 程序源代码

程序必须包含源代码。必须允许发行版在包含编译形式的同时包含程序源代码。当产品以某种形式发行时没有包含源代码,必须非常醒目地告知用户,如何通过Internet免费地下载源代码。源代码必须是以当程序员修改程序时优先选用的形式提供。故意地扰乱源代码是不允许的。以预处理程序或翻译器这样的中间形式作为源代码也是不允许的。

源代码是修复或调整程序时必不可少的前提条件。这里的意图是使源代码能与初始的程序及后来所有的派生程序一起发行。

3. 派生程序

许可证必须允许更改或派生程序。必须允许这些程序按与初始软件相同的许可证发行。

当你无法对软件进行维护时,它几乎是没用的。这种维护包括排除故障、安装到新系统中、进行改造等等。维护时就要对软件进行调整。这里的目的是任何类型的调整都应允许。必须允许调整后的软件在发行时可以使用与初始软件相同的许可证。反之并不要求派生软件的作者必须使用初始软件的许可证。只是这种选择对于他们是开放的。不同的许可证对这一问题的处理是不同的:BSD许可证允许私自进行调整,而GPL则不允许。

一些软件作者担心这一规定会使得缺乏道德的人更改作者的软件,给作者带来困扰。比如一些人故意让软件运行出错,使人们误认为软件作者是一个蹩脚的程序设计员。另一些人则担心软件会被修改后供罪犯使用,如同古希腊传说中的特洛伊木马似的破坏作用,或者被地方法律禁止的加密技术等。然而。所有这些行为都是刑事法所管辖的范因。通常对软件许可证的一个错误的理解就是它必须涉及每一件事。包括要写明“不要使用本软件从事犯罪活动。”没有一个许可证能超越民事法和刑事法规定的范围而有效存在。将许可证与所适用的法律割裂开来考虑问题,就如同将英文文件与英文词典割裂开来,使文件中的词没有一个具有确定的含义的想法一样愚蠢。

4. 作者源代码的完整性

只有当许可证允许在程序开发阶段,为了调整程序的目的将“修补文件”的发行版与源代码一起发行时,许可证才能限制源代码以更改后的形式发行。

一些作者担心别人将软件修改版与源代码一起发行,会使人误解这就是初始作者的程序。使初始作者很少得到应有的反馈。这使得他们更加坚定地要将用户更改后的程序与对于他们自己不禁止修改的初始程序区分开来。也有人认为如果在更改程序的发行时将源代码与修补文件分隔开不符合审美原则。尽管Linux的发行商Debian和Red Hat,对于他们所发行的程序所做的全部更改也都采取了这种作法。有些程序能自动地将修补并入主源之中,当选取一个源件包时这些程序可以自动地运行。因此,这一条款很少甚至不会引起麻烦。

这一条款提到了修补文件的情况,更改发生在程序开发阶段。这一漏洞被Qt公用许可证利用了,尽管许可证对修补文件少了限制,却与开源软件定义的第3节矛盾。有人建议在保持Qt作为开源软件的同时将这一漏洞删除掉。

许可证必须明确地允许按更改后的源代码所建立的程序的发行。许可证可以要求派生的程序使用与初始软件不同的名称或版本号。

这意味着像Netscape可以要求只有他们可以命名一个程序的版本是Netscape Navigator(tm),其余所有程序的自由版本只能叫Mozilla或其他的名字。

5. 无个人或团体歧视

许可证不能有针对任何个人或团体的歧视。

由加州大学Berkeley分校的Ragents发放的一个许可证中,禁止南非的警察使用一种电路设计程序。这在种族隔离时期是值得赞赏的行为,今天已引不起多少共鸣了。一些人当需要使用该软件时,仍然受到那个许可证的困扰。而软件的派生版也得随之加上同样的限制。开源软件不允许有这样的规定,不管这种意图多么值得赞赏。

6. 无领域歧视

许可证不能限制在专门奋斗领域内的任何人使用该程序。例如不能限制程序应用于商业领域,或者应用于遗传研究。

你的软件必须平等地既可应用于堕胎论诊所,又可应用于一个反堕胎组织。政治上的争论是国会上讨论的事,而不是在软件许可证上。令人生气的是一些人指责这样做缺少差别。

7. 许可证发行

伴随程序所具有权力必须适用于所有的程序分销商,而不需要这些团体之间再附加许可证签字盖章。

许可证必须是自动生效的,不需要签字盖章。不幸的是。在美国还没有一个好的法庭证实,当许可证由第二方转给第三方时可以无须签字的权力。争论的焦点在于是否将许可证放入合同法中考虑。也有人认为应该归版权法,那里有更多的无签字许可证的先例。一个好的法庭证实过几年就会出现。这将带来这类许可证变得流行和开源软件的繁荣景象。

8. 许可证不能特指某个产品

如果程序是某个特殊的软件发行版中的一部分,伴随该程序所具有的权力不能只依赖于这一发行版。如果程序是从那一发行版中摘录出来的,使用或发行时用的都是那个程序的许可证,分销程序的所有团体都应拥有与初始软件版所允许的所有权力。

这意味着不能限制裁认定为开源软件的某个产品,只对某一个特殊的,如Linux发行版的商标是自由的。如果你将该软件从软件发行版中分离出来的话,必须保持原有的所有自由。

9. 许可证不能排斥其它软件

许可证不能限制随该许可证软件一起发行的其它软件。例如,许可证不能要求所有与之一起发行的其它软件都是开源软件。

Ghostscript是一个Postscript的赋形程序。它的一个版本许可证要求发行该软件的媒体内只能包含自由软件。开源软件许可证不允许这样。幸运的是,Ghostscript的作者在发行的另一个老一些的程序版本时,使用的是完全的开源软件许可证。

注意派生和集成两个词的不同。派生的含义是确实地将另一程序的一部分融合到程序里来。集成是你将两个独立的程序装入同一张CD-ROM盘中。这一节涉及的是集成,不是派生。第4节涉及的是派生。

10. 许可证实例

GNU GPL、BSD、X Consortiun和Artistic许可证都是我们认为符合开源软件定义的许可证。MPL也是一样。

如果以上任何一个许可证变成了非开源的,那会给我们带来麻烦,我们就不得不立即再发行一个开源定义的版本。这确实属于解释文本的内容,不属于开源软件定义本身。

软件许可证及其与开源软件符合程度分析

要想准确理解开源软件的定义,有必要分析一些与开源软件相关的通用许可证。

公共领域

通常一个错误的概念就是自由软件等于公共领域。产生这种误解的原因很简单:由于自由软件或开源软件的思想对一般大众来说是模糊不清的,因此便错误地用他们所理解的最相近的概念——公共领域来描述这类程序。然而这些程序是明确地含有版权的,而且受到许可证的保护。只是这类许可证给予了用户比以往更多的权力。

一个公用领域是它的作者已慎重地放弃了他所拥有版权的权力。虽然在许可证上不一定这么说,但公用领域已成了你的私有财产,当你需要时就可以随意使用。由于可以把它看作你的私有财产,你就可以在公共领域程序上做任何你想做的事。你甚至可以对它再发放许可证,去掉它原来的公共领域版本,或者删去原作者的名字,把它看成是你自己的作品。

如果你在一个公共领域程序上做了大量的工作,准备加上你自己的版权,重新发放许可证。例如,你不想有第三个团体,在对程序作适当更改后据为他有,你就可以对你的程序的版本使用GPL或类似的许可证。你更改前的原版本仍然是公共领域,但你的版本将在许可证的保护之下。这样当别人要使用这个程序或由它派生版本时就要特别注意了。

通过宣布版权,然后使用你自己的许可证,或者只简单地宣布“保留版权”,就可以很容易地将一个公共领域软件据为己有。

自由软件许可证概述

如果你有一个像Linux盘这样的自由软件集成,你可能会认为那盘上的软件是你的私人财产,这不是完全正确的。具有版权的程序,既使它有像GPL这样的开源软件许可证,仍是版权持有人的私人财产。程序许可证同意你具有某些权力,你还拥有在版权战里“公平使用”定义之下的其它权力。

作者对一个程序不是只能发放一个许可证,这点是很重要的。你可使程序具有GPL许可证,同时又出售这一程序的商业化的、非开源软件许可证的版本。这正是许多人都在采用的正确战略。他们使程序成为开源软件,同时仍能从软件销售上得到回报。不想要开源软件许可证的用户就需要为其特权支付费用,这为软件作者提供了一个财源。

下面所要讨论的许可证都有一个共同的特征,每个许可证都声明不承担担保。目的是保护软件所有者免于承担与软件相关联的责任。由于通常程序都是在不支付任何成本的情况下拿走的,作者并未从程序上得到足够的回报,用以建立责任保险和承担法律费用,因此这样的要求也是合乎情理的。

如果软件作者由于疏忽失去了声明不承担担保的权力,进而发现自己由于所开发的程序运行中出现问题而受到起诉,那他们将不再为这个世界贡献自由软件了。因此作为用户帮助作者保护这项权力,这样做对用户是有利的。

GNU General Public许可证

附录二给出了GPL的全文。GPL既是一个软件许可证,又是一份政治宣言。其中许多的文字是用以解释隐含于许可证之后的基本原理。这个政治对话因此遭到一些人的厌烦。这在某种程度上也是人们又写了其他一些自由软件许可证的原因。尽管如此,由于GPL是在一些法律教授的协助下完成的,因而要比其他的同类许可证写的好得多。我强烈呼吁:如果有可能,应尽量采用GPL,或者它的软件库变本LGPL。如果你要选择别的许可证,或是完全重写,就必须十分肯定你的原因。要意识到另外重写许可证绝不是件轻松的事。存在缺陷的许可证带来的不期望的复杂后果,往往给软件使用者带来数十年的负担。

GPL的文本不是GPL之下的程序自身。它的许可证很简单:准许任何人复制和发行未经任何改动的许可证文本的拷贝。但对它进行改动是不允许的。开源软件许可证的文本通常不是开源软件本身,这点很重要。显然,如果任何人都可以修改许可证,那许可证也就不能提供任何保护了。

GPL的条款符合开源软件的定义。GPL并不需要开源软件定义中的第四段:“作者源代码的完整性”中的任何条款。

GPL不允许私自对程序进行更改。更改后的程序必须在GPL之下发行。当然,一个GPL化程序的作者愿意接受别人的改进,包括商业公司为满足自己的需要而进行的更改。

GPL不允许将GPL化的程序合并进到一个所有权程序中。GPL对所有权程序的定义是:许可证中所赋予的权力不如GPL中的任何一个程序。

GPL也存在一些漏洞。它允许适用于不完全都是开源软件的程序中。软件库通常是与编译器或你正在使用的操作系统一起发行的。它可能与一个已经GPL化的软件相联系,结果成为一个部分自由的程序。版权所有者通常就是程序的作者,他将GPL用于程序上而有权违反他自己的许可证。这就是在Troll Tech使Qt使用开源软件许可证之前,KDE的作者发行含有Qt的程序时所用的手法。但是,这一权力不再扩展到发行程序的第三者,他们必须遵守许可证中的所有条款,包括版权所有者违反的那一条款。这样在分销包含Qt的GPL化的程序时就出现了问题。KDE的开发者似乎准备通过用LGPL许可证代替GPL来解决这一问题。

GPL政治化的修辞使一些人感到厌倦。一些人为他们的软件选择了不如GPL合适的许可证取而代之,单单就是为了避开Richard Stallman的思想,也不想再在自己的软件包里看到它们。

GNU Library General Public许可证

LGPL是GPL的派生物。它是为软件库而设计的。与GPL不同,LGPL化的程序可以合并到专有版权程序中。与Linux系统一起提供的C语言库就是LGPL化软件的应用实例。它可被用于建立一个专有版权程序,否则的话Linux就只对自由软件作者有用。

LGPL化的程序可以在任何时候转换成GPL化程序。一旦做出了这种转换,你就不能再转换回LGPL,或由它派生的LGPL化的程序。

X、BSD和Apache许可证

X许可证,以及相关的BSD(Berkeley System Distribution)和lApache许可证与GPL和LGPL许可证有很大区别。你可以在拥有这类许可证的软件上做任何事。这是因为当初具有X和BSD许可证的软件是由美国政府投资开发的。由于美国公民已经通过税收形式间接地向这些软件付了费,因而他们就被允许随意使用这些软件。

一个从GPL得不到的最重要的许诺,是你可以私自对X许可证软件进行更改。也就是说,你可以得到有X许可证的程序源代码,更改后可以只销售程序的二进制版本,而不需要同时发行经你更改后的程序源代码,也不需要对更改后的程序使用X许可证。尽管如此。它仍然是一个开源软件,因为开源软件的定义并不要求更改后的程序必须使用原软件的许可证。

许多开发人员采用了X许可证和l它的变本,包括BSD和Apache网络服务器项目。BSD许可证的一个令人厌烦的特征是它的条款中要求每当你在广告中谈及一个BSD许可证软件的特征时,必须同时提及(通常在脚注中)软件是在加州大学开发的。对于像Linux系统的发行版这样一些大型项目,清楚地掌握其中哪些程序是有BSD许可证的,还要记住每当在广告中谈及这些软件时都要提及那个大学,这对于商业界人士是件头痛的事。在本文写作时,Debian GNU/Linux的发行版包含了2500多个软件。假如其中只有一小部分是有BSD许可证的,在做像Debian这样的Linux系统的广告时可能就要有好多页的脚注!然而,X Consortium许可证没有这条规定。如果你是考虑使用BSD风格的许可证,那就用X许可证吧。

Artistic许可证

尽管Artistic许可证当初是为Perl设计的,但它后来也被其他软件所采用。在我看来它是一个草率的许可证。它规定了一些要求,却又存在漏洞,使你可以轻易地避开这些要求。因此现在几乎所有的Artistic许可证,都同时有Artistic和GPL两个许可证以供选择。

Artistic许可证中第5节中禁止销售该软件,但允许两个以上软件集成后发行。因此,如果你将Artistic许可证的程序与一个只有5行内容的hello一类问候语程序合在一起,你就可以捆绑销售了。Artistic许可证的这一特征就是在开源软件定义中第一段“aggregate”集成一词漏洞的原因。由于Artistic昨可证存在的缺陷,我们正考虑删去这一漏洞。这就会使Artistic变成非开源许可证。这对于我们来说不是轻松的一步。也许要经过一年多的考虑和争论后才能决定。

Artistic许可证允许对软件进行自由更改,但在第7节中又存在漏洞,允许你可以私自更改,或者甚至将软件的一部分放入公共领域中。

Netscape Public许可证和Mozilla Public许可证

NPL是当Netscape准备生产他们的Netscape浏览器开源软件时开发的。确切地说,Mozilla才是它的开源软件版本。Netscape为他们自己的产品保留了“Navigator”商标。在这一许可证的开发阶段,Eric Raymond和我作为免费顾问参加了工作。我曾试图说服Netscape使用GPL,但没有成功。当他们的市场份额下降时,我帮助他们设计了符合开源软件定义的许可证。

NPL的一个重要特征是它给予Netscape专门的特权,而不包括其他任何人。当你对他们的软件进行更改后,Netscape有对这些更改重新发放许可证的特权。他们可将这些更改据为己有,然后再进行改进,但却拒绝给你最后结果。这一条款在当时是必要的,因为当Netscape准备加入开源软件时,它与别的公司已经有合同,承诺在非开源软件许可证下向他们提供Navigator。

Netscape又开发了Mozilla Public许可证,即MPL来解决这一问题。MPL与NPL很相似,但不包含允许Netscape对别人的修改再发放许可证的内容。

NPL和MPL都允许私自对软件更改。

许多公司都采用MPL的变本作为他们程序的许可证。这样做是不幸的。因为NPL是在当Netscape面临特殊的商业环境时设计的,对别的软件不是非常适合的。Netscape和Moiill的许可证需要保留,别的软件则应采用GPL或X许可证。

选择许可证

如果可以从下表中选择一个许可证的话,就不要另外新写一个许可证。增加许多各不相同的和各不相容的许可证将会损害开源软件,这样会产生一个程序的片段无法应用到另一个不相容许可证程序之中的情况。

尽量避免使用Artistic许可证,除非你希望认真仔细地研究它,并且找出它的漏桐,然后作出以下决定:

1. 你希望别人能够私自对软件进行更改吗?如果你要求别人将更改后的程序源代码反馈给你,就选择像GPL或LGPL这样满足你要求的许可证。如果你不介意别人私自更改程序,就选择像X或Apache这样的允许私自更改的许可证。

2. 你是否允许一些人将你的软件合并到他们自己的所有权软件中?如果允许就选择LGPL,它明确表示允许这样做,但不允许对你的源代码私自进行更改。也可以选择X或Apache许可证,它们允许私自更改源代码。

3. 你希望别人能买到你的有商业许可证的、不是开源软件的版本吗?如果希望这样,为你的程序发放两个许可证。建议选择GPL做为开源软件许可证。可以从Nolo Press出版社出版的Copyright Your Software等一类的图书中找到适合于你的商业许可证。

4. 你希望所有使用你软件的人都为这一特权付费吗?如果希望这样,就不要选择开源软件。如果你满足于有一部分人向你付费就行了,你就可以使你的软件成为开源软件。多数的开源软件作者注重于他们程序贡献给社会后反映良好,不在乎是否得到回报。

下表结合许可证实例做一分析比较:


许可证

可以与非自由软件合并

可以私自进行更改,而且结果不需反馈给作者

任何人可以再发放许可证

在别人对软件更改后最初的版权所有人有专有的特权

GPL





LGPL




BSD



NPL


MPL



公共领域


未来

当本文即将交付印刷时,IBM已加盟到开源软件世界里来了。风险资本团体也正在关注开源软件。Red Hat是Linux的一个经销商,Intel和Netscape都给它投了资。VA Research是Linux服务器和工作站硬件的集成者,它宣布Sendmail公司已成为其一个外部投资者。Sendmail公司创造了商业化的、广为使用的Sendmail电子邮件投递程序,它宣布建立六百万美元的投资基金。IBM的Postfit Secure mailer已有了开源软件许可证。目前另一个IBM产品Jikes Jaua编译器的许可证在某些方面还不符合开源软件的要求。IBM有迹象表示愿意修改Jikes许可证以便成为完全的开源软件。他们目前正在收集社会上的意见。

两份微软的内部备忘录,习惯地被人们称为“万圣节前文档”,已被泄露到网络上公布了。这些备忘录清楚地记录了微软正受到开源软件和Linux的威胁。微软将发动反击以保护其市场。显然,我们正处在一个引人关注的时期。大家将会看到微软会采取两个主要战略:版权化其界面和专利。微软将扩展其网络协议,包括其中使用的MS专用界面,使得其对自由软件不再适用。他们将和其他一些公司一起,进攻性地研究计算机科学的指导方针,抢注所有他们所能注册的专利,以免这些技术被首先使用在自由软件上。进而他们将以专利使用费把我们拒之门外。我将为网络杂志Linux World写一篇短文,讨论如何在专利阵地上与开源软件的敌人战斗。

微软已经受到惊吓,这是个好消息。在第二份“万圣节前文档”中,一个微软的职员写出了当他很容易地通过部分Linux的系统,完成了确确实实就是他要做的事时的愉快感觉。即使对于一个微软的雇员来说,在Linux上做这件事,也要比在自己的NT上做容易得多。

从内部伤害我们自己的后果是十分严重的。如同已经看到的在Troll Tech发放开源软件许可证之前,KDE的Qt图形库的情形一样,企图将开源软件的定义放宽,以便包含部分自由软件产品的事件也会多起来。微软等其他公司将会发放许许多多看似足够自由,但却不具备开源软件全部自由的软件,以此来吸引用户,给我们造成伤害。可以想象他们将发放“足够好的”、“几乎十分自由的”等解决方案,从而将开源软件在一些领域的开发消灭掉。然而,在Qt图形库成为完全开源软件之前,对KDE项目的强烈抵抗,预示了微软和他们同伙采用相同的努力的不详之兆。

我们已远远逃离了特洛伊木马。假如一些人不喜欢我们,在其贡献的程序中隐藏了特洛伊木马,企图从暗处破坏Linux系统的安全。他们等待着包含特洛伊木马的软件广泛发行,然后公布其在安全开发方面的弱点。公众因此将会看到开源软件留给我们太多的开发上的弱点,比不上专有系统的Microsoft。这将降低公众对开源软件的信任度。

我们可以争辩说Microsoft同样有完全性方面的缺陷,尽管他们不允许外部人员深入其内部。而开源软件公布源代码的模式使得这些缺陷很容易发现。任何Linux上存在的这类缺陷可在缺陷宣布的当天就得以解决。而一个类似的缺陷在Windows里却可能多年都发现或修复不了。但是我们仍需加强对“特洛伊木马”的防范。最好的防范办法就是加强对提交软件和修改软件者身份的准确确认。这样我们就可以使用刑法对付“特洛伊木马”的行凶者。

当我是Debian GNU/Linux发行版的主管时,我们研制了一个能够可靠地识别所有的软件维护者身份,以及他们进入到公用的加密网络的系统。这样就可以核对软件来自于何人。这类系统应加以扩展,以便能包括所有的开源软件开发者。

在Linux准备交付一般的用户使用之前,我们还有艰巨的改进工作要傲。图形用户界面是一个明显的缺口。KDE和GNOME正致力于解决。系统管理是下一个前沿。Linuxconf部分地在致力解决,如果结果是一个能被没有操作技巧的用户接受的系统管理工具。如果Caldera的COAS系统能够成功,它就可以成为系统管理问题完全解决的基础。但是,Caldera在保证分配给COAS充足的资金,以确保其完成这项开发上遇到了困难。其他的参加者也由于进展缓慢而离开了团体。

Linux发行版经销商过多,需要进行清理。在Linux经销商中Red Hat是意料之中的胜利者,Caldera名列第二。到目前Red Hat已经表示了对开源软件的坚定的承诺。但一位新的总裁和关于Initial Public Offering(IPO)的谣传弱化了这一承诺。像Caldera这样并不十分关心开源软件的竞争者,会趁机侵入Red Hat的市场。如果商业化的Linux发行版对开源软件的承诺出现问题,那将很可能招来那种与Debian GNU/Linux的努力相似的,用纯开源软件取代它们的努力,但将会比Debian更直接面对商业市场。

尽管存在这些挑战,但我预言开源软件将会获胜。Linux已经成为计算机科学类学生的试验床。他们毕业后将带着这些软件进入工作领域。研究实验室已经采用了开源软件模式,因为开源软件允许方便地共享软件,而信息共享对科学方法是最重要的。

商业领域正在采用开源软件模式,因为它允许几个团体或公司合作处理疑难问题,但不必担心受到反托拉斯法的恐吓。当计算机程序的公用贡献者对自己的软件自由地改进时,他们也可以从中获得好处。一些大的公司已经采用开源软件来做为一种与微软抗争的战略,以此来确保不再出现另一个微软来支配整个计算机产业。

但对开源软件未来最可信的预测正是它的过去:我们已经经历了从开始一无所有,到如今成为软件业一个强壮的巨人,能解决各种不同的问题,达到百万计的用户的过程。现在我们没有理由放慢前进的步伐。


作者简介

Bruce Perens

Bruce Perens一直是Linux和开源软件的倡导者。直到1997年Bruce领导了Debian项目,这是一个由志愿者组成的开发小组,其目的是创建一个完全基于开源软件的Linux发行版。

在为Debian项目工作期间,Bruce帮助制定了Debian Social Contract,这是一份条件声明,明确了哪些软件应当包含在Debian分发包中,并能被充分认为是自由分发的软件。Debian Social Contract就是目前开源软件定义的前身。

在完成Debian项目的工作后,Bruce仍不遗余力地通过创建和领导公众感兴趣的软件来推广开源软件运动,并同Eric Raymond一同创建了Open Source Initiative。

在积极参与传播开源软件之余,Bruce为Pixar动圃工作室工作。

评论

您不能发表评论,可能是以下原因
1、登录后才能评论
2、作者关闭了评论