有哪些开源协议?

news/2024/11/16 14:59:58/

目前存在多种开源协议,它们各自有不同的特点和适用场景,旨在保护开发者权利的同时促进软件的共享和协作。以下是几种常见的开源协议

  1. MIT License(麻省理工学院许可证)

    • 非常宽松的许可,基本上允许你做任何事情,只要包含原始版权和许可声明。
    • 适合希望代码能够被广泛使用的项目。
  2. Apache License 2.0(Apache 2.0许可证)

    • 提供专利授权保护,要求任何基于该软件的作品在发布时也要提供相同的授权条款。
    • 适用于企业级项目,特别是那些关注专利授权的项目。
  3. GNU General Public License (GPL)

    • 有两种主要版本,GPLv2和GPLv3,强调“Copyleft”原则,即如果你修改并发布了基于GPL软件的作品,你也必须以GPL发布你的修改版。
    • GPL确保衍生作品保持开源状态,适用于希望确保代码保持开放的项目。
  4. GNU Lesser General Public License (LGPL)

    • 相较于GPL更为宽松,允许与非开源软件链接,而不强制整个作品开源。
    • 适用于库或框架,使得它们可以在非开源应用中使用。
  5. Mozilla Public License 2.0 (MPL 2.0)

    • 类似于LGPL,允许在非开源产品中使用,但修改后的源代码必须开源。
    • 适用于希望源代码改动能回馈社区,但又不想强加GPL那样严格的条件的项目。
  6. Berkeley Software Distribution (BSD) Licenses

    • 包括2-clause BSD、3-clause BSD和4-clause BSD等多个版本,都非常宽松,几乎与MIT相似,但某些旧版本有额外的要求(如广告条款)。
    • 适合想要最小限制的项目。
  7. Creative Commons (CC) Licenses

    • 虽然主要是为创意作品设计,但也有一部分被用于软件文档或其他内容。有多种变体,如CC BY(署名)、CC BY-SA(署名-相同方式共享)等。
    • 不是最典型的软件许可证,但在某些混合内容项目中使用。
  8. Eclipse Public License (EPL):

    • EPL是一种较宽松的协议,要求衍生作品必须在相同的EPL协议下发布,但如果作品是单独的模块,则可以使用不同协议。
    • 适合希望鼓励模块化开发和重用的项目。
  9. Common Development and Distribution License (CDDL):

    • 受Mozilla Public License影响,CDDL强调对专利的保护,并要求修改后的作品在相同的CDDL下发布。
    • 适用于需要较强专利保护策略的开源项目。
  10. Attribution Assurance License (AAL):

    • 类似于GPL,但重点在于确保贡献者得到署名,适合重视贡献者名誉权的项目。
  11. Artistic License (和Artistic License 2.0):

    • 最初为Perl语言设计,旨在平衡自由使用和保护作者的意愿。2.0版本更清晰地定义了许可条款。
    • 适用于特定社区或有特殊文化背景的项目。
  12. SIL Open Font License (OFL):

    • 专为字体设计的开源协议,允许自由使用、修改和分发字体,但要求衍生字体使用不同的名称。
    • 适用于开源字体项目。
  13. Cocoapods License:

    • 虽然不是一个独立的开源协议,但Cocoapods是一个iOS和MacOS开发的依赖管理工具,它处理了许多开源库的许可证问题,确保开发者遵守所使用的库的许可证。

这些只是众多开源协议中的一部分,开源促进组织(Open Source Initiative, OSI)已经认可了超过80种不同的开源许可协议,每种都有其特定的用途和适用范围。选择合适的开源协议需考虑项目的具体需求、与其他开源组件的兼容性以及对下游用户的期望。


http://www.ppmy.cn/news/1446738.html

相关文章

chrome和drive安装包路径

Chrome for Testing availability (googlechromelabs.github.io) 下载Stable下面的包哈

写一个简单的程序

思路分析: 1. 导入必要的库 首先,确保你的项目中包含了AWT或Swing库,因为我们将使用它们来创建图形界面。 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import j…

edge 入门基础了解使用

随着Windows 11的发布,Microsoft Edge也迎来了新的更新和改进。作为一名长期使用Edge的用户,我不仅注意到了这些表面的变化,还深入研究了Edge在Windows 11上的新特性和潜在优势。 快捷方式 查找框 在Microsoft Edge浏览器中,按…

如何快速找到python里面from_pretrained下载的模型位置(利用everything或fsearch)

问题: pipe DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", use_safetensorsTrue, variant"fp16")经常在python中会下载预训练模型,然后在pycharm中使用ctrl鼠标点击也无法跳转位置 解决方法&a…

redis运维篇下篇

最近在学redis,由于笔者是学运维的,所以推荐学习运维的小伙伴参考,希望对大家有帮助! redis运维篇上篇:http://t.csdnimg.cn/MfPud 附加redis多用户管理:http://t.csdnimg.cn/DY3yx 目录 十.redis慢日志 十一.redis的key的有效…

Python 与 TensorFlow2 生成式 AI(三)

原文:zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者:飞龙 协议:CC BY-NC-SA 4.0 第七章:使用 GAN 进行风格转移 神经网络在涉及分析和语言技能的各种任务中正在取得进步。创造力是人类一直占有优势的领域&…

【java数据结构之八大排序(上)-直接插入排序,希尔排序,选择排序,堆排序,向下调整(大根堆,小根堆)等知识详解】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

Java自定义工具类中使用RedisTemplate的遇到空指针问题

话不多说,上错误代码,以下是我在静态方法里使用RedisTemplate类,这里加了Autowired ****省略import包**** Component public class CommonUtils {Autowiredprivate static RedisTemplate redisTemplate;public static String test() {String…