GPL、BSD、Apache介绍以及三者之间的区别以及Android与他们之间的关系

一、GPL

要解释清楚GPL这个东西,一定要把GNU说一说。

GNU:是“GNU is Not Unix”的递归缩写。它的目标是创建一套完全自由的操作系统,但是由于技术或者其他原因,GNU组织提供的只是运行的Unix上的一些软件:gcc、vi

GPL:是General Public License的缩写。也是GNU中包含的协议条款。GPL是GNU试图保证你共享和修改自由软件的自由——保证自由软件对所有用户是自由的。受GPL协议保护的软件,只要使用者对软件进行二次开发或者修复BUG之类的操作,必须公开对源程序修改或添加后的所有代码。

1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。

2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。

3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。

4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。

二、BSD

BSD是Berkeley Software Distribution(伯克利软件套件)的缩写。在1977年至1995年由加州大学伯克利分校开发和发布的。其主要开发者是Bill Joy,而Bill Joy在1982与其他两人创建了

太阳微系统公司(Sun Microsystems)。为什么BSD诞生在伯克利大学而非其他著名大学?原因很简单,Unxi系统的创始人,Ken Thompson到他的母校去“支教”了。这一契机为Bill Joy开发BSD提供了基础。

历史上, BSD曾经被认为是UNIX的一支——"BSD UNIX", 因为它和AT&T UNIX操作系统共享基础代码和设计。在20世纪80年代,衍生出了许多变形的UNIX授权软件。比较著名的如DEC的Ultrix及Sun公司的SunOS。1990年代,BSD很大程度上被System V4.x版以及OSF/1系统所取代,晚期BSD版本为几个开源软件开发提供了平台并且一直沿用至今。今天,“BSD”并不特指任何一个BSD衍生版本,而是类UNIX操作系统中的一个分支的总称。

三、Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。

它可以运行在几乎所有广泛使用的计算机平台上。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

同时Apache在Linux、Unix、Windows系统平台都可以正常运行,这也证明了其可移植性方面的强大。

四、GPL、BSD、Apache三者之间的关系

话不多说,借用网上的一张图来解释,简单明了。

五、Android

要想理清Android与GPL、BSD、Apache之间的关系,不妨先看下图。

上图是 Openfoundry 绘制的 Android 的授权许可证结构,可以看到在 Android 多层软件栈中,仅仅最核心的 Linux 内核使用了 GNU 通用公共许可证,在这个层次上,Google 对 Linux 内核的所有修改必须反馈回 Linux 主版本树(Android 的内核将在 Linux 3.3 版本进行回归,两个版本的 Linux 内核进行融合)。

其上层的类库以及应用框架以及所谓用户空间部分,大部分使用了“ 温和 ”的 Apache-2.0 软件许可授权,允许 Android 上的开发商基于 Android 的源代码进行开发而不向社区反馈。基于上文讨论 GPL 的第一个问题,用户空间的类库以及程序使用 Linux 内核的系统调用不被视为是Linux内核的衍生产品,因而得以自由采用 Apache-2.0 的软件授权进行发布。GPL 世界和非GPL世界的分界线在于一个叫做 Bionic Libc 的类库。Bionic Libc 的关键之处在于如果 Bionic Libc 受到内核 GPL 的“感染”,将会波及非 GPL 的用户空间的各个模块。

Android 的 Bionic Libc 的类库,采用 BSD 的许可证授权。在 2008 年 Google IO大会上,一份著名的 PPT:“ Android Anatomy And Physiology ”讲到 Android 使用 Bionic Libc 类库替换Linux常用的 Gnu glibc ,其中一个主要原因是 “ We want to keep GPL out of user-space ”。

时间: 2024-10-10 07:53:51

GPL、BSD、Apache介绍以及三者之间的区别以及Android与他们之间的关系的相关文章

abstract ,interface 之间的区别 和 abstract ,native之间的区别

