亲!了解一下开源许可协议呗?

2023-11-09

哈喽,大家好!我是指北君。

今天我来给大家简单讲讲开源许可协议,只有了解开源许可协议,才能合法合理地使用各种开源软件,并保护自己的合法权益。

一、开源许可协议的目标

开源许可协议,也称“许可证”。它是一些开源支持组织为了激励和保护开源软件开发者的权益而制定,被开源促进组织(Open Source Initiative)认可并推广的国际性协议。 开源软件不懈地追求“自由”,同时也要努力保护开发者权益,否则将会影响程序员的创造激情。开源许可协议规定了你使用开源软件时的权利和责任,也就是规定了你可以做什么,不可以做什么。开源许可协议虽然不一定具备法律效力,但是当涉及相关法律纠纷时,也是非常重要的证据之一。

二、当前主流开源许可协议

目前世界上存在有上百种开源许可协议,其中有60多种已经被开源促进组织(OSI)认可并大力推广。在OSI网站上被列为主流及被广泛使用的许可有: *Apache License, 2.0 (Apache-2.0) *BSD 3-Clause "New" or "Revised" license (BSD-3-Clause) *BSD 3-Clause "Simplified" or "FreeBSD" license (BSD-2-Clause) *GNU General Public License (GPL) *GNU Library or "Lesser" General Public License (LGPL) *MIT license (MIT) *Mozilla Public License 1.1 (MPL-1.1) *Common Development and Distribution License (CDDL-1.0) *Eclipse Public License (EPL-1.0) 对于准备编写一款开源软件的开发人员,建议先了解一下这些最热门的开源许可协议,掌握不同开源许可协议的差异,选择适合自己的开源许可协议,最大限度保护自己的软件权益。 下面指北君就简单地介绍几个最热门的协议。

三、Apache License, 2.0 (Apache-2.0 )

Apache Lience允许使用者修改和重新发布代码(以其他协议形式),允许闭源商业发布和销售。Apache Lience鼓励代码共享和尊重原作者的著作权。 使用Apache Licence协议,需要遵守以下规则: 1.需要给代码的用户一份Apache Lience; 2.如果你修改了代码,需要在被修改的文件中说明; 3.在修改或衍生的代码中需要带有原来代码中的协议、商标、专利声明和其他原来作者规定需要包含的说明。 4.如果再发布的产品中包含了Notice文件,则需要在Notice文件中带有Apache Lience。你可以在Notice中增加自己的许可,但不可以表现为对Apache Lience构成更改。 Apache Licence是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

四、BSD开源协议(Berkerley Software Distribution)( BSD 3-Clause , BSD 2-Clause )

目前分为BSD 3-Clause和BSD 2-Clause。顾名思义,3-Clause包含3个条款,2-Clause只有两个。BSD允许使用者修改和重新发布代码(以其他协议形式),允许闭源商业发布和销售。BSD鼓励代码共享的同时,要求尊重代码作者的著作权。 使用BSD协议,需要遵守以下规则(2-Clause则不带第3条): 1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议; 2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档那个和版权声明中包含原来代码中的BSD协议; 3.不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广。 要点:商业软件可以使用,也可以修改使用BSD协议的代码。

五、GPL ( GNU General Public License )

GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。 GPL具有“传染性”,只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL协议的产品,则该软件产品必须也采用 GPL协议,既必须也是开源和免费。 GPL对商业发布的限制(引自Java视线论坛的Robbin): “GPL是针对软件源代码的版权,而不是针对软件编译后二进制版本的版权.你有权免费获得软件的源代码,但是你没有权力免费获得软件的二进制发行版本.GPL对软件发行版本唯一的限制就是:你的发行版本必须把完整的源代码一同提供.” 使用GPL协议,需要遵守以下规则: 1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。 2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。 3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。 4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。 由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,所以商业软件就不适合采用使用GPL协议的开源代码。 要点:商业软件不能使用GPL协议的代码。

