课程研讨讲稿,搜集资料的集合,完全非原创,仅供临时参考。
近年来,开源正在变得越来越火,我们经常会看到 “某企业宣布开源”、“某开源大会召开”、“某开源项目获得融资”。个人开发者与企业比以往任何时候都更愿意参与到开源项目的建设和贡献中,开源在国内 IT 领域获得了前所未有的热度,也获得了产业界和投资圈的广泛关注。
但总有些人听到开源一词时,就会误以为 “开源软件是免费的,因此我可以不受限制地随意使用”。在开源诞生之初,自由软件是当时的主流提法,回顾开源的发展史,从自由软件到开源运动实现了非常大的跨越,前者更多的是一种精神的倡导,而后者着眼于软件的协同开放,因此会有非常严谨的开源许可证的规则和限制。开源软件能走到今天的发展程度,就是因为有了这么一套遵从开源精神的规则体系,才能够健康发展。开源精神的载体之一就是开源许可证,今天我们就来扒一扒开源许可证与开源的关系,以及它背后折射出的问题。
自由软件和开源软件
开源软件与自由软件是两个不同的概念,只要符合开源软件定义的软件就能被称为开源软件。
而自由软件有比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。但一般,绝大多数开源软件也都符合自由软件的定义。
- 开源代码是,使用开放的开发方式,尽可能的使软件优化,公开,但不一定给予自由权。
- 自由软件的原意就是要给予用户运用软件的自由,这个‘自由’就是自由软件的精神所在。
免费软件:是一种不须付费就可获取的软件,但是通常有其他的限制,用户并没有使用、复制、研究、修改和分发的自由。该软件的源代码不一定会公开。
什么是开源协议?
OpenSource Software(OSS):可以获取源代码的软件。如果一个程序员想将自己的代码开源,他有许多种选择,大致可以分成三类:
- 将代码放入"公共领域"(public domain),彻底放弃版权。
- 选择谨慎的许可证,如GPL,要求衍生代码必须开源。
- 选择更宽松的许可证,比如BSD和Apache许可证,不要求衍生代码开源。
两大阵营,FSF和OSI,对开源有着不同的理念。
FSF(Free Software Foundation,自由软件基金会)
FSF 是开源泰斗 理查德·斯托曼 RMS 创立的重要的开源软件基金会 (1985/10/04), FSF 创立之初主要是为了筹集资金来建设 GNU:GNU is Not Unix 的内核 Hurd 项目及工具链,虽然 GNU 项目本身没有完成,但是该过程中创造出的大量软件工具,日后成为了 GNU/Linux 的重要组成部分。
FSF 建立了开源领域的第一个 copyleft 属性的许可证 - GPL (GNU Public License) 。
CopyLeft
Copyleft是指任何人都可以重新分发软件,不管有没有进行修改,但必须同时保留软件所具有的自由特性。即拥有著作权,仅用于保护其自由。
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.(大多数软件许可是设计用以剥夺你的分享与修改软件的自由。相反地,GNU通用公共许可则是要保证您分享与修改自由软件的自由——确保软件对所有的用户而言都是自由的。)
GPL
GPL是第一个Copyleft类型的许可证,全身心追求软件的自由:
- 基于任何目的,按你的意愿运行软件的自由。
- 学习软件如何工作的自由,按你的意愿修改软件以符合你的计算的自由。
- 分发软件副本的自由,因此你可以帮助你的好友。
- 将你修改过的软件版本再分发给其他人的自由。这样可以让整个社区有机会共享你对软件的改动。
GPL与其他一些更“许可的”自由软件许可证(比如BSD许可证)相比,主要区别就在于GPL寻求确保上述自由能在复制软件及派生作品中得到保障,要求GPL程序的派生作品也要在GPL之下。相反,BSD式的许可证并不禁止演绎作品变成专有软件。
GPL保护的一个典型例子就是著名的 2009甲骨文收购SUN公司事件,Michael Widenius,MySQL创始人四处呼吁反对收购,因为他觉得甲骨文自己本来就做Oracle数据库,拥有了MySQL后只会杀死它。然而,MySQL是杀不死的:它的许可证是GPL。
著名的应用:MySQL
OSI(Open Source Initiative,开放源代码促进会)
OSI 由开源界泰斗 Bruce Perens 和 Eric S. Raymond (ESR) 在 1998 年组建,目的是在理想的自由软件与商业之间达成一个平衡,务实的开源行动,负责管理各种开源规范。OSI 组织认证过的许可大概有 80 种,包括 Apache License 、GPL 、MIT/BSD 等。
开源许可证(Open Source License)
Lesser GPL
强制开源虽然很美好,但是现实不是理想国。除开一部分理想主义者,别人凭什么要居人篱下呢?LGPL允许LGPL授权的软件集成至他们自己的软件内(即使该软件是私有软件也被允许),同时不会受到Copyleft特性的许可证强制对软件开源的限制。该许可证常被用于一些(但不是全部)GNU程序库。
"After all, there are plenty of other C libraries; using the GPL for ours would have driven proprietary software developers to use another--no problem for them, only for us." "毕竟,市场上的C库有的是。GPL许可证将迫使私有软件去使用他人的库,这不会给他们带来困扰,只会给我们带来困扰。"
BSD
是自由软件中使用最广泛的许可协议之一。从copyleft到copyright,BSD许可证往往认为是copycenter:
- 源代码传播,则必须带有原来的BSD协议。
- 二进制传播,则需在版权声明中带有原来的BSD协议。
- 传播产品不能用原来的信息来进行市场推广。
因此是对商业集成很友好的协议,而很多的公司企业在选用开源产品的时候都首选BSD协议。
有意思的小故事:
3.所有提及该软件功能或者使用该软件的广告材料必须展示以下致谢:本产品包含由加州大学伯克利分校及其贡献者开发的软件。
最初,令人反感的BSD广告条款只是在伯克利软件发行版中使用。因为在广告中包含一句话并不是十分困难,所以此条款并没有引起特别的问题。
如果其他使用BSD类许可证的开发者逐字拷贝了BSD广告条款—包含了指向加州大学的句子—,那么他们也没有使问题变大。
但是,可能正如你所预见,有些开发者不是逐字拷贝该条款。他们做了改动,把“加州大学”换成了他们自己机构的名称。结果就是有了太多的许可证,需要使用太多的句子。
Apache License (ASL)
ASL 也是商业公司偏爱的许可证,
- 每个被修改的文件中,都需要说明更改。
- 对所有未修改部分,保留所有原有的著作权,专利,商标等归属。
著名的应用有 Android:
MIT License
特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,不受限制地处理本软件,包括但不限于使用、复制、修改、合并 、发布、分发、再许可的权利, 被许可人有权利使用、复制、修改、合并、出版发行、散布、再许可和/或贩售软件及软件的副本,及授予被供应人同等权利,惟服从以下义务。
在软件和软件的所有副本中都必须包含以上著作权声明和本许可声明。