小言_互联网的博客

开源软件和Linux起源

262人阅读  评论(0)

一. 什么是开源软件

开源软件就是源代码在一个开源协议下被公开、并且允许其他人以任何形式使用、学习、改动、分发的软件。

二.开源软件的简史

五六十年代 – 最早的开源软件

上个世纪五六十年代的时候,绝大部分的软件都是由学术界和企业的研究人员合作写出来的,这些软件以公有领域软件(Public-Domain Software )的形式被分享出来,也即今天我们所谓的开源软件。这些软件的分享秉持着学术界一向的公开、合作的原则,并没有被商品化。 而且那个时候不同的硬件与操作系统的兼容性并不好、所以软件的源代码都会和机器代码一起发布,以便于修改和调制。

目前公认最早的开源软件是1953年的A-2 系统,即 A-0系统之后的第二个版本。那什么是A-0系统呢?A-0系统(A-0 System),全称算术语言版本零 (Arithmetic Language Version 0),是第一台商用电子计算机UNIVAC I 上的编译器,能将程序编译成机器码。

它是1951至1952年间,由美国海军准将以及最早的女性计算机科学家之一的格蕾丝·赫柏(Grace Hopper)开发的。后来,1953年,美国早期的电脑制造商,雷明顿兰德公司,开发出A-2 系统以后,就把源代码公开给广大用户了,并且欢迎用户提交对A-2系统的改进。

从那以后,几乎全部IBM公司的大型计算机也都和源代码一同发布。有些大学甚至明文规定电脑上所有安装的软件必须有开源代码。

六十年代末至七十年代初 – 开源软件数量开始减少

不过,六十年代末期之后,随着操作系统和编译器的进化,制造软件的成本相对于硬件也日益增高。软件行业逐渐发展,开始与当时的硬件制造商捆绑发布的软件成为竞争者。捆绑的开源软件渐渐变得“费力不讨好”,因为这些软件虽然名义上开源,但是开发的成本还是被加到了整体机器的价格里,可是有些消费者为了个性化的需求,并不想要为捆绑的软件买单。1969年1月17日,美国与IBM公司的法律诉讼上,美国政府甚至把捆绑的软件指责为反竞争行为。 尽管当时一些软件仍然免费,但越来越多的软件开始在限制性许可证下被商业销售。

最开始,软件并不受版权保护,直到1974年,美国新科技版权委员会(US Commission on New Technological Uses of Copyrighted Works)决定计算机程序同样是一种个人原创,应该被赋予相应的法律版权。此后,那些没有许可的软件就和源代码一起,作为公有领域软件一并分享给大众了。

七十年代末到八十年代初

七十年代末到八十年代初,电脑供应商和软件公司开始例行对软件许可收费,把新的软件开发被当做公司财产,并通过版权、商标、租赁合同的形式加以法律限制。1976年,比尔·盖茨还写了一篇文章,《致爱好者的公开信》(An Open Letter to Hobbyists),文中,盖茨说,业余爱好者群体在没有支付许可费用就大量分享微软产品 Altaire BASIC(一种BASIC语言的编译器),他对此表示很失望,并认为这对开发者付出的时间和精力是不公平的。为了增加利润,公司普遍不再发布源代码,只发布可执行的、被编译好的机器码。

美国著名的程序员、自由软件活动家,大名鼎鼎的理查德·斯托曼(Richard Stallman),对这种现象表示很沮丧。他担心从此以后他就不能再学习或者修改其他人写好的软件了。他甚至认为大公司这种保留源代码的行为是一种伦理上的错误。于是,1983年,他在麻省理工学院发起了著名的GNU计划,是一个自由软件集体协作的计划,目的是开发出一套完全自由(Free Software)的操作系统。他还发布了《GNU宣言》,解释发起这个计划的初衷,理由之一就是要“重现当年软件界合作互助的团结精神”。

这里要特别强调,如今很多人把开源软件(Open Source Software)和自由软件(Free Software)当成同义词,其实两者还是有区别的。斯托曼在文章《为什么开源漏掉了自由软件的关键点》中解释到:

“The two terms describe almost the same category of software, but they stand for views based on fundamentally different values. Open source is a development methodology; free software is a social movement. “
“这两个词几乎描述的是同一类软件,但却表现了两种不同的价值角度。开源是一种软件开发方法论,自由软件则是一种社会运动。
不过,开源和自由软件在概念上并不冲突,因此,我们在文章中会把两者当做近义词。

八十年代至九十年代