六、LGPL ( GNU Library or "Lesser" General Public License )

与GPL的强制性开源不同的是,LGPL允许商业软件通过类库引用(link)的方式使用LGPL类库而不需要开源商业软件的代码。 但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。 要点:商业软件可以使用,但不能修改LGPL协议的代码。

七、MIT ( MIT license )

MIT许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称「X条款」(X License)或「X11条款」(X11 License)。 MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。 要点:商业软件可以使用,也可以修改MIT协议的代码,甚至可以出售MIT协议的代码。

八、MPL ( Mozilla Public License 1.1 )

MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。 要点:商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。

九、CDDL (Common Development and Distribution License )

CDDL(Common Development and Distribution License,通用开发与销售许可)开源协议,是MPL(Mozilla Public License)的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。 要点:商业软件可以使用,也可以修改CDDL协议的代码。

十、EPL (Eclipse Public License 1.0 )

EPL允许Recipients任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。 使用EPL协议,需要遵守以下规则:

  1. 当一个Contributors将源码的整体或部分再次开源发布的时候,必须继续遵循EPL开源协议来发布,而不能改用其他协议发布.除非你得到了原“源码”Owner 的授权;

  1. EPL协议下,你可以将源码不做任何修改来商业发布.但如果你要发布修改后的源码,或者当你再发布的是Object Code的时候,你必须声明它的Source Code是可以获取的,而且要告知获取方法;

  1. 当你需要将EPL下的源码作为一部分跟其他私有的源码混和着成为一个Project发布的时候,你可以将整个Project/Product以私人的协议发布,但要声明哪一部分代码是EPL下的,而且声明那部分代码继续遵循EPL;

  1. 独立的模块(Separate Module),不需要开源。 要点:商业软件可以使用,也可以修改EPL协议的代码,但要承担代码产生的侵权责任。

十一、如何确定符合你需要的协议

上面各项协议是不是感觉很深奥,不知道怎么选?没关系,按照下面的流程图,一步步下来就大概知道你可以用哪个开源许可协议了。

等熟悉了这几种最热门的开源许可协议,你就可以再看其他的开源许可协议,这样你的选择面更大了。

小北有话说

开源许可协议的出现,保证了开源软件开发者的权益,极大促进了开源软件的发展。小伙伴们可要了解这些开源许可协议,切实保障自己的权益哦。

开源指北,立志做最好的开源分享平台,分享有趣实用的开源项目。 欢迎加入交流群,你可以摸鱼、划水、吐槽、咨询。还有简历模板、各种技术面试资料等100G的资源等着你领取哦。 关注公众号开源指北,后台回复fff888马上加入,加入即送程序员进阶精品电子书一套,快来一起来聊一聊吧!

以上就是本次推荐的全部内容,我是源小北,感谢各位的观看。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

亲!了解一下开源许可协议呗? 的相关文章

