什么是开源软件(Open source software)

来源:互联网 发布:cnc电脑编程软件有哪些 编辑:程序博客网 时间:2024/04/30 10:49
开源软件(Open source software)

开源软件(英文全称:Open source software,英文缩写:OSS,中文全称:开放源代码软件)是一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量。开源协议通常符合开放源代码的定义的要求。一些开源软件被发布到公有领域。开源软件常被公开和合作地开发,开放源代码软件是开源发展的最突出的例子,也经常与用户生成内容(user-generated content)做比较。开源软件的英文“open-source software”一词出自free software(自由软件)的营销活动中。Standish集团一份报告指出,采用开放源代码软件的模式让消费者每年节省60亿美元。

有些软件的作者只将源代码公开或将源代码公开并免费,却不符合“开源软件”的定义及条件,因为作者可能设置公开源代码的条件限制,诸如限制可阅读源代码的对象、限制派生产品、只能私人非商业的用途等,此称之为“公开源代码的软件”或“公开源代码的免费软件(Freeware)”(例如知名的模拟器软件MAME),因此公开源代码的软件并不一定可称之为开放源代码软件。


开放源代码的定义

开放源代码的定义由Bruce Perens(曾是Debian的创始人之一)定义如下:

介绍
    开源并不仅仅意味着对源代码的访问。开放源代码软件的发布条款必须符合下列条件:
1. 自由再分发(Free Redistribution)
    允许获得源代码的人可自由再将此源代码散布。
2. 源代码(Source Code)
    程序的可运行档在散布时,必需以随附完整源代码或是可让人方便的事后取得源代码。
3. 衍生作品(Derived Works)
    让人可依此源代码修改后,在依照同一授权条款的情形下再散布。
