避坑指南—GPL开源协议

news2024/11/12 6:40:42

0x00 前言

本文主要目的是为了了解一些基础的GPL注意事项,以及防止被一些一知半解的人蒙骗。本文不做任何内容的依据,仅为个人见解,仅供参考。

一些常见的开源协议

  • GPL
  • BSD
  • MIT
  • Mozilla
  • Apache
  • LGPL

0x01 GPL

在这里插入图片描述

GPL许可协议(GNU General Public License):只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费,这一点也就是所谓的传染性,创始人是理查德·马修·斯托曼。

中文翻译版地址:https://jxself.org/translations/gpl-2.zh.shtml

1. GPL历史版本

GPL 总共有三个版本,每一个版本之间是有区别的,大部分使用GPL开源软件都是使用GPL v2 的开源协议,比如openjdk

  • GPLv1:1989年2月25日发布。
  • GPLv2:1991年6月发布。
  • GPLv3:2007年6月29日发布。

2.GPL特点

  • 复制自由:允许软件复制到任何人的电脑中,并且不限制复制的数量
  • 收费自由:允许以各种形式进行传播
  • 传播自由:允许在各种媒介上出售改软件,但是买家知道这个软件是免费的获取的,并且解释收费的原因
  • 修改自由:允许开发人员增加或删除软件的功能,但是必须基于GPL许可协议授权。

3. GPL的传染性

依据开源作品修改的开源软件(无论是否包含独立部分)视作不可分割的完整作品,在传输、分发这样的作品时,无论其中开源部分与独立部分是分开发布还是统一发布,这一发布后的作品整体均应遵守开源协议。

3.1 不同版本GPL的感染区别

GPL存在两个维度的感染,一个是横向,一个是纵向。纵向感染指的是直接在GPL源码中修改了内容,形成了一个新的GPL版本。
横向是指用了GPL开源代码的一部分,或者所有。

在这里插入图片描述

GPL v1:只要企业使用了GPL代码,那么所有这个整体都会感染,遵循GPL协议。
GPL v2:使用了GPL代码的部分以及衍生部分,都要被GPL协议感染,遵循GPL协议,但是除了衍生的或者使用的这一个部分,独立部分都不需要遵循GPL协议(需要单独分发,遵循GPL的分发,独立部分单独分发)。
GPL v3:依据开源作品修改的开源软件,无论是否包含独立部分,都视作不可分割的完整作品,在传输、分发这样的作品时,无论其中开源部分与独立部分是分开发布还是统一发布,这一发布后的作品整体均应遵守开源协议。

这里举一个栗子:

GPL V1 如果你用了GPL发动机,并且改装了发动机,优化了性能,最终的这个成品也得是GPL。
GPL V2 如果你用了GPL发动起,并且改装了发动机,优化了性能,并且增加了基于这个改装后的发动机增加了新功能,后面的这个新功能可以避免被感染
GPL V3 如果你用了GPL发动起,并且改装了发动机,优化了性能,并且增加了基于这个改装后的发动机增加了新功能,全部都是GPL。

3.2 规避感染

  • 不分发,GPL限制只要不通过任何突进分发出去,仅自己使用,此时不需要公布自己的源码。这个最典型的就是SaaS,只给你用,但是我不给你。
  • GPL v2,独立部分可不受GPL感染。
  • 聚合类,当GPL仅作为容器或者载体的时候,不会进行感染,最常见的是通过JDK运行Java代码

3.3 静态链接,动态链接

这个争议很大,静态链接只静态使用,动态链接指动态调用,Hook,或者引用。没有具体的法律认为动态链接就一定会违反GPL。

3.4 Android 如归规避GPL

简单的说就是先将Linux的核心进行封装,然后将程序运行到这个封装之后的GPL程序上。也就是说除了封装核心,其他都不再属于GPL感染的内容。

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

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

相关文章

知识点——域适应、域泛化、在线测试适应区别 DA、DG、TTA区别

文章目录1.Domain Adaptation( DA:域适应 )源域和目标域:DA研究问题:DA目标:DA主要思想:DA三种方法:2.Domain generalization( DG:域泛化 )DG研究问题:DG目标:DA和DG优点…

css——图片缩放,拉伸,变形的解决办法

你的图片即将变得超级丝滑图片为什么会拉伸变形?怎么解决?css的object-fit属性object-fit属性有什么用介绍一下object-position举个小栗子图片为什么会拉伸变形? 前端布局时,图片会出现拉伸、缩放和变形的原因可能有多种: 1.例如图…

2.3操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则

2.3操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则页式存储逻辑地址、物理地址如何判断物理地址和逻辑地址它们之间的地址关系?页面大小与页内地址长度的关系…

现货交易入门之垂死挣扎

本文讲解的也是挣扎形态,前面以已经讲过一个挣扎形态,但是本文这个形态的名字更让人能耳目一新,因为它叫“垂死挣扎线”,这并不是普通的挣扎线。是“垂死”的! “垂死挣扎线”与“顶部挣扎线”很相似,都是出…

