开源软件及其许可证(备用)

开源软件及其许可证

Leojane Zhu
(leojane@gmail.com)

摘要

关键字:自由软件,开源软件,GNU ,FSF ,许可证,GPL,LGPL,BSD,NPL,MPL

Abstract

This paper introduces Free Software , Open Source , and something on GNU and FSF . It studies the history and meanings of Free Software and Open Source . It analyzes and compares Free Software , Open Source and some other software . It describes kinds of usual Open Source Licenses , and compares them .

Keyword:Free Software, Open Source , License , GPL ,LGPL , BSD , NPL , MPL

目录

1  引言
2  自由软件
     2.1  历史——自由软件的诞生
     2.2  GNU 及 FSF
     2.3  Copyleft
3  开源软件
     3.1  开源软件的提出
     3.2  开源软件与自由软件
     3.3  开源软件与其它的对比
4  常见的开源软件许可证
     4.1  GPL
     4.2  LGPL
     4.3  BSD 许可证
     4.4  NPL 和 MPL
5  选择许可证
6  展望
7  致谢

1  引言

2  自由软件

2.1  历史——自由软件的诞生

2.2  GNU 及 FSF

2.3  Copyleft

我 们已经谈论了很多自由软件相关的事情,但还没有给出自由软件的明确定义。Free Software 这种术语,由于英语 free 一词有二义,因此常常被误解——事实上它和价格毫无关系,这里 free 的含义是自由。这是由自由软件的定义所决定的。对于特定的用户来说,如果某个程序被称为自由软件,那么:

  • 你拥有运行该程序的自由,而且可以用于任何目的。
  • 你拥有修改程序以适应你个人需要的自由。(为了在实践中使这一自由成为可能,你必须能够获得源代码,因为没有源代码而试图修改程序是极端困难的。)
  • 你拥有再发行拷贝的自由,可以是无偿的,也可以是收费的。
  • 你拥有发行该程序修改后版本的自由,从而使 区可以从你所做的改进中获益。

3  开源软件

3.1  开源软件的提出

开源软件首次作为政策性文件出现在 Debian GNU/Linux 发行版 2上。 由于 Debian 在定义什么是自由上存在一些问题,后来其他的软件许可证再也没有将自由软件的政策定义得很明确。1997年7月,Bruce Pernes 作为 Debian 的项目主管,通过起草 《 Debian Social Contract》和《 Debian Free Software Guidelines》来解决存在的问题。Debian Social Contract 规定了 Debian 系统完全建立在自由软件的基础上; Debian Free Software Guidelines 则通过将指南与软件许可证进行比较,很容易地划分自由软件和非自由软件。[ 9] 1998年,受 Eric Raymond《 The Catgedral and Bazaar》[ 4] 的影响,Netscape 打算开放源代码。Netscape 向他请教,在不对外公开的前提下,他们设计了一个自由软件许可证。Raymond 力争让 Netscape 的许可证按照 Debian 的指南来做,使软件成为一个严格的自由软件。 Raymond 认为,Debian Free Software Guidelines 是一个正确定义“开源软件”的文件,但它需要一个更通俗的名字,再除去些 Debian 的专业术语。 之后,Pernes 与 Raymond 组建了 Open Source Initiative(OSI),它是一个专门管理开源软件运动及其认证标志的组织。开源软件定义(Open Source Definition ,OSD)正是由他们管理着并发扬促进着。OSD 是作为判定一个软件是否可以被称做开源软件的指南。OSD 规定了开源软件的九条标准:

  1. 程序源代码。程序必须包含源代码。必须允许发行版在包含编译形式的同时也包含程序源代码。当产品 以某种形式发行时没有包含源代码,必须非常醒目的告知用户,如何通过 Internet 免费的下载源代码。源代码必须是以当程序员修改程序时优先选用的形式提供。故意地扰乱源代码是不允许的。以预处理程序或翻译器这样的中间形式作为源代码也是不允许的。
  2. 派生程序。许可证必须允许更改或派生程序。必须允许这些程序按与初始软件相同的许可证发行。
  3. 无个人或团体的歧视。许可证不能都有针对任何个人或团体的歧视。
  4. 无领域歧视。许可证不能限制在专门奋斗领域内的任何人使用该程序。例如不能限制程序应用于商业领 域,或者应用于遗传研究。
  5. 许可证发行。伴随程序所具有权力必须适用于所有的程序分销商,而不需要这些团体之间再附加许可证 签字盖章。
  6. 许可证不能特指某个产品。如果程序是某个特殊的软件发行版中的一部分,伴随该程序所具有的权力不能只以来于这一发行版。如果程序是从那一发行版中摘录出来的,使用或发行时用的都是那个程序的许可证,分销程序的所有团体都应拥有与初始软件版所允许的所有权力。
  7. 许可证不能排斥其他软件。许可证不能限制随该许可证软件一起发行的其他软件。例如,许可证不能要求所有与之一起发行的其他软件都是开源软件。

