随着开源软件的普及,越来越多的开发者选择将自己的项目以开放源代码的形式发布。为了保护这些开源项目的知识产权并规定其使用方式,不同的开源许可证应运而生。本文将介绍BSD、MIT、Apache Licence等几种常见的开源许可,并介绍其在使用它们时需要注意的问题。
一、开源许可协议的由来
开源运动起源于20世纪60年代末70年代初,当时,计算机程序通常是共享的,软件开发者之间会相互交流代码。然而,随着软件行业的商业化,许多公司开始将软件视为一种商品,并开始对软件实施版权保护,限制了源代码的访问。
到了80年代,1983年,理查德·斯托曼(Richard Stallman)发起了GNU项目,致力于创建一个自由的操作系统,并提出了自由软件的理念。这一理念强调用户自由使用、复制、修改和分发软件的权利。1989年,GNU项目发布了GNU通用公共许可证(GPL)。这是第一个广泛使用的开源许可证,确保软件及其衍生作品保持自由,其核心理念是“Copyleft”,即任何派生作品也必须采用相同的许可证,以维持软件的自由性。
到了90年代,随着互联网的普及,软件开发和分发变得更加便捷。“开源”一词在1998年被提出,同年,开源促进会(OSI)成立,致力于推广开源软件的使用和开发,并制定了开源定义,列出了开源许可证必须满足的一系列准则。
随着时间的发展,出现了各种类型的开源许可证,每种都有其特定的目的和使用场景,旨在平衡开发者与使用者之间的权益。MIT许可证以其简单且宽松的条款著称,允许用户几乎不受限制地使用、复制、修改和分发软件。Apache许可证则允许用户自由使用和修改软件,但要求在分发时保留原始版权声明和许可证。BSD许可证类似于MIT许可证,具有高度的灵活性,但同样要求保留版权声明。
如今,开源软件在各个行业中都得到了广泛应用,从操作系统(如Linux)到开发工具(如Git)。许多大公司(如腾讯、阿里、百度、Google、Microsoft等)也积极参与开源社区,贡献和使用开源软件。通过这些许可证,开发者和公司在法律框架下分享和发展技术,推动科技的进步和创新。不仅改变了软件开发的方式,也对整个科技行业产生了深远的影响。
二、常见的开源许可协议
现在市面上的开源协议至少有上百种,经过开源促进会(Open Source Initiative)
认可的开源协议也多达 70 多种。这里,我们介绍常见的6中开源协议。
- BSD(Berkeley Software Distribution license)
- MIT(Massachusetts Institute of Technology)
- Apache Licence 2.0
- Mozilla(Mozilla Public License)
- GPL(General Public License)
- LGPL(Lesser General Public License)
用以下分析图展示一下常用的开源协议:
2.1 BSD (Berkeley Software Distribution license)
BSD源自加州大学伯克利分校,是自由软件中使用最广泛的许可协议之一,其给于使用者很大自由的协议。使用者可以自由的使用、修改源代码,也可以将修改后的代码开源或闭源,甚至作为商业软件再发布
。但需注意是发布的源代码、二进制可执行文件相关文档中需包含BSD许可协议声明
,并且不能使用开源机构名字做产品的市场推广
。
BSD使用注意事项:
当你发布使用了BSD协议的代码或以BSD协议代码为基础做二次开发时,需要满足以下三个条件:
- 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
- 如果再发布的是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议;
- 不可以使用开源代码的作者/机构名字和原来产品的名字做市场推广;
BSD 鼓励代码共享,但需要尊重代码作者的著作权。BSD允许使用者修改和重新发布代码,也允许基于BSD代码上开发商业软件的发布和销售,因此很多公司企业在选用开源产品的时候都首选BSD协议(因为遵循BSD协议的代码完全可控,必要的时候可以修改或者二次开发)
。
BSD许可条款
Copyright <YEAR> <COPYRIGHT HOLDER>
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2.2 MIT(Massachusetts Institute of Technology)
MIT源自麻省理工学院(Massachusetts Institute of Technology, MIT)
MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制。使用者只需在发布的源代码、二进制可执行文件相关文档中包含MIT许可协议声明,便可自由的使用、修改源代码、作为商业软件再发布、甚至使用开源机构名字做产品的市场推广
。
MIT使用注意事项:
当你发布使用了MIT协议的代码或以MIT协议代码为基础做二次开发时,需要满足以下条件:
- 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的MIT协议;
- 如果再发布的是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的MIT协议;
MIT许可条款
Copyright <YEAR> <COPYRIGHT HOLDER>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2.3 Apache Licence 2.0
Apache Licence是一个由Apache软件基金会
发布的自由软件许可证,最初为Apache http服务器而撰写。
该协议与BSD类似,同样鼓励代码共享和尊重原作者的著作权,允许代码修改、再发布。
Apache Licence也是对商业应用友好的许可,使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售
。
Apache Licence 2.0使用注意事项:
需要满足的条件与BSD类似:
- 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
- 如果再发布的是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议;
- 不可以使用开源代码的作者/机构名字和原来产品的名字做市场推广;
- 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
- 如果在发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。
如何引用Apache Licence 2.0条款
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
2.4 Mozilla(Mozilla Public License)
Mozilla开源协议由Mozilla基金会
开发并维护。
该协议融合了BSD许可与GNU通用公共许可协议的特性,追求平衡专有软件和开源软件开发者之间的顾虑(平衡开发者对源代码的需求和他们利用源代码获得的利益
)。
Mozilla允许使用者在自己已有的源代码库上加一个接口,除了对接Mozilla Public License开源库的接口程序源代码以MPL许可的形式对外许可外,源代码中的其他源码可以不用MPL许可证的方式强制对外许可
。
Mozilla使用注意事项:
-
- 经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来;
-
- 如果修改了代码,需要有一个专门文件描述对源代码程序的修改时间和修改方式;
2.5 GPL(General Public License)
GPL许可证最初由自由软件基金会(Free Software Foundation)
的理查德·斯托曼
为GNU项目所撰写。
GPL是一个Copyleft许可证,其派生作品只能以相同的许可条款分发:
使用者在软件开发中只要使用GPL协议的相关类库与代码,则该软件亦必须采用GPL协议,既必须开源与免费。
我们很熟悉的Linux操作系统、GNU编译器集合(GCC)就是采用了GPL。
GPL协议和BSD、MIT、Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,其不允许修改后和衍生的代码做为闭源的商业软件发布和销售(只要使用GPL协议的相关类库与代码,则该软件亦必须采用GPL协议,既必须开源与免费。)
。
这也就是为什么我们能免费使用各种版本的linux,包括商业公司的Linux、个人组织二次开发的Linux版本。
如何引用GPL条款
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
2.6 LGPL(Lesser General Public License)
LGPL原本被称为GNU Library General Public License
,最初于1991年发布,为与GPLv2保持一致而采用2.0版的编号;
许可证的2.1版与1999年在修订后发布,与此同时,它被重命名为GNU Lesser General Public License
,以显示自由软件基金会(Free Software Foundation)
认为并不是所有程序库都应当采用该许可证的态度;
LGPL的第3版于2007年发布,它以在GPL第3版之上附加应用一系列许可的方式表现。
LGPL是GPL的一个主要为类库使用设计的开源协议,与GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。
LGPL允许商业软件通过类库引用方式使用LGPL类库而不需要开源商业软件的代码
,这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售;但使用者如果修改了LGPL协议的代码或衍生,则所有修改的代码和衍生的代码都必须采用LGPL协议
。
如何引用LGPL条款
Copyright (C) year name of author
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
三、参考
https://opensource.org/license/bsd-3-clause
https://opensource.org/license/mit
https://choosealicense.com/licenses/apache-2.0/
https://opensource.org/license/mpl-2-0