Linux、开源软件发展史

今天,Linux以及开源软件已经占据了大部分企业的服务器。但是,和我一批差不多刚刚进入软件行业几年的程序员来说,我们现在只能被动的接受和使用这些东西,如果不认真广泛的搜索一大堆资料,我们真的很难了解它们的过去……

试问,你不了解它的过去,你怎么参与到它的未来呢/strong>

概述

我们真的离美国、离硅谷、离那些不算遥远“激情燃烧的岁月”太远了!
今天,我要尝试去发掘那些过去,认真了解我们眼前的自由软件是如何走到今天的。

一切就绪,从哪里开始呢
如果按照时间线显然会太杂乱了,我想,按照几个关键词会是比较好的方式。


一. UNIX

接上篇《C语言、编程语言发展史》 所述,在贝尔实验室 中由于近似好奇或兴趣的驱动,UNIX被创建了出来。

  1. 发展壮大

    此后的10年,UNIX在学术机构和大型企业中得到了广泛的应用,当时的UNIX拥有者at&t公司以低廉甚至免费的许可将UNIX源码授权给学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,形成了所谓的“UNIX变种”,这些变种反过来也促进了UNIX的发展,其中最著名的变种之一是由加州大学伯克利分校开发的伯克利软件套件(Berkeley Software Distribution,BSD)产品。

  2. 版权之争

    后来at&t 意识到了UNIX的商业价值,不再将UNIX源码授权给学术机构,并对之前的UNIX及其变种声明了版权权利。BSD在UNIX的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用UNIX的基础。其不断增大的影响力终于引起了at&t 的关注,于是开始了一场持久的版权官司,这场官司一直打到at&t 将自己的UNIX系统实验室卖掉,新接手的Novell采取了一种比较开明的做法,允许柏克莱分校自由发布自己的UNIX变种,但是前提是必须将来自于AT&T的代码完全删除,于是诞生了4.4 BSD Lite版,由于这个版本不存在法律问题,4.4 BSD Lite成为了现代柏克莱软件包的基础版本。尽管后来,非商业版的UNIX系统又经过了很多演变,但其中有不少最终都是创建在BSD版本上(Linux、Minix等系统除外)。所以从这个角度上,4.4 BSD 又是所有自由版本UNIX的基础,它们和System V及Linux等共同构成UNIX操作系统这片璀璨的星空。

总结以上,也就是说:现在的UNIX和类UNIX分为3类

  1. 正统UNIX
    System V,商业、收费的;

  2. 类UNIX – BSD衍生版本
    非商业,大部分免费;

  3. 类UNIX – Linux和其它
    非商业,大部分免费;

    UNIX/类UNIX 发展历史(截止2007年) – Wikipedia

    这里写图片描述

需要明白的是(以下是Stallman原话的中译):

“自由软件”是权利问题,不是价格问题。要理解这个概念,自由应该是“言论自由”中的“自由”,而不是“免费啤酒”中的“免费”。
自由软件关乎使用者运行、复制、发布、研究、修改和改进该软件的自由!

2. Stallman

理查德·马修·斯托曼(Richard Matthew Stallman RMS,1953-今)是自由软件运动的精神领袖,GNU计划以及自由软件基金会(Free Software Foundation)的创立者、著名黑客。他被尊称为:rms。

他的主要成就包括Emacs及后来的GNU Emacs,GNU C 编译器及GNU 除错器。 他所写作的GNU通用公共许可证(GNUGPL)是世上最广为采用的自由软件许可证,为copyleft观念开拓出一条崭新的道路。他最大的影响是为自由软件运动竖立了道德、政治以及法律框架。他被许多人誉为当今自由软件的斗士、伟大的理想主义者,但同时也有人批评他过于固执、观点落伍。

