开源协议简介和选择

news2024/11/19 20:45:47

软件国产化已经提到日程上了,先来研究一下开源协议。

在这里插入图片描述

引言

在追求“自由”的开源软件领域的同时不能忽视程序员的权益。为了激发程序员的创造力,现今世界上有超过60种的开源许可协议被开源促进组织(Open Source Initiative)所认可,确保了开源工作者的权益。其中“木兰”协议作为中国的首个开源协议,尤为引人注目。
《一文深入浅出理解国产开源木兰许可系列协议》

开源协议的重要性

开源协议规定了使用开源软件时的权利与责任,为使用者设定了界限。虽然这些协议不具有法律效力,但在涉及软件版权纠纷时,它们是关键的证据。对于那些计划编写开源软件的人,了解并选择合适的开源协议是保护自己软件权益的关键。

主流的开源协议

《开源协议是什么?有哪些?如何选择?》

  1. GNU GPL(GNU通用公共许可证)
    遵循GPL的开源软件数量庞大,包括Linux系统在内的大多数开源软件都基于这个协议。GPL的主要特点包括复制自由、传播自由、收费传播和修改自由。但请注意,GPL不适合用于商业软件。
    《GPL开源软件能商用吗?》

  2. BSD(Berkeley Software Distribution)协议
    BSD给予用户极大的权利,允许他们使用、修改和重新发布遵循该许可的软件。如果再发布的软件中包含源代码,必须继续遵循BSD许可协议。BSD对商业友好,许多公司首选它作为开源许可。

  3. Apache许可证版本协议
    Apache协议类似于BSD,适用于商业软件。它为开发人员提供版权及专利许可,同时允许用户拥有修改代码及再发布的自由。Apache、Hadoop、MongoDB等项目都基于该许可协议研发。

  4. MIT(Massachusetts Institute of Technology)协议
    MIT是限制最少的开源许可协议之一。只要开发者在修改后的源代码中保留原作者的许可信息即可。许多商业软件使用MIT作为其开源许可。

  5. GUN LGPL(GNU宽通用公共许可证)
    LGPL是GPL的一个衍生版本,专为类库设计。它允许商业软件通过类库引用使用LGPL类库,而不必开源其自身的代码。然而,如果修改LGPL代码或其衍生品,所有涉及修改的额外代码和衍生品都必须采用LGPL协议。

如何选择合适的开源协议

面对众多的开源协议,如何选择成为关键。开发者应根据软件的目的和预期用途来选择合适的协议。例如,GPL不适合商用软件;而BSD、Apache和MIT则更适合商业环境。同时,也要确保所选的协议与项目的目标和愿景相一致。

乌克兰程序员 Paul Bagwell 画了一张分析图,说明应该怎么选择开源协议。
在这里插入图片描述

结语

开源软件的繁荣离不开合适的许可协议来保障各方权益。通过了解并选择合适的协议,我们可以促进开源社区的健康与繁荣,激发更多的创新与合作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358595.html

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

相关文章

SCA面面观 | 企业该如何选择组件检测工具?

一般来说,一个软件应用程序可以被分解成若干部分,为软件程序解耦,以减少整个应用程序的复杂性,这些部分就是软件组件。以一种标准化的方式相互作用,使得组件可以像机器的“零部件”一样被换入或换出,因组件…

wait 和 notify 这个为什么要在synchronized 代码块中?

一个工作七年的小伙伴,竟然不知道” wait”和“notify”为什么要在 Synchronized 代码块中 。 好吧,如果屏幕前的你也不知道,请在公屏上刷”不知道“。 对于这个问题,我们来看看普通人和高手的回答。 一、问题解析 1. wait 和 n…

理解 Node.js 中的事件循环

你已经使用 Node.js 一段时间了,构建了一些应用程序,尝试了不同的模块,甚至对异步编程感到很舒适。但是有些事情一直在困扰着你——事件循环(Event Loop)。 如果你像我一样,花费了无数个小时阅读文档和观看…

将音频与视频格式互转的7 个顶级工具方法

你是否遇到过需要将视频文件从一种格式转换为另一种格式的情况? 在编辑家庭电影或者专业电影工作室工作,我们经常需要将视频文件转换成不同的格式。市场上有很多自称能够高效转换的工具,但是我们要时刻警惕诈骗工具,它们可能会耗…

【mac-m1 docker 安装upload-labs靶场】

1.搜索upload-labs docker search upload-labs 2.下载upload-labs docker pull c0ny1/upload-labs 3.启动 docker run -it -d --name uploadlabs -p 80:80 c0ny1/upload-labs --platform linux/amd64 4.访问127.0.0.1:80 注意点:后续使用的时候会报错 需要手动创…

BAT036:TXT与DOC格式互转、DOC与DOCX格式互转

引言:编写批处理程序,可实现txt与doc文档格式互转、doc与docx文档格式互转。 一、新建Windows批处理文件 参考博客: BAT002:在右键菜单新建中添加【Windows批处理文件】_为右键菜单添加bat-CSDN博客 二、TXT与DOC格式互转 1.右键新建的批处理文件,点击【编辑】。 ​ …

虚幻UE 增强输入-触发器

