似乎提到开源软件,往往给人一种错觉——我拿到了软件源代码,接下来我是不是可以大刀阔斧为所欲为非也!开源软件不等于免费软件,开源也不等于免费。“Ctrl+C/V 撸起键盘就是干,开源协议要先看”,在你决定使用开源软件之前,请花几分钟,了解一下开源许可(Open Source License)的具体限制条件,对你将大有裨益。
通常,我们接触到的开源软件(Open Source Software简称OSS)都有对应的开源许可证(Open Source License)对软件的使用,复制,修改和再发布进行限制。开源协议是确定一个开源软件版权的法律合同,所以,在使用开源软件之前,了解各开源协议的特点对一名程序员来说尤为重要。
一、 Open Source License(OSL)
提到开源软件或开源协议,首先我们会想到大名鼎鼎的Linux操作系统。Linux是最著名的开源项目之一,它是在GUN操作系统之上构建的免费操作系统内核。虽说Linux操作系统是免费的,但Linux使用了GPL 2.0许可协议对其自身的源代码进行了限制。通常,所有的开源许可(准确描述是:开放源代码许可)都旨在控制软件的使用方式,例如:
- 个人使用:出于非商业目的情况下使用和修改软件
- 发行:用于商业或非商业行为用途的软件共享
- 链接:链接到免费或专有资源
- 专利授予:政府授予的知识产权权利
- 分包许可:软件所有者允许其他人使用其软件进行二次创新的限制条件
- 商标:对代表组织或产品的符 或文字的使用进行限制
二、许可证分类
在开源软件的世界里,协议分为两类:Copyleft和Permissive。在介绍Copyleft和Permissive之前,先了解一下Copyright这个词语。Copyright意为版权,我们在很多 站的页脚都能看到这个标识。Copyright(版权)是授予创作作品的所有者的专有权利,通常是指在有限时间内对作品进行复制。创作作品可以以文学,艺术,教育或音乐的形式出现。版权旨在以创意作品的形式保护思想的原始表达,而不是思想本身。
Copyright(版权)可以通过法律的形式授予,在这种情况下,版权因国家/地区的法律不同而有不同的限制条件;通常情况下,Copyright(版权)的公共法律期限在创作作品所有者去世后50年到100年内到期,具体取决于司法管辖区。
2.1 Copyleft
2.2 Permissive
Permissive free software licence (宽松自由软件许可协议),是一种对软件的使用,修改,传播等方式采用最低要求的自由软件许可协议条款类型。因此,这种类型的软件许可协议将不保证被使用软件的派生软件会继续保持原生作品的相关限制条件。怎么来理解这句话呢以简单的理解为使用这种类型条款的软件,在你拿到源码后,基本上可以为所欲为。
Copyleft是在有限空间内的自由使用,修改和传播,且不得违背原始作品的限制条款;而Permissive则可以最大限度的使用,修改和传播软件,而不用严格按照原始软件所提出的条款执行。简单来理解就是:如果一款软件使用Copyleft类型许可协议规定软件不得用于商业性质的活动,且不得闭源,那么后续的衍生子软件也得遵循该条款,如果是采用Permissive类型的许可协议,则后续衍生的子软件可以用于商业用途,也可以闭源。
三、通用的开源协议
面对这样的问题,最好的解决办法就是大家都遵循统一的且具有公信力的开放源代码许可协议,这样事情就变得简单得多。在接下来的内容中,我将整理并列举一些比较好且受欢迎的开放源代码许可协议。
受个人学习能力和经验的限制,在此仅列举一些常见的和使用最多的开放源代码许可协议。
3.1 GNU通用公共许可证(GPL)
GNU的通用公共许可证是最受欢迎的开放源代码许证可之一。该许可证由理查德·斯托曼(Richard Stallman)所创建,用于保护GUN软件的自由使用。GPL是Copyleft类型的许可协议,者意味着基于GPL组件编写的任何软件都必须以开源的方式进行发布。
GPL允许自由地“使用、复制、修改和发布”,但修改和发布后的软件也必须是可以自由“使用、复制、修改和发布”的。因此 GPL 大大限制了商业软件使用GPL授权的软件,如果非法使用,将面临起诉的风险。目前 GPL 授权的项目有:Linux、Gnome、KDE、Emacs、GCC。
GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售,即必须也是开源和免费,这就是所谓的”传染性”。
由于 GPL 严格要求使用了 GPL 类库的软件产品必须使用 GPL 协议,对于使用 GPL 协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
3.2 Apache 许可证
Apache许可证是由Apache软件基金会(ASF)发布的开源软件许可证。这是一个由强大 区支持的流行且广泛部署的许可证。Apache许可证允许您自由使用,修改和分发任何Apache许可产品。但是,在这样做时,您需要遵循Apache许可的条款。
3.3 BSD许可证
BSD(全称:Berkeley Software Distribution),1970年代由伯克利加州大学的学生比尔·乔伊创建。BSD许可证非常宽松,它允许无限制地重用全部或部分软件,以集成到自由软件或所有者中。
3.4 MIT许可证
MIT是最宽松的自由软件许可证之一。基本上,只要您添加了原始MIT许可证和版权声明的副本,就可以和BSD许可证那样,对原始软件进行许可范围内的任何操作,也相当于可以”为所欲为”。如果你在开放源代码时,只想保留版权,而无需其他任何的限制,那么你可以选择MIT许可证。
3.5 CDDL许可证
CDDL(Common Development and Distribution License)通用开发和发行许可证,是由Sun Microsystems发布的开源许可证,用来替代Sun Public License(SPL)。Sun公司将CDDL视为SPL的第二个版本,CDDL受到Mozilla公共许可证(MPL)的启发,对SPL进行了修订,所有CDDL通常被成为MPL的简化版,旨在促进代码的可复用性。
你可以自由复制和分发CDDL许可的任何软件的任何原始或衍生作品。但是,你不得删除或更改软件中包含的任何版权,专利或商标声明。你还必须保留许可声明或任何描述性文字,以及任何贡献者或初始开发者的信息。
3.6 Eclipse公共许可证
开源的精神在于尊重用户的自由以及知识传播的自由,是为了让优秀的软件获得更大的进步和发展。可能Copyleft是一种非常理想化的思想,现实总会与其精神出现偏差,但这种理想主义思想是具有现实意义的,只有不断的提倡和传播这种思想, 会才会聚集更多的正能量。开源可以让人们自由享受软件所带来的便利以及思想的交流和创新,但在我们享受别人带来的福利时,也请尊重别人的劳动成果。自由传播和使用,不等于免费使用和无偿使用,在打破壁垒,敢于创新的同时,也要遵循基本的开源精神。
四、补充
如果你还想了解更多的许可协议内容,可以通过查找下方列表中的目录,点击对应的链接地址,查看更详细的内容:
名称 | 地址 |
---|---|
Academic Free License | https://opensource.org/licenses/AFL-3.0 |
Adaptive Public License | https://opensource.org/licenses/APL-1.0 |
Apache Software License | https://www.apache.org/licenses/LICENSE-1.0 |
Apache License 2.0 | https://www.apache.org/licenses/LICENSE-2.0 |
Apache Public Source License | https://opensource.org/licenses/APSL-2.0 |
Artistic License | http://www.perlfoundation.org/artistic_license_2_0 |
Attribution Assurance License | https://opensource.org/licenses/AAL |
BSD License | https://en.wikipedia.org/wiki/BSD_licenses |
New BSD License | http://self.gutenberg.org/articles/eng/New_BSD_license |
CCO | https://creativecommons.org/publicdomain/zero/1.0/ |
Computer Associates Trusted Open Source License | https://opensource.org/licenses/CATOSL-1.1 |
Common Development and Distribution License | https://en.wikipedia.org/wiki/Common_Development_and_Distribution_License |
Common Public License | https://www.ibm.com/developerworks/library/os-cplfaq/ |
Eclipse Public License | https://www.eclipse.org/legal/epl-v10.html |
Educational Community License | https://en.wikipedia.org/wiki/Educational_Community_License |
Eiffel Forum License V2 | http://directory.fsf.org/wiki/License:EFLv2 |
EU DataGrid Software License | http://openseal.sourceforge.net/epl/index.html |
Fair License | https://opensource.org/licenses/Fair |
Frameworx License | https://opensource.org/licenses/Frameworx-1.0 |
GNU Affero General Public License | https://www.gnu.org/licenses/agpl-3.0.en.html |
GNU General Public License | https://www.gnu.org/licenses/old-licenses/old-licenses.html#GPL |
GNU Library or ‘Lesser’ General Public License | https://www.gnu.org/licenses/lgpl-3.0.en.html |
IBM Public License | http://www.opensource.org/licenses/ibmpl.php |
Microsoft Public License | https://opensource.org/licenses/MS-PL |
MIT License | https://opensource.org/licenses/MIT |
Motosoto License | https://opensource.org/licenses/motosoto.php |
Mozilla Public License | https://www.mozilla.org/en-US/MPL/2.0/ |
NASA Open Source Agreement | https://fedoraproject.org/wiki/Licensing/NASA_Open_Source_Agreement |
Naumen Public License | https://opensource.org/licenses/naumen.php |
NetHack General Public License | http://www.nethack.org/common/license.html |
Nokia Open Source License | http://opensource.org/licenses/nokia.html |
OCLC Research Public License 2.0 | http://www.oclc.org/research/themes/data-science/license.html |
OpenContent License | http://www.ibiblio.org/fosphost/opl.htm |
Open Group Test Suite License | https://opensource.org/licenses/OGTSL |
Open Software License | https://opensource.org/licenses/OSL-3.0 |
PHP License | http://php.net/license/3_01.txt |
Python License | https://www.python.org/download/releases/3.3.0/license/ |
Python Software Foundation License | https://docs.python.org/3/license.html |
Qt Public License | http://doc.qt.io/qt-5/opensourcelicense.html |
RealNetworks Public Source License | https://opensource.org/licenses/RPSL-1.0 |
Reciprocal Public License | https://opensource.org/licenses/RPL-1.5 |
Ruby License | http://www.ruby-lang.org/en/LICENSE.txt |
The Sleepycat License | https://opensource.org/licenses/Sleepycat |
Sun Industry Standards Source License | http://www.openoffice.org/licenses/sissl_license.html |
Sun Public License | https://opensource.org/licenses/SPL-1.0 |
NCSA Open Source License | https://opensource.org/licenses/NCSA |
W3C License | https://opensource.org/licenses/W3C |
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!