3.2  开源软件与自由软件

通过前面对自由软件和开源软件的介绍,我们已经可以看出它们间的区别来了。开源软件与自由软 件,可以说是同一 区的不同阵营。它们在商业性、许可证等原则性问题上不一致——自由软件对商业化极度不友好,对许可证的要求非常严厉,而开源软件则显得 宽容得多。例如,开源软件可以使用私有库,而这在自由软件里是不被允许的。开源项目 KDE 使用 Qt 的库直到2000年9月都是属于私有库。但在大多数实践过程中,二者却是高度一致的——例如:源代码可用、源代码可修改等。 以 Richard Stallman 为代表的一些人认为,开源软件的提法,忽视了 GNU 工程的原则精神,而是将词义着重于创造强大的、高质量软件的潜力,回避了自由、 会和原则这些概念。因此,GNU 工程将继续使用“自由软件”这一名词,以表示自由、而不仅仅是技术,才是重要的。 但另一方面,一些人认为——我们看到且不得不承认——开源软件的做法,更能吸引公司经理和商业用户们的眼球,使之更具有竞争力,在市场中也更具有发展潜力。 更多的时候,人们倾向于接受这种说法:开源是一种将自由软件变得更具魅力的市场策略,因为它通过它的许可证(参看第四部分和第五部分)许诺了更多自由[ 10]。这意味着只要源代码是可用的并且可以是被自由修改的,那么开源许可证就不阻止人们或公司从软件中获利。

3.3  开源软件与其它的对比

Figure
图 3-1: 软件分类

4  常见的开源软件许可证

GNU GPL,LGPL,BSD,NPL 和 MPL 等,都是符合开源软件定义的常见许可证。接下来的篇幅里我们将介绍分析它们。

4.1  GPL

4.2  LGPL

4.3  BSD 许可证

BSD 许可证,是 X、Apache、BSD(Berkeley System Distribution)的操作系统项目(FreeBSD、OpenBSD、NetBSD)所采用的。它可以总结为“这里是代码,你想对它怎么做就怎么 做,我们并不在乎,只是你试图这门做并且销售它们时请给我们信用”。通常对信用的要求会在不同形式中出现——广告,或 README 文件,或印刷品文档,等等。它提供了一个从 GPL 中得不到的最重要的许诺——私自对许可证软件进行更改。 从商业角度,这是加入现有项目的最好的一类许可证,因为不用担心将来使用或重新发行时的许可证或限制问题。你可以用自己的专有代码混合并配合该软件,并且仅仅发布你认为有助于项目的那些部分,从而有助于提高你的回 。[ 11]

4.4  NPL 和 MPL

Netscape Public License,简称 NPL ,是当 Netscape 准备生产他们的 Netscape 浏览器开源软件时开发的。确切地说, Mozilla 才是它的开源版本。 Netscape 为他们自己的产品保留了“Navigator”商标。 NPL 的一个重要的特征是它给予 Netscape 专门的特权,而不包括其他的任何人。当你对他们的软件进行更改后,Netscape 有对这些更改重新发放许可证的特权。他们可将这些更改据为己有,然后再进行改进,却拒绝给你最终的结果。这一条款在当时是必要的,因为当 Netscape 准备加入开源软件时,它与别的公司已经有合同,承诺在非开源软件许可证下向他们提供 Navigator 。 Netscape 又开发了 Mozilla Public License,即 MPL 。MPL 与 NPL 很相似,但不包含循序 Netscape 对别人做的修改再发放许可证的内容。 NPL 和 MPL 都允许私自对软件进行修改。 NPL 是 Netscape 面临特殊的商业环境的时候设计的,对别的软件并不一定非常适合。一些公司采用了 MPL 的变体,这样做便是比较不幸的。然而,NPL 和 MPL 需要保留。因为 MPL 的意义在于,陈述了 GPL 或 BSD 没有提到的某些关键问题。MPL 授权对于“发行”的更改仍以同样 MPL 版权下进行发布,这样使得它可用于返还该项目。“发行”被定义为以源代码发布的文件。这很重要,因为它允许公司增加一个与专有代码库的接口,而不需授权其 他的代码库具有 MPL 版权——只授权该接口具有 MPL 。这样,这个软件可以或多或少地组合到商业软件环境中。

