Linux必知词汇:开源软件协议

简介: Linux必知词汇:开源软件协议

开源协议(Open Source License),是指开源软件所遵循的许可协议,获得了开源软件的用户,需要在该协议的允许范围内对软件的源代码进行使用、修改和发行(包括以盈利为目的商业发行)。常见的开源协议如下:

  1. The MIT License
  2. The GNU General Public License v2
  3. The Apache License
  4. The GNU General Public License v3
  5. The BSD License
  6. The GNU Lesser General Public License
  7. The Mozilla Public License (MPL)
  8. The Eclipse Public License

意义与历史:
自由软件的英文为“free software”。在英文里“free”一词有“自由”、“免费”的双重含意,对于如何区分自由软件(拉丁语:libre)和免费软件(拉丁语:gratis),自由软件运动社区的创始人——理查德·斯托曼做出了以下的定义:“自由软件的重点在于自由权,而非价格。要了解其所代表的概念,你应该将“free”想成是“言论自由”一词中的含义,而不是“免费啤酒”一词中的含义。”自由软件代表用户可以自由地运行、拷贝、分发、学习、修改并改进该软件。自由软件的定义可以追溯至GNU宣言。

大部分自由软件都在互联网上自由发布,往往不收取任何费用。一些或是以离线实体的方式发行,有时会酌情收取的费用(例如:工本费和运输费),而人们可用任何价格来贩售这些软件。所以,自由软件也可以是商业软件:因为自由软件许可证并不限制贩卖软件或者提供商业服务,这些并没有违反例如GPL等自由软件许可证[13]。因此,“自由软件”是关乎自由的问题,与价格无关,软件如何定价并不影响它是否被归类为自由软件。

自由软件的定义:
自由软件基金会(FSF)对自由软件的定义首次于1989年发表。[14]这份定义后来被布鲁斯·裴伦斯(Bruce Perens)改写为《Debian自由软件指导方针》1516。

根据斯托曼和自由软件基金会(FSF)的定义,自由软件赋予用户四种自由:[17]

自由之零:不论目的为何,有使用该软件的自由。
自由之一:有研究该软件如何运作的自由,并且得以修改该软件来符合用户自身的需求。获取该软件之源码为达成此目的之前提。
自由之二:有重新散布该软件的自由,所以每个人都可以借由散布自由软件来敦亲睦邻。
自由之三:有改善再利用该软件的自由,并且可以发表修订后的版本供公众使用,如此一来,整个社群都可以受惠。如前项,获取该软件之源码为达成此目的之前提。
如果一软件的用户具有上述四种权利,则该软件得以被称之为“自由软件”。也就是说,用户必须能够自由地、以不收费或是收取合理的散布费用的方式、在任何时间再散布该软件的原版或是改写版,在任何地方给任何人使用。如果用户不必问任何人或是支付任何的许可费用从事这些行为,就表示其拥有自由软件所赋予的自由权利。

相关词:
Copyright
Coprleft
GPLv1
GPLv2
GPLv3

资料来源
1.https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6

目录
相关文章
|
4月前
|
传感器 网络协议 物联网
在Linux中搭建Mosquitto MQTT协议消息服务端并结合内网穿透工具实现公网访问
Mosquitto是一个开源的消息代理,它实现了MQTT协议版本3.1和3.1.1。它可以在不同的平台上运行,包括Windows、Linux、macOS等。mosquitto可以用于物联网、传感器、移动应用程序等场景,提供了一种轻量级的、可靠的、基于发布/订阅模式的消息传递机制。
|
2月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
178 2
|
1月前
|
Linux Apache 开发者
在Linux中,开源软件和自由软件的区别?
在Linux中,开源软件和自由软件的区别?
|
1月前
|
安全 算法 网络协议
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
40 2
|
28天前
|
存储 Linux 网络安全
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
|
29天前
|
负载均衡 网络协议 Linux
在Linux中,如何理解VRRP协议?
在Linux中,如何理解VRRP协议?
|
29天前
|
网络协议 Linux 网络安全
在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?
在Linux中,我们都知道FTP协议有两种工作模式,它们的大概的⼀个工作流程是怎样的?
|
29天前
|
域名解析 网络协议 Linux
在Linux中,我们都知道,dns采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么 时候采用udp协议?为什么要这么设计?
在Linux中,我们都知道,dns采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么 时候采用udp协议?为什么要这么设计?
|
2月前
|
网络协议 Linux 分布式数据库
【Linux】DNS系统,ICMP协议,NAPT技术详解
NAPT(Network Address Port Translation),也被称为端口地址转换,是一种NAT(网络地址转换)的形式。NAPT允许多个设备在内部网络上使用私有IP地址,并通过单个公共IP地址与外部网络进行通信。NAPT通过改变传输层的端口号来实现这一点,从而允许多个内部设备共享同一个公共IP地址。
49 0
|
4月前
|
Linux C语言