这里写图片描述
  • UNIX在当时是一种广泛使用的商业操作系统。由于GNU计划实现UNIX系统的接口标准,因此GNU打算分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。这包括了:

    • Emacs:一个功能强大的文字编辑器;
    • GCC:GNU Compiler Collection,GNU编译器集合;
    • 大部分的UNIX系统程序库、工具;
    • 但是,唯一没有完成的重要组件就是操作系统的内核(正在开发,GNU称之为HURD)

  • 三. Linus – Linux

    上文书说到:万事俱备,只欠内核!(正在开发,此事暂时放下不表)

    1. Linus – 林纳斯

    1991年,大洋彼岸的欧洲,芬兰赫尔辛基,21岁的赫尔辛基大学大学生,林纳斯·托瓦茨(Linus Torvalds)开始在一台386sx兼容微机上学习Minix (也是UNIX-like)操作系统。不久之后,林纳斯觉得Minix 并不好用,随后他开始着手自己开发一个类UNIX系统。

    这里写图片描述

    3. Linux distribution – 发行版

    上文说到,Linux只是内核,而Linux + GNU 可以组成一个不算完全的操作系统。虽然这些都是自由软件,但是让用户自己去进行所有组合和拼装以及编译操作还是有一定难度的。所以,出现了Linux 发行版

    Linux 发行版(Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编译,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的管理。

    Linux发行版通常包含了包括桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常由Linux内核、以及来自GNU计划的大量的函数库,和基于X Window的图形界面。有些发行版考虑到容量大小而没有预装 X Window,而使用更加轻量级的软件,如:busybox, uclibc 或 dietlibc。现在有超过300个Linux发行版。大部分都正处于活跃的开发中,不断地改进。

    1. 1995年1月,Bob Young创办了RedHat(小红帽),以GNU/Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux Distribution – 发行版,在市场上出售。这在经营模式上是一种创举。

    2. 发行版可以分为商业、社区、和非商非社版。我们听说和使用最多的有:Red Hat、Debian、Ubuntu、CentOS等。


    四. 开源软件运动

    1998年2月,以Eric Raymond为首的一批年轻的”老牛羚骨干分子”终于认识到GNU/Linux体系的产业化道路的本质,并非是什么自由哲学,而是市场竞争的驱动,创办了Open Source Intiative(开放源代码促进会)在互联网世界里展开了一场历史性的Linux产业化运动。

    随后,OSI和FSF分道扬镳。

    开源软件(open source software),是说源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量。

    开源协议通常匹配开放源代码的定义 的要求,如果人为设置一些源码开放条件限制,则称之为:公开源代码的免费软件(Freeware)。

    1. 开放源代码促进会

    开放源代码促进会(Open Source Initiative,OSI),是一个旨在推动开源软件发展的非盈利组织。

    这里写图片描述

    1998年2月,OSI由布鲁斯·裴伦思埃里克·斯蒂芬·雷蒙 等人创立。当时,网景公司 为了与微软的IE竞争,将他们的旗舰产品网景浏览器(Navigator) 发布成自由软件。然而随后网景公司 还是输掉了第一次浏览器大战。
    ————————– 开源软件”open-source software”一词出自自由软件的营销活动中。

    2. Eric Raymond

    埃里克·斯蒂芬·雷蒙(Eric Steven Raymond,1957至今),是著名黑客,《大教堂与集市》作者,是开放源代码运动的主要领导人。被称为:ESR。

    从1998年2月 – 2005年2月,雷蒙担任OSI的主席。

    雷蒙有句名言(又被称为林纳斯定律):“足够多的眼睛,就可以让所有问题浮现。Given enough eyeballs, all bugs are shallow”。

    3. 与自由软件区别

    许多人将开放源代码与自由软件(free Software)视为相同,但若以定义条件而言,自由软件仅是开放源代码的一种,也就是自由软件的定义较开放源代码更为严格。

    4. 著名开源软件

    应用软件:
    7-Zip——文件压缩软件。
    Blender——三维绘图及渲染软件。
    Eclipse——集成开发环境。
    GIMP——GNU图像处理软件。
    Scribus——桌面出版软件。
    Inkscape——矢量图形编辑器。
    Emacs——纯文本编辑器。
    Vim——纯文本编辑器。
    Chromium——网页浏览器。
    Mozilla Firefox——网页浏览器。
    Mozilla Thunderbird——电子邮件客户端软件。
    NASA World Wind——虚拟地球软件。
    Open Broadcaster Software——在线直播软件。
    DocFetcher——桌面搜索软件。

    操作系统:
    Android——基于Linux的操作系统。
    Firefox OS——基于Linux的操作系统。
    FreeBSD——类Unix的操作系统。
    Linux——类Unix操作系统家族。
    OpenIndiana——类Unix操作系统家族。
    ReactOS——创建在Windows NT架构的操作系统。
    Haiku——与BeOS兼容的操作系统。

    编程语言:
    Perl——一种通用的编程语言。
    PHP——适用于网络开发的编程语言。
    Python——一种通用的编程语言。
    Ruby——一种通用的编程语言。
    Swift——一种支持多编程范式,编译式编程语言。

    服务器软件:
    Apache HTTP Server——一种网页服务器。
    Drupal——内容管理系统。
    Joomla!——内容管理系统。
    MediaWiki——运行于维基百科的Wiki引擎。
    MongoDB——文件导向数据库管理系统
    Moodle——课程管理系统、虚拟学习环境。
    Arduino——单片机微电脑,由艺术家、设计师、业余爱好者所使用。


    五. License

    今天存在很多的开源/自由协议,这里我们了解下最著名的4个。

    1. GPL(GNU General Public License)
      我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

      GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

      由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
      其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

      严格自由:如果使用了GPL软件那么自身也必须是GPL软件

    2. LGPL(GNU Lesser General Public License)
      LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

      但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

      GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

      弱化的GPL:可以引用LGPL软件而不需要自身GPL/LGPL,但不能修改原LGPL软件

    3. BSD License(Original、FressBSD、Original BSD)
      BSD license(Berkeley Software Distribution License),是自由软件中使用最广泛的许可证之一。BSD软件就是遵照这个许可证来发布,该许可证也因此而得名。

      BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

      BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

      可以随意使用,仅需要包含原软件BSD License即可

    4. Apache Licence 2.0(Apache License, Version 2.0、Apache License, Version 1.1、Apache License, Version 1.0)
      Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似。

      Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

      类似BSD License


    六. 总结

    如上所述,软件行业的版权发展思路就是如下三种:

    1. Copyright – 完全限制
      要遵守限制重重的著作权 – Copyright。

    2. Copyleft – 完全自由
      带有基于政治(是类似言论自由这种)以及哲学思想的理想主义方式。如GPL,必须完全自由,只要跟GPL有关系就必须也是GPL。

    3. Copycenter – 开放
      如BSD License,BSD的后续版本可以选择要继续是BSD或其他自由软件条款或封闭软件等等。

    这三种思路现在都各有各的发展,都有其适用情况。

    对商业公司来说Copyright 是商业必须!

    对自由软件运动斗士和生来就有自由基因的软件来说Copyleft 是一种信仰!

    对开源拥护者,但也想获得商业利益的人来说Copycenter 是最好的选择!


    转载注明出处:http://blog.csdn.net/u010297957/article/details/51303983

    文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24864 人正在系统学习中

    来源:有且仅有

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2016年4月1日
    下一篇 2016年4月1日

    相关推荐