开源许可证
什么是开源?
开源(Open Source)
- 在软件领域,可以理解为 “开放源代码” 的简称。
- 通常指将软件项目的源代码向大众开放,允许大众获取、使用、修改和发行。
开源项目(Open Source Project)
- 开放源代码的软件项目,产出物是软件程序。
- 一个开源项目可以不断对一款开源软件进行维护和升级。
- 有可能在一个开源项目中,产出多款不同的开源软件,彼此之间有联系。
开源软件(Open Source Software)
- 公开源代码的软件
- 开源软件只能看作是某个开源项目给出的 “软件示例”,基于这个示例个人或者组织可以修改或衍生出真正适合自己的软件产品。
开源社区(Open Source Community)
- 为开源项目开放成员提供一个学习和交流的空间。
- 开源项目参与人员通常散布在全世界,开源社区就成了沟通交流的最重要方式。
开源协议(Open Source License)
- 开源软件所遵循的许可协议,开源软件的用户需要在该协议的允许范围内对软件的源代码进行使用、修改和发行,其中发行包含以盈利为目的的商业行为。
- 基于开源协议的开源许可证是一种法律许可,声明用户对开源代码使用的程度。
- 同时,版权法默认是禁止使用开源代码的,也就是说即使开源了,如果没有声明许可证,用户也只能看源代码而不能使用源代码。
- “开源许可证” 基本就是 “开源协议” 的别称,只是翻译用词的不同,两者英文都是使用 Open Source License 表达。
开源许可证分类
国际公认的开源许可证有 80 多种,共同特征是允许用户免费使用、修改、共享源码,只是都有各自使用的条件。
宽松式许可证(Permission License)
特点:
- 没有使用限制,用户可以使用代码,做任何想做的事情。
- 没有担保,不保证代码质量,用户自担风险。
- 披露要求(notice requirement),用户必须疲劳原始作者。
常见宽松式许可证:
- BSD(二条款版)
分发软件时,必须保留原始的许可证声明。
- BSD(三条款版)
分发软件时,必须保留原生的许可证声明,且不得使用原始作者的名字为软件促销。
- MIT
分发软件时,必须保留原始的许可证声明,与 BSD(二条款版)基本一致。
- Apache 2
分发软件时,必须保留原始的许可证声明。凡是修改过的文件,必须向用户说明该文件修改过;没有修改过的文件,必须保持许可证不变。
Copyleft 许可证
Copyleft 是 Copyright 的反义词,Copyright 是复制权的意思,未经许可无权复制。
Copyleft 正好相反,不经许可,用户可以随意复制。
特点:
- 如果分发二进制格式,必须提供源码。
- 修改后的源码,必须与修改前保持许可证一致。
- 不得在原始许可证之外,附加其他限制。
核心意思,修改后的 Copyleft 代码不得闭源。
常见 Copyleft 许可证:
- Affero GPL(AGPL)
云服务(SAAS)用的代码是该许可证,则云服务的代码也必须开源。
- GPL
项目包含了 GPL 许可证的代码,则整个项目都必须使用 GPL 许可证。
- LGPL
项目采用动态链接调用该许可证的库,项目可以不用开源。
- Mozilla(MPL)
只要该许可证的代码在单独的文件中,新增的其他文件可以不用开源。
~ 以上四种许可证从上到下,为对用户限制的从强到弱排序。
常见开源协议有哪些?
BSD(Berkeley Software Distribution License)
- 源自加州伯克利分校,*软件中使用最广泛的许可协议之一。
- 使用者可以*使用、修改源代码,可以将修改后的代码开源或闭源,甚至作为商业软件再发布。
- 发布的源代码、二进制可执行文件相关文档中需包含 BSD 许可协议声明。
- 不能使用开源作者或者开源机构名字做产品的市场推广。
MIT(Massachusetts Institute of Technology)
- 源自麻省理工学院(Massachusetts Institute of Technology, MIT)。
- 与 BSD 一样属于宽泛许可协议,作者只保留版权,无任何其他限制。
- 使用者只需在发布的源代码、二进制可执行文件中相关文档中包含 MIT 许可协议声明,便可*的使用、修改源代码、作为商业软件再发布。
- 甚至可以使用开源机构名字做产品的市场推广。
Apache Licence 2.0
- Apache 软件基金发布的*软件许可证,最初为 Apache HTTP 服务器撰写。
- 与 BSD 类似,鼓励代码共享,尊重原作者的著作权,允许代码修改、再发布。
- 对商业应用友好,使用者可以在需要的时候修改代码来满足需要,并作为开源或商业产品发布 / 销售。
GPL(General Public License)
- 最初由*软件基金会(Free Software Foundation)理查德·斯托曼 为 GUN 项目编写。
- 属于 Copyleft 许可证,派生作品只能以相同的许可条款分发。
- 只要使用了 GPL 协议的相关类库与代码,则该软件也必须使用 GPL 协议,既必须开源与免费。
- 初心是代码的开源、免费使用和引用以及修改,衍生代码的开源和免费使用。
- 不允许修改后和衍生的代码做为闭源的商业软件发布和销售。
- 只要使用 GPL 协议的相关类库与代码,则该软件必须使用 GPL 协议,既必须开源与免费。
- 案例:Linux 操作系统、GNU 编译器集合(GCC)。
LGPL(Lesser General Public License)
- 原本称为 GNU Library General Public License,1999 年修改后重命名为 GNU Lesser General Public License,表示*软件基金会(Free Software Foundation)认为并不是所有程序库都应采用该许可证的态度。
- LGPL 是 GPL 的一个主要为类库使用设计的开源协议,允许商业软件通过类库引用方式使用 LGPL 类库而不需要开源商业软件的代码,使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。
- 使用者如果修改了 LGPL 协议的代码或衍生,则所有修改的代码和衍生都必须采用 LGPL 协议。
Mozilla(Mozilla Public License)
- Mozilla 开源协议由 Mozilla 基金会开发并维护。
- 融合了 BSD 与 GNU 通用公共许可协议的特性,平衡开发者对源代码的需求和他们利用源代码获得的利益。
- 使用者在自己已有的源代码库上加一个接口,除了对接 Mozilla Public License 开源库的接口程序源代码以 MPL 许可的形式对外许可外,源代码中的其他源码可以不用 MPL 许可证的方式强制对外许可。
- 使用维度
- 修改维度
相关概念
分发(distribution)
分发,指将版权作品从一个人转移到另一个人,如果自己使用,不提供给他人使用,就没有进行分发。
人是广义的,也包含法人。如果使用方是公司,只在公司内部使用,也不需要遵守许可证。
许可证规定只有的 “分发” 时,才需要遵守许可证。也就是说,如果不 “分发”,就不需要遵守。
云服务(SAAS)不构成分发,使用开源软件提供云服务,不必提供源码。因此,Affero GPL(AGPL)许可证出现了,规定云服务也必须提供源码。
GPL 病毒
只要使用了 GPL 开源项目,整个项目就都变成了 GPL,把这种传染现象形象的比喻成了 “GPL 病毒”。
想要即使用 GPL 开源项目,又不把自己的代码开源,理论上是做不到的。因为,GPL 设计的目的就是防止这种场景。
不遵守 GPL 的影响,最坏情况就是被起诉,起诉之后最多就是强制停止使用 GPL,不会强制要求将自己的代码开源。。因为,《版权法》中 “违约救济” 没有提到违约者必须开源,只提到可以停止侵害和赔偿损失。
总结
- 通常我们平台开发型团队不太会改开源项目的代码,所以重点从使用维度检查对开源项目的使用即可。
- 在只使用开源项目的情况下,关注不要使用 GPL 项目即可,使用类似功能的项目平替使用到的 GPL 项目。
上一篇: JBOSS 未授权访问漏洞重现
推荐阅读
-
OpeneBayes 教程 | LLaVA-OneVision,一个强大的开源多模态宏模型,可击败 GPT-4V,现已上线!
-
微服务开源框架 TARS RPC 源代码初识 TARS C++ 服务器端
-
46 集 ESP32 的人工智能大模型对话工程硬件和软件现已开源!
-
2024 OSCAR|开源系统构建路径模型的见解和建议即将发布
-
JAVA开源项目 渔具租赁系统 计算机毕业设计
-
开源物联网平台】Fastbee 数据库持久层架构
-
docker 构建 Rancher 开源 Kubernetes 管理平台
-
OpenAI 终于 OPEN,Swarm 开源来了!(⊙o⊙)(⊙o⊙)
-
[开源项目] Jsoncpp 简单易用
-
Windows Remote Desktop 提示没有远程桌面授权服务器可提供许可证 无法保存对 graceperiod 权限的更改