随机推荐

  • 【C++ Primer Plus学习记录】共用体

    共用体 union 是一种数据格式 它能够存储不同的数据类型 但只能同时存储其中的一种类型 也就是说 结构可以同时存储int long和double 共用体只能存储int long或double 共用体的句法与结构相似 但是含义不同 例如
  • 可有可无的Mysql工作技巧 2

    你有一个订单表 CREATE TABLE sales engineering order tmp id VARCHAR 32 NOT NULL COMMENT 主键ID order no VARCHAR 50 NOT NULL COMMEN
  • Unity3D为3D物体添加点击事件

    1 相机添加脚本 ClickEvent using System Collections using System Collections Generic using UnityEngine using UnityEngine EventS
  • sqlserver数据库迁移到mysql的方法和步骤

    一 迁移方法 工具 用mysql yog 下载地址1 https download csdn net download LT 1029 12261398 下载地址2 http yunpan cn QazFaTkuUpwmf 提取码 2310
  • 编写一个函数,用来删除字符串中的空格

    程序代码 include
  • 苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V2.0

    github https github com Jackie0Feng SAMS 系统需求描述 某班有最多不超过30人 具体人数由键盘输入 参加某门课的考试 用一维数组和函数指针作为函数参数编程实现如下学生成绩管理 1 录入每个学生的学号和
  • 数据库之桥

    前言 通俗地讲 就是如何使用 工具 eclipse 连接到 你的数据库 JDBC 简介 全称为 Java Database Connectivity 可以使用Java语言去操作数据库 通过数据库提供的Connector作为支持 对于不同的语
  • MyBatis中自动生成主键

    MyBatis中自动生成主键 详细 Mybatis 配置文件配置useGeneratedKeys 参数只针对 insert 语句生效 默认为 false 在INSERT语句中 我们为可以自动生成 auto generated 主键的列 ST
  • Maven镜像(mirror)

    使用镜像代替中央仓库 国内开发人员由于网络原因 直接从中央仓库下载构件时 速度较慢或不稳定 我们通常会使用中央仓库的国内镜像站来解决该问题 配置 Maven 镜像的方法也非常的简单 我们只需要在 Maven 安装目录中 setting xm
  • 如何更改git提交代码的用户名称

    桌面单击鼠标右键 点击Git Bash Here 出现弹窗 修改git提交者的名称 git config global user name 要修改的名称 查看git提交者的名称 git config user name
  • Python: 生成带用户昵称的头像

    Python 生成带用户昵称的头像 需求 新建用户后 根据用户输入的昵称生成图片 例 注册 钉钉 用户后 头像根据输入的名字生成 开发环境 Windows 10 Python 3 8 Pillow 8 1 2 实现 蛇皮皮蛋 Python创
  • 【千律】C++基础:函数的重载

    include
  • 易游网吧无盘服务器安装,易游无盘安装教程

    易游无盘安装教程 2021 02 19 00 59 49 简介 php去除nbsp的方法 首先创建一个PHP代码示例文件 然后通过 preg replace s nbsp xc2 xa0 strip tags val 方法去除所有nbsp即
  • Sublime Text3 SublimeREPL python

    首先什么是REPL A Read Eval Print Loop REPL is available both as a standalone program and easily includable in other programs
  • qt之利用lineEdit设置密码样式

    参考博客 https blog csdn net u012288722 article details 77850974 主要参考以上大神博客实现如下 可能需要加上头文件 include
  • v8学习---添加js全局函数

    v8学习 添加js全局函数 标签 v8 2013 11 10 10 11 951人阅读 评论 0 收藏 举报 分类 v8 12 版权声明 本文为博主原创文章 未经博主允许不得转载 cpp view plain copy include
  • URL 链接中 井号#、问号?、连接符& 分别有什么作用?

    井号 表示网页中的一个位置 被称之为锚点 常用于某个网页间不同位置的跳转 简单的说就是在一个网页中 URL 不变的情况下 通过添加 buy 的字符在 URL 最后可以跳转到当前网页中已经定义好的锚点 id buy 位置 同样 的改变也会增加
  • APPIcon生成

    有两种生成方法 比较常用 一种是设计师常用的 在线生成图标 https icon wuruihong com 支持 jpg png psd 文件 可以生成圆角 可以自定义大小 生成后可以预览 模拟手机屏幕的效果预览 第二种就是终端生成 利用
  • PyTorch&CUDA安装过程及测试

    PyTorch CUDA安装过程及测试 1 准备工作 1 1 Anaconda NVDIA驱动 之前安装过了Anaconda和NVIDIA驱动 所以直接跳过这几步 打开NVIDIA控制面板 帮助 gt 系统信息 gt 组件 查看自己的CUD
  • 亲!了解一下开源许可协议呗?

    哈喽 大家好 我是指北君 今天我来给大家简单讲讲开源许可协议 只有了解开源许可协议 才能合法合理地使用各种开源软件 并保护自己的合法权益 一 开源许可协议的目标 开源许可协议 也称 许可证 它是一些开源支持组织为了激励和保护开源软件开发者的