JavaApi操作ElasticSearch(强烈推荐)

ElasticSearch 高级 1 javaApi操作es环境搭建 在elasticsearch官网中提供了各种语言的客户端:https://www.elastic.co/guide/en/elasticsearch/client/index.html 而Java的客户端就有两个: 不过Java API这个客户端(Transport Client&#…

element-ui日期选择器时间差

关于使用element-ui日期选择器时,发现时间差问题,特此记录下 #主要记录三个问题 日期选择器选择时获取到的格式相差八小时当日期格式为–拼接时,转成时间戳会相差八小时(2023-03-09)DatePicker设置区域范围和校验&…

TiDB数据库架构概述

文章目录TiDB体系架构TiDB ServerStorage Cluster(存储引擎)PD cluster题目TiDB体系架构 TiDB Server Sql语句最先到达 TiDB Server集群 它是无状态的,数据并不是存储在这里面,当一个会话连接到TiDB Server集群上,sql语句发过来&#xff0c…

大数据自学学习技巧?

经常有人说:先别管大数据是什么,现在理解不了没关系,先开始学,等学着学着就明白了,这种学习路线基本是混合的,很难分清楚自己学了这段怎么用在以后项目中,所以会越学越迷茫,但是等你…

机房漏水设备受损,一招轻松避免

随着科学信息技术的发展和社会经济的快速发展,计算机系统得到了广泛的应用,计算机房设备中使用的设备越来越多。 漏水对机房内精密电子设备容易造成损坏,电器短路等。一旦机房发生漏液,水流到线槽,会导致机房断电,造成…

IPv6公共DNS现在提供加密DNS查询

支持DoT/DoH DoT:dns.ipv6dns.comDoH:https://dns.ipv6dns.com/dns-query为什么需要加密DNS 配置: Windows 10/8/7 1 右键网络进入属性或者右键右下角的Inernet进入网络共享中心,如下图: 2 点击网络和共享中心左侧的"更改适配器设置"链接,如下图: 3 选中正…

一文读懂pinia Vue状态管理

文章目录1.概述:2. 准备工作3.pinia 安装及使用3.1. 安装pinia3.2 store的创建和使用3.3 getters 使用3.4 action 的使用3.5 总结示例代码4.总结1.概述: pinia 类似与vue2 中的vuex ,实现跨页面共享状态管理,类似与java 中的sess…

Git设置SSH Key

一、git 配置 (1)打开 git 命令窗口 (2)配置用户名(填自己的姓名) git config --global user.name “xinyu.xia” (3)配置用户邮箱(填自己的邮箱&#xff0…

在SNAP中用sentinel-1数据做DInSAR测量---以门源地震为例

在SNAP中用sentinel-1数据做DInSAR测量---以门源地震为例0 写在前面1 数据下载2 处理步骤2.1 split2.2 apply orbit 导入精密轨道2.3 查看数据的时空基线base line2.4 back-geocoding 配准2.5 Enhanced Spectral Diversity2.6 Deburst2.7 Interogram Formation 生成干涉图2.8 M…

【Unity3D日常开发】Unity3D中协程的使用

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 最近有小伙伴问协程怎么用、怎么写,我也是会用会写…

Revit管理链接模型视图样式和链接CAD

一、Revit中如何管理链接模型的视图样式 Revit软件协同,无非就两种方式:1、工作集;2、链接文件。其中“工作集”属于软件内部的工作协调方式,不是我们本期问题汇总要说明的问题,这里我们着重说一下第二种关于“链接文件”方式协同…

我们的理性何处安放

每天工作压力和各种人相处都让我们非常忙碌,我们上大学,努力工作,都是想获得更好的人生场景,素养,提升自身的认知,这样就是对我们大多数人生最负责任。如何让自己理性与人为善,并能被人温柔以待…

大数据-学习实践-3HDFS

大数据-学习实践-2HDFS (大数据系列) 文章目录大数据-学习实践-2HDFS1知识点2具体内容2.1HDFS介绍2.2HDFS操作2.2.1基本操作2.2.2Java操作HDFS2.3HDFS体系结构2.3.1NameNode2.3.2SecondaryNameNode2.3.3DataNode2.3.4总结2.4HDFS回收站2.4HDFS安全模式2.5定时上传至HDFS2.6HDF…

java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单

java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显…

Kalman Filter in SLAM (4) ——Iterated Extended Kalman Filter (IEKF, 迭代扩展卡尔曼滤波)

文章目录1. IEKF 概述2. IEKF 的核心思想2.1. The Motivation of Iteration2.2. IEKF 迭代线性化步骤3. IEKF 的推导3.1. 预测公式3.2. 校正公式1. IEKF 概述 由于非线性模型中做了线性化近似,当非线性程度越强时,误差就会较大,但是由于线性…

删库跑路现场还原

数据库是公司重要资产,在此类重要资产平台上,尤其是重要操作,应该保持敬畏心。数据库被删了?可怎么证明是某某某删了数据库?或者根本都不知道谁删除了数据库,又没抓现行,该怎么办?正…