开源软件的起源与开放源代码协议有人说没有开源软件就没有我们今天的生活,是开源软件改变了我们的生活,从众所周知的Linux到随处可见的Android系统,我们的生活中充满了开源软件的身影。但是你知道开源软件的历史么?你知道它是如何发展至今的么? 开源软件就是在GNU通用公共许可证(GPL)下发布的软件,以保障软件用户自由使用及接触源代码的权利。这同时也保障了用户自行修改、复制以及再分发的权利。简而言之:所有公布软件源代码的程序,都可以称为开放源代码软件。 在了解开源软件之前,我们先来看看开源软件的定义。开放源代码的协议最早是由Debian创始人之一Bruce Perens提出的。 开放源代码的协议也是目前绝大部分开源软件所遵循的协议[摘自维基百科]: 自由再散布(Free Distribution):允许获得源代码的人可自由再将此源代码散布。 源代码(Source Code):程序的可执行文件在散布时,必需以随附完整源代码或是可让人方便的事后取得源代码。 派生著作(Derived Works):让人可依此源代码修改后,在依照同一许可协议的情形下再散布。 原创作者程序源代码的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本号码以与原始的代码做分别,保障原始的代码完整性。 不得对任何人或团体有差别待遇(No Discrimination Against Persons or Groups):开放源代码软件不得因性别、团体、国家、族群等设置限制,但若是因为法律规定的情形则为例外(如:美国政府限制高加密软件的出口)。 对程序在任何领域内的利用不得有差别待遇(No Discrimination Against Fields of Endeavor):意即不得限制商业使用。 散布许可协议(Distribution of License):若软件再散布,必需以同一条款散布之。 许可协议不得专属于特定产品(License Must Not Be Specific to a Product):若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必需要符合开放源代码的条件。 许可协议不得限制其他软件(License Must Not Restrict Other Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的授权条件也要遵照开放源代码的授权。 许可协议必须技术中立(License Must Be Technology-Neutral):意即许可协议不得限制为电子格式才有效,若是纸本的许可协议也应视为有效。 从1980年开始,第一个开放源代码的项目出现到今天,开源软件已经走过了34年的春秋,在这34年中都出现了哪些值得人们记住的事情呢? 1980年——Usenet即“新闻讨论组”1980年——Usenet(即“新闻讨论组”) 1979年,Duke大学的两个研究生Tom Truscott和Jim Ellis,提出一种分布式的网上讨论组的构想。这种讨论组创建之初,主要是供UNIX爱好者协会(USENIX)的成员使用,因此就被定名为USENET。当然,后来全世界的用户都在使用它。 Usenet是一种分布式的互联网交流系统,源自通用用途的UUCP网络,Usenet包含众多新闻组,它异于传统的新闻传播方式,并且拥有众多的消息与新闻流的网络汇集。
Usenet里的消息以帖子的方式根据所分Usenet层级存储在服务器,多数服务器不断转发其消息给其他服务器,最终新闻组消息被分布式存储于全球大量的计算机中。也许这个开头就有争议,但开源的发展一直就离不开合作。借助Usenet,全球的开发人员可以轻松合作并共享软件。这要是放在以前,简直就是异想天开。 Usenet是建立在互联网的顶层结构,不过当时还没有“互联网”这个概念。从多方面来说,Usenet是当今互联网论坛的先驱,它比万维网早整整十年。 1983年——理查·斯托曼的GNU计划1983年——理查·斯托曼发起GNU计划 GNU计划(英语:GNU Project),有译为“革奴计划”,理查德·斯托曼在1983年9月27日公开发起自由软件集体协作项目。它的目标是创建一套完全自由的操作系统GNU。
理查德·斯托曼最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。 美国自由软件运动的精神领袖、GNU计划以及自由软件基金会的创立者。作为一个著名的黑客,他最大的影响是为自由软件运动竖立道德、政治及法律框架。他被许多人誉为当今自由软件的斗士、伟大的理想主义者。 GNU的标志 许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。 GNU工程十几年以来已经成为一个对软件开发主要的影响力量,创造了无数的重要的工具,例如:强健的编译器,有力的文本编辑器,甚至一个全功能的操作系统。这个工程是从1984年麻省理工学院的程序员理查德·斯托曼的想法得来的,他想要创建一个自由的、和UNIX类似的操作环境。从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件。 自由软件运动是一个推广用户有使用、复制、研究、修改和分发软件等权利的社会运动。接近和相关的运动包括开放源代码运动及自由软件的开放源代码运动,这运动跟1970年代的黑客文化有渊源。 随着时间的推移,GNU计划产生了不计其数的开源软件,GNU通用公共许可证(GPL)也随之诞生。这时候的GNU软件中就差一个OS内核尚未完成。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。 1989年——386 BSD操作系统1989年——386 BSD操作系统 伯克利软件套件(英语:Berkeley Software Distribution,缩写为 BSD),也被称为伯克利Unix(Berkeley Unix),是一个操作系统的名称。衍生自Unix属于类Unix系统,1970年代由伯克利加州大学的学生比尔·乔伊开创,也被用来代表其衍生出的各种套件。
BSD常被当作工作站级别的Unix系统,这得归功于BSD使用授权非常地宽松,许多1980年代成立的计算机公司,不少都从BSD中获益,比较著名的例子如DEC的Ultrix,以及Sun公司的SunOS。 BSD 必须要有AT&T的许可才能使用。由于法律纠纷等诸多原因,同为自由软件的BSD并没能像Linux一样广泛传开来。BSD有很多种衍生版本,比如:FreeBSD、NetBSD 和 OpenBSD。 1991年——Linus Torvalds创建Linux1991年——Linus Torvalds创建Linux Linux这只改变世界的小企鹅诞生于1991年,在赫尔辛基的一个大学宿舍里,一名叫林纳斯·托瓦茨的大学生为了让自己更方便的访问大学主机上的新闻和邮件,自己编写了磁盘驱动程序和文件系统,这些就是Linux内核的雏形。当时年仅21岁的林纳斯不知道他的这些代码将来会改变整个世界。
在自由软件之父理查德·斯托曼(Richard Stallman)某些精神的感召下,林纳斯很快以Linux的名字把这款类Unix的操作系统加入到了自由软件基金(FSF)的GNU计划中,并通过GPL的通用性授权,允许用户销售、拷贝并且改动程序,但你必须将同样的自由传递下去,而且必须免费公开你修改后的代码。这说明,Linux并不是被刻意创造的,它完全是日积月累的结果,是经验、创意和一小段一小段代码的集合体。 今天由Linus Torvalds带领下,众多开发共同参与开发和维护Linux内核。理查德·斯托曼领导的自由软件基金会,继续提供大量支持Linux内核的GNU组件。 一些个人和企业开发的第三方的非GNU组件也提供对Linux内核的支持,这些第三方组件包括大量的作品,有内核模块和用户应用程序和库等内容。Linux社区或企业都推出一些重要的Linux发行版,包括Linux内核、GNU组件、非GNU组件,以及其他形式的的软件包管理系统软件。 Linux发行版一直被用来作为服务器的操作系统,并且已经在该领域中占据重要地位。根据相关报告显示,十个最大型的网络托管公司有八个公司在其Web服务器运行Linux发行版。 |