上一篇增强输入基础:虚幻UE 增强输入-第三人称模板增强输入分析与扩展 主要对第三人称模板的增强输入进行分析、复刻和扩展 本篇将会对增强输入中的触发器中的各参数进行讲解 文章目录 前言触发器参数1、下移TriggerDown2、已按下TriggerPressed3、已松开TriggerRel…

新手深入浅出理解PyTorch归一化层全解析

目录 torch.nn子模块normal层详解 nn.BatchNorm1d BatchNorm1d 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.BatchNorm2d BatchNorm2d 函数简介 函数工作原理 参数详解 使用技巧与注意事项 示例代码 nn.BatchNorm3d BatchNorm3d 函数简介 参…

为什么在国内考CISP比CISSP好?

在国内考CISP比CISSP好的原因主要有以下几点👇 1️⃣国内认证认可度高 💎CISP是国内信息an全领域的重要认证,得到了国内政fu、企业和行业的高度认可。 2️⃣国内考试难度相对较低 由于CISP的考试内容与国内信息an全领域的实际情况更加贴近&am…

MySQL 8.0.32 双写参数和innodb_redo

版本为mysql 8.0.32 数据库内存和磁盘架构 #ib_16384_0.dblwr #ib_16384_0.dblwr和#ib_16384_2.dblwr 这两个文件有什么区别 从架构图中,不难看出这两个文件是双写buffer文件。 双写缓冲区是一个存储区域,在 InnoDB将页面写入 InnoDB数据文件中的正确…

C#上位机与欧姆龙PLC的通信10----开发专用的通讯工具软件(WPF版)

1、介绍 上节开发了一个winform版的通讯测试工具,这节再搞个wpf版的,wpf是什么?请自行百度,也可以看前面的博客,WPF真入门教程,wpf的界面效果是比winform漂亮,因为wpf使用了web项目中的css样式…

使用qtcreator创建qml项目(图解)

接下来就一直点继续,最后完成项目,如下图。 下面对项目进行一些基本的描述 (1)qt项目文件使用pro后缀,是qt项目的配置文件,它用于指定项目的各种参数,包括源文件、头文件、库依赖、编译选项等&a…

全网唯一值得推荐的C/C++框架和库

全网唯一值得推荐的C/C框架和库 C程序员开发指南 ​ 关注我,天天分享C/C开发技术干货! ​关注他 30 人赞同了该文章 ​ 目录 收起 标准库 C通用框架和库 人工智能 异步事件循环 音频 生态学 压缩 并发性 容器 数据库 调试 游戏引擎 图…

C++程序设计兼谈对象模型(侯捷)笔记

C程序设计兼谈对象模型(侯捷) 这是C面向对象程序设计的续集笔记,仅供个人学习使用。如有侵权,请联系删除。 主要内容:涉及到模板中的类模板、函数模板、成员模板以及模板模板参数,后面包含对象模型中虚函数调用&…

【合阳新起点公益】“关爱留守儿童 守护牙齿健康”牙膏发放活动

为了关爱儿童的口腔健康,帮助他们改善生活状况,养成良好的刷牙习惯。合阳县未成年人保护中心、合阳县新起点公益服务中心组织链接到汕头市惠泽人志愿服务中心,为孩子们申请到一批儿童爱心牙膏套盒,分别于2023年12月22日、12月30日…

基于seatunnel实现mysql同步clickhouse验证

场景: 需求想要实现mysql同步到clickhouse,seatunnel部署见前面文档linux环境seatunnel安装运行-CSDN博客。 官方说明文档 Clickhouse | Apache SeaTunnel mysql同步配置 server-id1 log_bin/var/lib/mysql/bin.log binlog_formatROW #binlog-do-db 具…

必看!干得不能再干了,Abaqus各版本安装指南

Abaqus下载链接 https://pan.baidu.com/s/1PHWhlM4cPINUqy2XYRHrhQ?pwd0531 ​1.鼠标右击【Abaqus2023(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Abaqus.2023(64bit)】。 2.打开解压后的文件夹,鼠标右击【jdk-17…

2024年MySQL学习指南(四),探索MySQL数据库,掌握未来数据管理趋势

文章目录 前言9. 约束的概念10. 约束的分类11. 非空约束12. 唯一约束13. 主键约束14. 默认约束15. 外键约束16. 约束的案例练习 前言 接上篇: 2024年MySQL学习指南(一) 2024年MySQL学习指南(二) 2024年MySQL学习指…

影响机器人行业爆炸式发展的原因有哪些(OpenPilot)

机器人是现在和未来最有发展前景的行业,这一点是毋庸置疑的。 先看一段21年的视频: 外置式L2级别自动驾驶辅助套件 Openpilot 深度体验分析 火热 作为热门专业的从业人员,能够感受到行业的关注热度和实际热度之间的差异。 原因 有很多&am…

操作系统(期末复习知识点)

第1章 操作系统引论 操作系统的目标和作用 操作系统的目标 在计算机系统上配置OS,其主要目的是实现:方便性、有效性、可扩充性、开放性。 操作系统的作用 可以从人机交互、资源管理及资源抽象等不同方面来分析OS在计算机系统中所起到的作用。 OS 作为…