当前位置: 首页 > article >正文

开源协议类型及长安链开源协议介绍

截至目前,我国参与国际开源社区协作的开发者数量排名全球第二并推出了众多社区活跃度较高的高质量开源项目,是全球开源生态的重要贡献力量,但在开源治理方面我国还处于发展初期,大部分开发者对开源的印象还限于开放代码、免费使用,尚未形成参与开源、回馈开源的意识,同时在使用开源软件的过程中也存在很多认知盲区。

开源协议是开源软件的重要组成部分,理解开源协议首先需要了解开源世界中经常提到几个概念:著作权、著佐权、专利权、版权。‌著作权是指作者对其创作的文学、艺术和科学作品所享有的专有权利,包括人身权和财产权,受著作权法的保护;著佐权是开源软件中产生的概念,利用现有著作权体制来保护所有用户和二次开发者的自由的授权方式;专利保护技术方案,通常要求“首创性”;版权保护的是作品文字性东西,只保护表达形式,趋向于文学作品。

接下来介绍开源协议类型,当前的开源协议主要分四类。一是强互惠型开源协议,例如AGPL 3.0及以后的开源协议,该类开源协议具有“强传染性”(也有部分人士认为“传染性”该词对此类协议存在污名化),不但要求软件在使用到该协议下的部分代码时完全发布必须作为整体适用该协议,即便在某些不分发代码而是采用软件即服务(Software as a Service, SaaS)的场景下,也适用于其著佐权条件,即必须整体开源代码并采用该协议,该类开源协议是希望企业在使用开源软件的同时必须回报社区;二是互惠型开源协议,例如:GPL 2.0,该类开源协议主要特点是要求用户在分发代码的情况下如果软件包含该协议下部分代码,完全发布时必须作为整体适用该协议,但以软件即服务的形式使用该协议下开源代码则未做过多约束;三是弱互惠型开源协议,如LGPL 2.1,该类协议要求完全发布时某些部分必须适用该许可证,其它部分可在其它协议下发布;四是宽松型许可证,该类型许可证允许修改源代码后闭源,例如Apache 2.0、BSD、MIT等开源协议,该类型开源协议作为商业友好型开源协议被广泛应用,长安链开源之初即采用Apache 2.0开源协议并沿用至今。不同的宽松型许可协议对于版权声明或免责条款会有不同的要求,Apache 2.0开源协议要求每一个修改过的文件都必须包含原始许可证和版权声明,例如长安链chainmaker-go/main/main.go的版权声明:

 

/*
Copyright (C) BABEC. All rights reserved.
SPDX-License-Identifier: Apache-2.0
*/

长安链所采用的Apache 2.0开源协议核心内容是以保护和尊重原作者的著作权为主要目的。对使用,复制,修改,商用不做过多限制,但必须包含原著的License信息,长安链License信息如下:https://git.chainmaker.org.cn/chainmaker/chainmaker-go/-/blob/master/LICENSE。需要注意的是,Apache2.0开源协议不授予商标和品牌的权利,因此使用长安链商标及品牌名称需要通过联系长安链开源社区获得授权许可才可合规使用(添加长安链开源社区小助手微信:ChainMaker2021)。

早期的开源许可忽视了对于专利的规范,GPL 2.0版本提及了专利。长安链所采用的Apache 2.0中也包含了与专利相关的明确条款。Apache 2.0的开源协议中存在一个“报复性条款”,即如果软件用户自己对开源软件提出专利侵权索赔,就会撤销许可,该条款在让软件用户拥有与开源软件相关的专利许可的同时处理了软件用户声称开源软件侵犯其专利的潜在情况,专利风险相对较小,这也是长安链作为商业友好软件可以被广泛应用的基础条件。

具体常见的开源协议选择有一个较为典型的参考图可供开发者快速理解:

图片

图片来源于网络

企业和个人在使用开源以及对外开源中,要注意履行开源软件许可协议相关义务,避免为自身带来不可预知的法律风险。


http://www.kler.cn/a/375025.html

相关文章:

  • 再探“构造函数”
  • 服务器宝塔安装哪吒监控
  • 如何解决docker镜像下载失败问题
  • 「C/C++」C/C++标准库 之 <cstring> 字符串操作库
  • 医疗器械设备语音ic芯片方案-选型大全
  • 常见寄存器
  • Matlab自学笔记四十:日期时间型数据的关系运算:比较大小、比较时间先后、判断是否在两个时间之间
  • 大数据-199 数据挖掘 机器学习理论 - 决策树 模型 决策与条件 香农熵计算
  • [CSP篇] CSP2024 游记(下)
  • 智能码二维码zhinengma.cn如何赋能工业产品质量安全追溯
  • uniapp和vite项目配置多环境编译,增加测试环境变量配置--mode test
  • 鸿蒙Harmony-多边形绘制组件Polygon使用详解
  • Rust精简核心笔记:第三波,基础语法完结篇
  • 基于Matlab PCA人脸识别
  • 信息安全入门——网络安全控制
  • 人机环境系统智能是东方天地人思想与西方科技思维的融合
  • Red Hat下载ISO镜像的方法
  • 软中端,硬中断(学习笔记)
  • uicc.hci.service的理解
  • 基于java+SpringBoot+Vue的“衣依”服装销售平台设计与实现
  • 初阶数据结构之顺序表的实现
  • tkinter 走进现代化【一】 - 登录页
  • 从 classList 到 DOMTokenList: 简化类名管理的工具
  • git入门教程11:git安全性
  • 2024年【制冷与空调设备安装修理】考试总结及制冷与空调设备安装修理作业模拟考试
  • 【SSH访问Termux】