有哪些开源协议?

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

  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.mzph.cn/news/830784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低代码工业组态数字孪生平台

2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量,引发各界关注。在探索构建新质生产力的重要议题中,数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为:生产力由生产…

【linuxC语言】fcntl和ioctl函数

文章目录 前言一、功能介绍二、具体使用2.1 fcntl函数2.2 ioctl函数 三、拓展:填写arg总结 前言 在Linux系统编程中,经常会涉及到对文件描述符、套接字以及设备的控制操作。fcntl和ioctl函数就是用来进行这些控制操作的两个重要的系统调用。它们提供了对…

Visual Studio中怎样更改Nuget程序包源

场景 Visual Studio 2019 在使用NuGet添加依赖包时,在预览中搜索不到程序包。 排查下NuGet的程序包源为本地。 将程序包源修改下。 实现 在解决方案上右击选择管理解决方案中的NuGet程序包(在 Visual Studio 中打开“工具”>“选项”>“NuGet 包管理器”…

请求路径引发的http308错误

记录一个请求路径输错引发的问题。 正确路径: /user/bind-email 请求路径我们如果输错故意多打一个s /user/bind-emails 正常预检请求会报错404未找到,我们下意识的就去排查路径是不是写错了 但是如果多打一个/ /user//bind-email 此时预检请求会报308永…

Java中优雅实现泛型类型的强制转换

在Java中经常遇到将对象强制转换成泛型类的情况&#xff1a; Map<String, Object> data Map.of("name", "XiaoMing","age", 17,"scores", List.of(80, 90, 70) );List<Integer> scores (List<Integer>) data.get…

ASP.NET数据存储与交换系统设计

摘 要 该系统以Microsoft Visual Studio 2003作为开发工具&#xff0c;选用SQL Server 2000数据库来实现数据存储&#xff0c;并设计开发了一种基于B/S模式的数据存储与交换系统。该系统完成了用户注册管理、后台管理和用户空间管理功能&#xff1b;为每个用户提供了个人的存…

数据结构中的栈(C语言版)

一.栈的概念 栈是一种常见的数据结构&#xff0c;它遵循后进先出的原则。栈可以看作是一种容器&#xff0c;其中的元素按照一种特定的顺序进行插入和删除操作。 压栈&#xff1a;栈的插入操作叫做进栈/压栈/入栈&#xff0c;入数据在栈顶。 出栈&#xff1a;栈的删除操作叫做…

区块链技术:DAPP开发

随着科技的飞速发展&#xff0c;区块链技术逐渐渗透到各个领域&#xff0c;其中DAPP&#xff08;去中心化应用&#xff09;的发展尤为引人注目。作为一种新型的应用程序&#xff0c;DAPP正在重塑未来商业生态&#xff0c;其潜力无可估量。 一、DAPP的定义和特点 DAPP是指基于…

基于ssm+vue+Mysql的房屋租赁系统求租合同

开发语言&#xff1a;Java框架&#xff1a;ssmJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.…

交通运输智慧监管平台---强化物流安全与效率的新举措

一、建设背景 随着社会对于交通安全和环境保护的要求不断提高&#xff0c;对卡车运输的监管和合规性要求也逐渐加强。为了满足快速发展的物流需求&#xff0c;提高供应链协同和可追溯性、解决安全问题、提高运输效率和降低成本&#xff0c;我们利用现代技术和信息化手段着力建设…

ctfshow——SQL注入

文章目录 SQL注入基本流程普通SQL注入布尔盲注时间盲注报错注入——extractvalue()报错注入——updataxml()Sqlmap的用法 web 171——正常联合查询web 172——查看源代码、联合查询web 173——查看源代码、联合查询web 174——布尔盲注web 176web 177——过滤空格web 178——过…

nginx下载安装配置(含ssl)

下载安装环节 wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf xxx.tar.gz yum -y install pcre-devel openssl openssl-devel ./configure --prefix/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream make & make i…

HTTP协议 --中

http状态码 当浏览者访问一个网页时&#xff0c;浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前&#xff0c;此网页所在的服务器会返回一个包含HTTP 状态码的信息头&#xff08; server header &#xff09;用以响应浏览器的请求。 HTTP 状态码的英文为…

【面试经典 150 | 数组】接雨水

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;预处理方法二&#xff1a;单调栈方法三&#xff1a;双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff…

AI大模型日报#0430:疑似GPT4.5模型刷屏、上交实现「蛋白质功能定向进化」、微软紧急撤回WizardLM-2

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了今日要点以及每条资讯的摘要。 《AI大模型日报》今日要点&#xff1a; 在AI大模型领域&#xff0c;多项研究进展和行业应用动态引发关注。一夜之间&#x…

Opencv_14_多边形填充与绘制

绘制多边形&#xff1a; 1&#xff09;coInvert.polyline_drawing(src); 2&#xff09;void ColorInvert::polyline_drawing(Mat& image) { Mat canvas Mat::zeros(Size(512, 512), CV_8UC3); Point p1(100, 100); Point p2(150, 100); Point p3(200…

vue3 安装-使用之第一篇

首先需要node版本高于V16.14.1 安装 执行 npm create vitelatest 具体选择按照自己实际需要的来 Project name:项目名称 Select a framework:选择用哪种框架 &#xff08;我选择vue&#xff09; Select a variant: 选择用JS还是TS&#xff08;我选择JS&#xff09;找到项目&…

kotlinDSL控制的安卓项目导入已存在的模块后sync报错

原因很明显&#xff0c;但是我还找了好久 因为在import时并没有选择groove还是kotlin控制&#xff0c; 所以默认为groovy控制的&#xff0c;然而主项目是由kotlin dsl控制的grale行为。 原因清楚之后&#xff0c;就可以去检查一下&#xff0c;项目里是否包含了settings.gradle和…

rk3588部署yolov8视频目标检测教程

1. 环境配置 1.1 训练和导出onnx环境 #使用conda创建一个python环境 conda create -n torch python3.9#激活环境 conda activate torch#安装yolov8 pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple 1.2 导出rknn环境 安装toolkit2-1.5.2 下载链接&am…

使用 LlamaIndex 和 Llama 2-Chat 构建知识驱动的对话应用程序

文章目录 使用 LlamaIndex 和 Llama 2-Chat 构建知识驱动的对话应用程序Llama 2-70B-聊天LlamaIndex 解决方案概述先决条件使用 SageMaker JumpStart 部署 GPT-J 嵌入模型使用 SageMaker Python SDK 进行部署在 SageMaker Studio 中使用 SageMaker JumpStart 进行部署使用 Sage…