在斯托曼创立了GNU计划后,GNU的许多产品至今都在被广泛应用,例如GNU调试器和Emacs文档编辑器。除了GNU的自由软件计划,与此同时还有很多非正式的软件分享,比如所谓业余爱好者和黑客们,在互联网被广泛应用以前,会通过计算机杂志、计算机书籍的形式分享代码。后来随着互联网的普及,很多程序员也在电子布告栏系统(英文简写为BBS,是目前流行的网络论坛的前身)上分享源代码。

到了九十年代,Linux内核的开发,与GNU只缺少内核的操作系统珠联璧合,GNU/Linux成为了第一个完全自由的开源操作系统,并被广大程序员沿用至今。目前很多人直接省略了“GNU”,把这个操作系统叫做Linux,实际上斯托曼对这个称呼还挺不满意的,他坚持应该叫“GNU Linux”才能体现GNU和Linux共同的功劳。

九十年代初期,更多的开源操作系统被发布出来,比如FreeBSD和NetBSD,二者和GNU/Linux 一样,也是类Unix的操作系统。FreeBSD和NetBSD是基于BSD系统(全称是Berkeley Software Distribution,译为伯克利软件包,由美国加州大学博客利分校的学生比尔·乔伊开创)开发的。(此后,1995年,OpenBSD基于NetBSD开发;2004年,Dragonfly BSD基于FreeBSD开发。)

九十年代末至今

1998年,Eric Raymond 和 Bruce Perens成立了Open Source Initiative(OSI,中文名为“开放源代码促进会”),开始向商业企业(例如Netscape)提供开源代码。OSI相信自由的开源代码会比闭源代码带来更多实际效益,并且希望软件公司巨头和其他高科技公司也能转向开源。

如今,随着个人设备和技术的普及,无数的优质开源软件和项目如雨后春笋般涌现出来,从浏览器、操作系统,到各种编程语言、编译器、企业管理工具、游戏……

补充

1)GNU和 Linux 是什么关系?

Unix 系统被发明之后,大家用的很爽。但是后来开始收费和商业闭源了。 Richard Stallman对此非常不爽,于是发起 GNU 计划,模仿 Unix 的界面和使用方式,从头做一个开源的版本。然后他自己做了编辑器 Emacs 和编译器 GCC。GNU 是一个计划或者叫运动。在这个旗帜下成立了 FSF,起草了 GPL 等。接下来大家纷纷在 GNU 计划下做了很多的工作和项目,基本实现了当初的计划。包括核心的 gcc 和 glibc。但是 GNU 系统缺少操作系统内核。原定的内核叫 HURD,一直完不成。同时 BSD(一种 UNIX 发行版)陷入版权纠纷,x86 平台开发暂停。然后一个叫 Linus 的同学为了在 PC 上运行 Unix,在 Minix 的启发下,开发了 Linux。注意,Linux 只是一个系统内核,系统启动之后使用的仍然是 gcc 和 bash 等软件。Linus 在发布 Linux 的时候选择了 GPL,因此符合 GNU 的宗旨。最后,大家突然发现,这玩意不正好是 GNU 计划缺的么。于是合在一起打包发布叫 GNU / Linux。然后大家念着念着省掉了前面部分,变成了 Linux 系统。实际上 Debian,RedHat 等 Linux 发行版中内核只占了很小一部分容量。

2)什么是GNU?

GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU’s Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。
作为操作系统,GNU的发展仍未完成,其中最大的问题是具有完备功能的内核尚未被开发成功。GNU的内核,称为Hurd,是自由软件基金会发展的重点,但是其发展尚未成熟。在实际使用上,多半使用Linux内核、FreeBSD等替代方案,作为系统核心,其中主要的操作系统是Linux的发行版。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux,但此命名一直存在争议。

GNU/Linux命名争议是对于Linux操作系统的名称,在自由软件社群内产生的争议。

自由软件基金会的创立者,理查德·斯托曼,以及其支持者,提出GNU/Linux的名称,希望用来作为Linux操作系统的正式名称。这些人认为,Linux操作系统,包括了GNU计划软件与Linux核心,使用GNU/Linux这个名称,可以良好概括它的内容。况且,GNU计划原本就以发展操作系统为远程计划,但迟迟没有完成,Linux操作系统刚好可以补足这个缺口。

Linux社群中的成员认为,Linux这个名称在公众与媒体中更为通用,提出了数项理由,认为使用Linux名称是更好的。


转载:https://blog.csdn.net/m0_46864744/article/details/112915080
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场