菜小白聊聊开源和开源协议

news2025/1/17 22:05:25

最近想入linux的深坑,于是开启了马哥sre课程的探险之旅。在了解到Linux是一款自由和开放源码的类UNIX操作系统的历史时,深深被开源精神所折服。也强烈感受到了开源精神的伟大。也正是因为有了开放源码的精神,才有了国产百花齐放的android系统。华为的EMUI,小米的MIUI,oppo的ColorOS…等等。这些Android系统无不得益于开源。而开源协议不仅是对源码的保护,也是对源作者们艰辛的肯定和尊重。目前常见的开源协议主要有:GPL、BSD、MIT、Mozilla、Apache和LGPL。各大协议的区别如下图:一张图弄明白开源协议-GPL、BSD、MIT、Mozilla、Apache和LGPL 之间的区别 (本博客参考搬运于维基百科、百度百科和CSDN等)
在这里插入图片描述

文章目录

  • GPL
  • BSD
  • MIT
  • Mozilla
  • Apache

GPL

在这里插入图片描述

GNU通用公共许可协议(英语:GNU General Public License,缩写GNU GPL 或 GPL),是被广泛使用的自由软件许可证,给予了终端用户运行、学习、共享和修改软件的自由。许可证最初由自由软件基金会的理查德·斯托曼为GNU项目所撰写,并授予计算机程序的用户自由软件定义(The Free Software Definition)的权利。GPL是一个Copyleft许可证,这意味着只要项目的某个部分(如动态链接库)以GPL发布,则整个项目以及派生作品只能以相同的许可条款分发。这与宽松自由软件许可证有所区别 ,如BSD许可证和MIT许可证就是其中被广泛使用的例子。GPL是第一个普遍使用的Copyleft许可证。

BSD

BSD许可协议(英语:Berkeley Software Distribution license)是自由软件中使用最广泛的许可协议之一
遵守BSD License的软件,允许用作商业用途,甚至可按照专属许可证进行再发布。比较著名的例子如微软产品中引入了BSD网络部分的代码,Mac OS X中使用了不少FreeBSD的组件。也可以将一部分遵照BSD许可证发布,另外一些采取其他许可证。事实上,BSD Unix早期就是这样的,其一部分是来自AT&T的专属内容。
BSD许可证的最初稿件,其中含有与GNU通用公共许可证相冲突的地方。由于这两个许可证在自由软件中使用很普遍,如果作者想将GPL和BSD有所结合,就会出现冲突。但是1999年,BSD许可证的修订版去除了相冲突的语句。从此以后,自由软件作者就可以方便地采用BSD许可证下的软件,从而跟GPL下的作品融合。

BSD许可证并不允许受让方将其删除或替换为其他许可证。

MIT

在这里插入图片描述
于GPL、LGPL、BSD)相比,MIT是相对宽松的软件许可协议。
MIT许可协议之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X许可协议”(X License)或“X11许可协议”(X11 License)

MIT内容与三条款BSD许可协议(3-clause BSD license)内容颇为近似,但是赋予软件被许可人更大的权利与更少的限制。
有许多团体均采用MIT许可证。例如著名的SSH连线软件PuTTY与X窗口系统。Expat、Mono开发平台库、Ruby on Rails、Lua、微软的Visual Studio Code源代码等等也都采用MIT许可协议。

Mozilla

在这里插入图片描述
Mozilla公共许可证(英语:Mozilla Public License,简称MPL)是个自由、开源、详细的软件许可证,由Mozilla基金会开发并维护。该协议融合了BSD许可证和GNU通用公共许可协议的特性,追求平衡专有软件和开源软件开发者之间的顾虑。
MPL用于Mozilla Firefox、Mozilla Thunderbird及其他Mozilla软件的许可,但也被其他产品所用,如Adobe以此为Flex产品线许可,还有LibreOffice 4.0(同时使用LGPL 3+)。1.1版还被一些公司特意改编成派生许可证,如Sun Microsystems的通用开发与散布许可证。
MPL既是得到自由软件基金会承认的自由软件许可证[3],也是得到开放源代码促进会承认的开源软件许可证[4]。MPL允许在其授权下的源代码与其他授权的文件进行混合,包括私有许可证。但在MPL授权下的代码文件必须保持MPL授权,并且保持开源。