语法区别: abstract:抽象类--有abstract修饰,有构造方法:interface(接口)没有:   有普通的成员变量:   interface 没有: 有非抽象的普通方法: interface 没有: 抽象方法的访问类型是public,protected:     interface 的抽象方法必须是public abstract 修饰:默认是public abstract: 抽象方法中静态成员的类型可以是任意的: interface 的静态成员的类型必须是 public  sta

Web服务器之iis,apache,tomcat三者之间的比较

IIS-Apache-Tomcat的区别 IIS与Tomcat的区别 IIS是微软公司的Web服务器.主要支持ASP语言环境. Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现,是基于Apache许可证下开发的SJP语言环境容器,严格得说不能算是一个WEB服务器,而是Apache服务适配器. tomcat主要的任务不是WEB服务,而是支持JSP语言环境. IIS就是也款WEB服务器,支持ASP语言环境 Apache与Tomcat的区别 APA

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种( http://www.opensource.org/licenses/alphabetical ).我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议.如果要开源自己的代码,最好也是选择这些被批准的开源协议. 这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考. BSD开源协议(original BSD l

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理

欢迎访问aw's blog.对我的观点感兴趣,可通过订阅我的RSS(什么是RSS?)保持更新,选择您使用的阅读器:Google Reader.鲜果.抓虾(更多) 1 当Adobe.Microsoft.Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来! 最初来自:sinoprise.com/read.php?tid-662-page-e-fpage-1.html(遗憾的是这个链接已经打不开了),我基本未改动,只是进行了一些排版和整理.参考文献:http://www.fsf.o

【转】五种开源协议的比较(BSD, Apache, GPL, LGPL, MIT)

当 Adobe.Microsoft.Sun 等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来! 现今存在的开源协议很多,而经过 Open Source Initiative 组织通过批准的开源协议目前有 58 种(http://www.opensource.org/licenses/alphabetical).我们在常见的开源协议如 BSD, GPL, LGPL, MIT 等都是 OSI 批准的协议.如果要开源自己的代码,最好也是选择这些被批准的开源协议. 这里我们来看四种最常用

六种开源协议的比较(BSD, Apache, GPL, LGPL, MIT, MPL)

最初来自:sinoprise.com/read.php?tid-662-page-e-fpage-1.html(遗憾的是这个链接已经打不开了),我基本未改动,只是进行了一些排版和整理. 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical).我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议.如果要开源自己的代码,最

socket,tcp,http三者之间的区别和原理

http.TCP/IP协议与socket之间的区别下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置: 7 应用层 例如HTTP.SMTP.SNMP.FTP.Telnet.SIP.SSH.NFS.RTSP.XMPP.Whois.ENRP 6 表示层 例如XDR.ASN.1.SMB.AFP.NCP 5 会话层 例如ASAP.TLS.SSH.ISO 8327 / CCITT X.225.RPC.NetBIOS.ASP.Winsock.BSD sockets 4 传输层 例如TC

keydown,keypress,keyup三者之间的区别

最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件的默认行为来屏蔽此类字符,但是屏蔽之后所有的安检操作都会被屏蔽,文本框会变成可读的.如果只想屏蔽特定的字符,需要检测keypress事件对应的字符编码,然后决定如何响应. 但是我在利用keypree事件的时候,完全搞蒙了.因为前面看了keydown.keypress.keyup事件,它们到底怎么用呢

外发外协外包三者之间的区别与联系

1.应当贯彻顾客为中心原则,通过建立体系来控制过程,确保产品质量.不要化精力在符合标准要求上.如果您 的目标.产品的要求不切合顾客要求的话,就是符合了ISO 9001标准要求,不能满足顾客要求的,符合顾客要求了,顾客满意了,不注意质量成本,经济效益,也就不一定能赚到钱的. 2.7.4条采购要求是,如果您从质量管理体系外得到各种影响产品要求符合性的资源(过程也作为一种资源)的话,就必须对这些产品或者活动(也就是过程) 加以控制的."采购"英文是purchasing,"外包过程&