python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13376|回复: 0

AGPL - 约束 GPL 不开源私有解决方案的版权许可协议

[复制链接]

37

主题

37

帖子

226

积分

中级技师

Rank: 3Rank: 3

金钱
140
金币
6
威望
0
贡献
0
发表于 2018-10-1 00:00:00 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
AGPL - 约束 GPL 不开源私有解决方案的版权许可协议

原有的 GPL 协议,由于网络服务公司的兴起 (譬如:Google) 产生了一些漏洞;譬如:使用 GPL 的自由软件,并不发布于网络中,则可自由使用 GPL 协议却不开源自己私有的解决方案。AGPL 则增加了对此做法的约束。


AGPL 是 GPL 的一个版权补充许可协议,在 GPL 的基础上增加了一些限制。


商业软件不能使用 AGPL 版权许可协议的代码。


高效编辑重构 批处理式 "数字 Python IDE" 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序)

http://dt.digitser.cn/zh-CN/ide/idepy/index.html


AGPL 版权许可协议是为避免一个 GPL/LGPL 协议中的漏洞,称之为 Web Service Loopwhole。主要由于 GPL 是针对传统软件分发中的商业模式 (以微软为代表),如使用 GPL 版权许可协议代码为基础完成自己的软件,当分发软件时,也必须采用 GPL 版权许可协议。


随着以 Google 为代表的作为互联网服务公司的兴起,它们 "不分发软件,为客户提供网络服务" 的商业模式就不受 GPL 协议约束;所以,Google 公司在构筑其搜索引擎时,可随心所欲的借用现有 GPL 协议的开源代码,无需开源其修改后的成果。AGPL 版权许可协议就在 GPL 协议的基础上加上了这个约束。


GPL (Gun General Public License) vesion 2.0 1991

著名的开源 Linux 操作系统,就采用了 GPL 协议。GPL 、BSD、Apache Licence、等开源许可协议,鼓励代码重用的开源范围有些不一样。


GPL 协议的出发点是代码开源、免费使用、引用-修改-衍生代码的开源-免费使用;不允许修改后和衍生的代码,作为闭源商业软件部分进行发布、销售。这也就是为什么我们能使用各种免费 linux 操作系统,包括商业公司的 linux 和 linux 上各种各样的由个人、组织、以及商业软件公司开发的免费软件的根本原因。


GPL 协议的主要内容,是:只要一软件使用  (类库引用、修改后的代码或衍生代码) GPL 协议开源代码,则该软件也必须采用 GPL 协议 (也必须开源和免费,这就是所谓的 "病毒传染性" 和 "不允许闭源的商业发布")。


由于 GPL 严格要求使用了 GPL 类库的软件也必须使用 GPL 协议,对于使用 GPL 协议开源代码的商业软件或对代码有保密要求的,就不适合集成作为类库和二次开发的基础。


GPL LPGL Mozilla BSD MIT Apache Licence 许可协议

LGPL (GNU Lesser General Public License)

LGPL 允许商业软件通过类库引用 (link) 方式使用 LGPL 类库,而不需要开源商业软件的源代码。这使得采用 LGPL 协议的开源代码,可被商业软件作为类库引用发布和销售。


但是,如修改 LGPL 协议源代码或衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码,都必须采用 LGPL 协议。因此,LGPL 协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生方式做二次开发的商业软件采用。


GPL 和 LGPL 都保障了原作者的知识产权,避免有人利用开源代码复制并开发类似产品。


Source Code 和 Object Code

Source Code 指的是,以各种编程语言写成的源代码,通过 Source Code 结合文档,可了解整个软件的体系结构及具体到某个功能函数的实现方法等。


Object Code 指的是 Source Code 经编译后,生成的类似于 "类库",提供各种接口供他人使用的目标码,也就是常见的 *.dll *.so *.pyd 等格式文件。


区分这两个概念的目的,在于:有些开源只发布 Object Code,当然,大多数发布的是 Source Code。很多开源协议也对 "发布哪种 Code 时应怎样" 有明确约束。


Contributors 和 Recipients

Contributors 指的是,对某个开源软件或项目提供了代码 (包括最初的,或修改过的) 的人或实体 (团队、公司、组织、等)。


Contributors 按参与开源软件的时间先后顺序,可分为 an initial Contributor 和 subsequent Contributors。


Recipients 指的是,开源软件或项目的获取者,显然,subsequent Contributors 也属 Recipients 之列。


Derivative Module 和 Separate Module

Derivative Module 指的是,依托或包含 "最初的" 或 "从别人处获取的" 开源代码而产生的代码,是原 "源代码" 的增强 (不等于增加)、改善和延续的模块,译为 "衍生模块"。


Separate Module 指的是,参考或借助原 "源代码",开发出的独立的、不包含、不依赖于原 "源代码模块",译为 "独立的模块"。


理解这两个概念的目的,在于:很多协议对涉及商业发布时,会有哪些是衍生的,哪些是独立的,有着明确的商业发布规定。


扫一扫关注 德云社区 微信公众号

版权声明:
本文为独家编译稿件,版权归 德云社区,未经许可不得转载。

AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2024-4-24 11:20 , Processed in 0.026883 second(s), 27 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表