Apache

在这里插入图片描述
Apache许可证(英语:Apache License),是一个由Apache软件基金会发布的自由软件许可证,最初为Apache http服务器而撰写。Apache许可证要求被授权者保留著作权和放弃权利的声明,但它不是一个反著作权的许可证。

此许可证最新版本为“版本2”,于2004年1月发布。

Apache许可证在Apache社区内外被广泛使用。Apache基金会下属所有项目都使用Apache许可证,许多非Apache基金会项目也使用了Apache许可证:据统计,截至2012年10月,在sourceforge上有8708个项目使用了Apache许可证。

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

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

相关文章

【JUC源码专题】AQS 源码分析(JDK8)

文章目录同步队列同步队列结点 Node同步队列状态 state获取互斥锁acquire 方法tryAcquire 方法获取互斥锁addWaiter 方法enq() 入队acquireQueued()setHead 方法设置头节点shouldParkAfterFailedAcquire()parkAndCheckInterrupt()cancelAcquire 发生异常,取消线程获…

第七章第一节:顺序查找和折半查找

文章目录教程1. 查找的基本概念1.1 对查找表的常见操作1.2 查找算法的评价指标2. 顺序查找2.1 顺序查找的算法思想2.2. 顺序查找的实现2.3 查找效率分析2.4 顺序查找的优化(对有序表)2.5 用查找判定树分析ASL2.6 顺序查找的优化(被查概率不相…

在centos中注册gitlab runner

注册runner 有几种不同的方式,这里介绍的是在centos7中使用 rpm包来安装 按照gitlab runner的官网链接里面的介绍: gitlab runner 链接 下载 官网描述: ## Replace ${arch} with any of the supported architectures, e.g. amd64, arm, ar…

python 空间滤波

均值滤波器 空域变换包含灰度变换和空间滤波 灰度变换是通过点对点的映射进行图像增强,是一种点运算 空间滤波是基于邻域的一种运算,即图像像素的灰度值不仅和当前点有关,还和这个点周围邻域像素点的灰度值有关。所以空间滤波其实是一种加…

如何管理oralce口令文件和参数文件

口令文件 口令文件审核 Step 1: 使用root账号将 oracle dba的权限移除 [rootoracle-db-19c ~]# su - oracle [oracleoracle-db-19c ~]$ [oracleoracle-db-19c ~]$ id oracle uid1501(oracle) gid1501(oinstall) groups1501(oinstall),1502(dba),1503(oper),1504(backupdba)…

浅析linux 内核 高精度定时器(hrtimer)实现机制(一)

1 hrtimer 概述 在Linux内核中已经存在了一个管理定时器的通用框架。不过它也有很多不足,最大的问题是其精度不是很高。哪怕底层的定时事件设备精度再高,定时器层的分辨率只能达到Tick级别,按照内核配置选项的不同,在100Hz到1000…

灵界的科学丨一、灵界在哪里?

摘自李嗣涔教授《灵界的科学》 在国内物理学界近十位学者的见证下, 发现我们所处四度时空的物质世界之外, 似乎还有一个世界的存在, 当年我把这个世界称作信息场, 也就是俗称的灵界。 二十世纪末宇宙大尺度谜团的重大发现──…

设计模式学习记录

设计模式 UML图: ------> 依赖 ——>关联 -------▲ 实现 —–—▲ 继承 🔺———> 聚合 ▲———> 组合(关联性更强) 一、策略模式(行为型) 策略模式:是一种定义一系列算法的方法…

Java --- Spring6项目创建及注意事项

目录 一、Spring框架解决的问题 二、Spring介绍 三、Spring八大模块 四、Spring特点 五、第一个Spring6入门程序 六、spring的细节 6.1、配置文件的bean的id不能重复 6.2、spring底层是通过反射调用无参构造方法创建对象 6.3、spring会把创建好的对象存储在Map集合中 6.4…

【数据结构初阶】树+二叉树+堆的实现

真正的勇士,就是在看清生活的真相后,依旧慷慨面对他所遭受的苦难与挫折。 大学究竟教会了我们什么呢?或许答案只有一个,看清自己,与自己和解,和自己坐下来谈一谈。 人生或许本就没有什么意义,…

MySQL的缓冲池(buffer pool)及 LRU算法

1.什么是缓冲池(buffer pool) buffer pool 是数据库的一个内存组件,里面缓存了磁盘上的真实数据,Java系统对数据库的增删改操作,主要是这个内存数据结构中的缓存数据执行的。 控制块 存的是 数据页所属的表 空间号&a…

MATLAB break语句

MATLAB中 break 语句用于终止 for 或 while 循环的执行,当在循环体内执行到该语句的时候,程序将会跳出循环,继续执行循环语句的下一语句。 注意:在嵌套循环中,break 退出只能在循环发生,后通过的声明控制循…

git关于创建/删除分支常用命令

主要用来介绍git中如何操作分支的命令&#xff1a; 1.git查看所有的分支: git branch -a 2.创建本地分支&#xff1a; git checkout -b <name> 3.有了本地分支之后推送到远程分支; git push origin <name> 4.切换分支&#xff1a; git checkout <name> 5.删除…

黑*头条_第5章_文章发布粉丝管理成形记

黑*头条_第5章_文章发布&粉丝管理成形记 文章目录黑*头条_第5章_文章发布&粉丝管理成形记文章发布&粉丝管理1 需求分析1.1 功能需求1.2 前端需求1.2.1 图文数据需求1.2.2 素材管理需求1.2.3 发布文章需求1.2.4 内容列表需求1.2.5 粉丝概况需求2 定义2.1 后端定义2.…

MacBook磁盘内存空间清理软件CleanMyMac2023

Mac电脑用的时间久了&#xff0c;Mac用户尤其是MacBook用户会经常收到“磁盘几乎已满”的提示&#xff0c;如何解决这个问题&#xff0c;当我们使用苹果MAC一段时间后&#xff0c;就会有大量的垃圾文件占用磁盘空间&#xff0c;例如系统缓存文件、应用程序缓存文件、备份和重复…

2022/11/18[指针] 关于指针的初步理解

先看一段利用指针交换a和b值得代码&#xff1a; #include<stdio.h> void swap(int* p1, int* p2); int main() {int a, b;int* pa, * pb;printf("enter:");scanf_s("%d%d", &a, &b);pa &a;pb &b;printf("%d,%d\n", pa,…

面试:线程池核心线程如何保持一直运行的

对于Java中 Thread 对象&#xff0c;同一个线程对象调用 start 方法后&#xff0c;会在执行完run 后走向终止&#xff08;TERMINATED&#xff09;状态&#xff0c;也就是说一个线程对象是不可以通过多次调用 start 方法重复执行 run 方法内容的。Java的线程是不允许启动两次的&…

frp内网穿透服务

参考博客&#xff1a; https://www.jianshu.com/p/19ea81efffc4 https://blog.csdn.net/yj222333/article/details/124752420 依赖于&#xff1a;Github开源软件FRP 下载地址&#xff1a;https://github.com/fatedier/frp/releases frp 主要由 客户端(frpc) 和 服务端(frps…

基于JAVA景区售票系统设计与实现 开题报告

本科生毕业论文 基于java框架springboot旅游景区景点购票系统 开题报告 学 院&#xff1a; 专 业&#xff1a; 计算机科学与技术 年 级&#xff1a; 学生姓名&#xff1a; 指导教师…

三维模型文件以及obj、ply格式文件生成pcd点云文件

方法一、三维模型文件生成obj文件 要想生成点云文件&#xff0c;要先将三维模型文件保存为obj文件格式&#xff0c;步骤如下&#xff1a; 通过SolidWorks将模型保存为stl文件格式打开SolidWorks的插件选择&#xff0c;在ScanTo3D前面打勾 在solidworks中以网格文件的形式打开…