4. 作者的源代码的完整性(Integrity of The Author's Source Code)
    修改后的版本,需以不同的版本号码以与原始的代码做分别,保障原始的代码完整性。
5. 不能对个人或群体的歧视(No Discrimination Against Persons or Groups)
    许可证不得对任何人或一群人的歧视。
6. 不能对各项领域有歧视(No Discrimination Against Fields of Endeavor)
    意即不得限制商业使用。
7. 分发许可证(Distribution of License)
    若软件再散布,必需以同一条款散布。
8. 许可证不得具体到一个产品( License Must Not Be Specific to a Product)
    若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必需要符合开放源代码的条件。
9. 许可证不得限制其他软件(License Must Not Restrict Other Software)
    当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的授权条件也要遵照开放源代码的授权。
10. 许可证必须在技术上保持中立(License Must Be Technology-Neutral)
    授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。


自由软件(Free Software)

根据自由软件基金会的定义,自由软件(Free Software)是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。这方面的不受限制正是自由软件最重要的本质,与自由软件相对的是闭源软件(Proprietary Software)非自由软件,也常被称为私有软件、封闭软件(其定义与是否收取费用无关)。自由软件受到选定的“自由软件授权协议”保护而发布(或是放置在公共领域),其发布以源代码为主,二进制档可有可无。

自由软件的许可证类型主要有GPL许可证和BSD许可证两种。另外,自由软件也可以看作开源软件的一个子集。


开源软件(open source)或多或少被认为和自由软件(free software)是同一类别。其实不是同一类别:他们接受的一些条款,我们认为限制的过于严格,他们有些自由软件条款我们不接受。然而, 差别非常小:几乎所有的自由软件是开源的,几乎所有的开源软件都是自由的。自由软件运动是基于政治及哲学思想(有时被称为所谓黑客文化)的理想主义运动,而开放源代码运动则主要注重程序本身的质量提升。


常用的开源软件协议:

GPL(GNU General Public License)

GNU通用公共许可证(英语:GNU General Public License,简称GNU GPL或GPL),是一个广泛被使用的自由软件许可证,最初由理查德·斯托曼为GNU计划而撰写。此许可证最新版本为“第3版”(v3),2007年6月29日发布。GNU宽通用公共许可证(英语:GNU Lesser General Public License,一般简称LGPL)是改自GPL的另一个版本,其目的是为了应用于一些软件库。

LGPL(GNU Lesser General Public License)
GNU宽通用公共许可证,简称LGPL(GNU Lesser General Public License),被用于一些(但不是全部)GNU程序库。这个许可证以前被称为GNU库(Library)通用公共许可证。此许可证最新版本为“版本3”,2007年6月29日发布,较早的版本有2.0和2.1版。此种授权之出现,是为了在GPL协议与BSD协议,MIT协议间取得折中。
采用LGPL之计划本身虽然仍有"著作权脱离"("Copyleft")之限制条件,但这些限制不感染仅仅只联结到本计划的软件。不过此等软件仍会受到其他限制。
LGPL主要使用之标的为软件函式库("Software Libraries"),虽然其亦可使用于独立存在的应用程式。比较有名的例子为Mozilla跟OpenOffice.Org.


BSD(Berkeley Software Distribution license)
BSD许可证(Berkeley Software Distribution license),是自由软件(开源软件的一个子集)中使用最广泛的许可证之一。BSD软件就是遵照这个许可证来发布,该许可证也因此而得名。
BSD套件最初所有者是加州大学的董事会,这是由于BSD源自柏克莱加州大学。BSD开始后,BSD许可证得以修正,使得以后许多BSD变种,都采用类似风格的许可证。
跟其他许可证相比,从GNU通用公共许可证(GPL)到限制重重的著作权(Copyright),BSD许可证比较宽松,甚至跟公有领域更为接近。事实上,BSD许可证被认为是copycenter(中间版权),界乎标准的copyright与GPL的copyleft之间。"Take it down to the copy center and make as many copies as you want"。
许可证文本被认为遵循公有领域,所以可以不受限制地修改。为了满足个人或团体的需要,用户可以随意地将'Regents of the University of California'(加州大学董事会), 'University of California, Berkeley'(柏克莱加州大学),以及'Regents'(董事会)替换成自己的名称。


MIT(The MIT License)
MIT许可证(The MIT License)是许多软件授权条款中,被广泛使用的其中一种。与其他常见的软件授权条款(如GPL、LPGL、BSD)相比,MIT是相对宽松的软件授权条款。
MIT许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X条款”(X License)或“X11条款”(X11 License)
MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。
有许多团体均采用MIT许可证。例如著名的ssh连接软件PuTTY与X Windows System (X11)即为例子。Expat, Mono开发平台库,Ruby on Rails, Lua 5.0 onwards等等也都采用MIT授权条款。


Apache(Apache License)
Apache许可证(Apache License),是一个在Apache软件基金会发布的自由软件许可证,最初为Apache http服务器而撰写。Apache许可证要求被授权者保留版权和放弃权利的申明,但它不是一个反版权的许可证。
此许可证最新版本为“版本2”,于2004年1月发布。
Apache许可证在Apache社区内外被广泛使用。Apache基金会下属所有项目都使用Apache许可证,许多非Apache基金会项目也使用了Apache许可证:据统计,截至2008年4月,在sourceforge上有超过3000个项目使用了Apache许可证。
Apache软件基金会与自由软件基金会都同意Apache许可证属于自由软件许可证,且相容于第三版的GNU通用公共许可证。
不过,双方也都同意第一版与第二版的GNU通用公共许可证并不相容于Apache许可证。


其他说明

开源软件,自由软件明确定义了相关权利与义务,让您使用相关软件、产品可避免因为不小心触犯到相关法律法规,避免产生不必要的法律纠纷。
以上解释仅作参考,具体以相关协议英文原版为准。


参考资料:
http://en.wikipedia.org/wiki/Open-source_software
http://en.wikipedia.org/wiki/Free_software
http://en.wikipedia.org/wiki/GNU_General_Public_License
http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
http://en.wikipedia.org/wiki/BSD_licenses
http://en.wikipedia.org/wiki/MIT_License
http://en.wikipedia.org/wiki/Apache_License
原创粉丝点击