5  选择许可证

当你决定进行一个开源项目的时候,必须面临着选择许可证的问题。选择哪种许可证呢面列出的问题需要好好思考。

  1. 你希望别人能够私自对软件进行更改么果你要求别人将更改后的程序源代码反馈给你,你就选择像 GPL 或 LGPL 这样满足你要求的许可证。如果你不介意别人私自更改程序,就选择 BSD 这类的允许私自修改的许可证。
  2. 你是否允许一些人将你的软件合并到他们自己的所有权软件中果允许就选择 LGPL ,它明确表示允许这样做,但不允许对你的源代码私自进行更改。也可以选择 BSD ,这样就允许了私自修改源代码。
  3. 你希望别人能买到你的有商业许可证的、不是开源软件的版本么果希望这样,为你的程序发放两个许可证。建议选择 GPL 作为开源软件许可证。然后选择一种合适的商业许可证。

表5-1结合了许可证实例进行了分析比较。

表 5-1: 许可证实例分析比较
许可证 可以与非自由 可以私自进行   任何人可以再  在别人对软件
  软件合并 更改,而且结 发放许可证 更改后最初的
    果不需反馈给   版权所有人有
      专有的特权
GPL        
LGPL      
BSD    
NPL  
MPL    
公共领域  

6  展望

对于致力于开源软件项目开发的程序员们来说,开源软件是一种信仰,开源软件运动的领袖们为这些程序员描绘了一幅美好的前景; 对于将开源软件集成到企业运作中的那些公司来说,开源软件揭示了开放式开发如何能构建出更好的软件,并揭示了企业如何利用这些开源软件来取得商业竞争上的优势; 对于企业的管理层和投资方来说,开源软件的革命先驱们带来了一种全新的经济模式。 但对开源软件未来最可信的预测正是它的过去:我们已经经历了从开始一无所有,到如今成为软件业一个强壮的巨人,能解决各种不同的问题,达到百万计用户的过程。我们现在没有理由放慢前进的步伐。

7  致谢

参考文献

[1]
“The Linux Home Page at Linux Online” , http://www.linux.org/ .

[2]

“The Apache Software Foundation” , http://www.apache.org/ .

[3]

“mozilla.org” , http://www.mozilla.org/.

[4]

Eric S. Raymond,《The Catgedral and Bazaar》,O’Reilly&Associates,1999

[5]

G.Moody,《Rebel Code:Linux and the Open Source Revolution》,The Penguin Press,2001

[6]

C.Dibona, M. Stone, S. Ockman,《Open Sources:Voices from the Open Source Revolution》,O’Reilly&Associates,1999

[7]

方兴东,《软件业自由之神——Richard Stallman》,《 计算机世界》,1999

[8]

Richard M. Stallman,《The GNU Operating System and the Free Software Movement》,1999

[9]

Bruce Perens,《 The Open Sourcde Definition》,O’Reilly&Associates,1999

[10]

Cristina Gacek,Tony Lawrie,and Budi Arief,《 The many meanings of Open Source》,2004

[11]

Brian Behlendorf,《Open Source as a Business Strategy》,O’Reilly&Associates,1999

Footnotes:

1在1984 和1985年,Don Hopkins 给 Richard Stallman 寄了封信,信封上有写着“版权所无——所有权力都被逆转(Copyleft-all rights reversed)”。于是 Richard Stallman 就决定用 Copyleft 来命名当时正考虑的软件发行的概念。 2Debian 是 Linux 系统的早期版本,是 Linux 发行版中最为流行的版本之一。他完全建立在自由软件的基础上。 3飘渺水云间: freecity.cn 

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树人工智能机器学习工具包Scikit-learn212199 人正在系统学习中 相关资源:天猫店铺设计数据分析谋库助手v1.2.12.8-统计分析代码类资源-CSDN…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2011年1月13日
下一篇 2011年1月13日

相关推荐