GNU/Linux 与开源文化发展大致的脉络

本文只梳理大致的脉络,不做详尽的叙述。
一、计算机的发明
世上本无路,走的人多了,就有了路。世上本无计算机,琢磨的人多了……没有计算机,一切无从谈起。
三个人对计算机的发明功不可没,居功至伟。阿兰·图灵alan mathison turing、阿塔那索夫john vincent atanasoff、和冯·诺依曼john von neumann。
图灵从理论上证明了计算机的可行性;阿塔那索夫实践了图灵的理论;冯·诺依曼奠定了现代计算机的体系结构。
图灵说这玩意儿应该可以做,已经被证明了;阿塔那索夫二话不说动手就做了一个;冯·诺依曼说应该这么做才更好。
图灵功劳很大,死得很惨,只因他是同性恋。他的最后时刻是吃了一个沾有氰化钾的苹果。有人说苹果公司的logo是为了纪念图灵,不可证。确定纪念图灵的是“图灵奖”,计算机研究领域的最高奖项,由美国计算机协会于1966年设立。
阿塔那索夫名气不大,享年较长。世界上第一台计算机是阿塔那索夫领导发明的abc计算机,并非我们很多书上说的eniac。
abc 计算机设计图
冯·诺依曼长得帅,聪明,研究领域广,故事很多。今天我们使用的计算机都被打上了一个的深深的烙印,这个烙印就叫冯·诺依曼体系结构。
关于计算机之父有很多说法,版本不一,这三个人都可以称为计算机之父。曾有人奉冯·诺依曼为计算机之父,冯·诺依曼说不敢当,殊荣当归图灵。
早年全世界的计算机中心在美国普林斯顿大学,群星闪耀,璀璨夺目。冯·诺依曼曾在此工作,图灵曾在此学习,他俩在普林斯顿的花园里聊过天。冯·诺依曼想让图灵给他当助手,被拒绝了。
二、最初的unix和c语言
早期计算机个头大,电子元器件多,开动一次电费都不少,使用起来也很不方便。别的不说,一次只能干一件事就让人受不了。先煮粥,半小时之后粥煮好了再炒菜。花老多钱雇的厨师,明明煮粥的时候可以炒菜好不好?一次做一件事,就叫单任务,比较笨。
受不了就要想办法,就有人提出了操作系统的想法。操作系统就是想让计算机用起来更方便,能发挥更大的作用。
1965年,mit、贝尔实验室和美国通用电气公司合作准备搞个超级操作系统,取了个霸气的名字:multics (multiplexed information and computing system),多路复用信息和计算机系统。能让多个人可以同时干很多事,也叫多用户多任务操作系统。
multics名字挺好,事没干成,目标过于庞大,结果壮志未酬。
1969年,multics项目进展缓慢,被迫停止,参与项目的两个人肯·汤普森kenneth thompson和丹尼斯·里奇dennis ritchie也闲了下来。他们都是贝尔实验室的人。没活干了,就打游戏。他们俩找了一台破电脑准备玩以前开发的一个游戏。
把游戏移植到一台闲置机器(pdp-7)的过程中,实现了一个简单的操作系统。到了 1970年,这个简单的系统已经可以使用,但只能同时两个人使用。有人调侃他们,说你们这个破玩意离multics差远了,就叫unics(uniplexed information and computing service)吧。unics是multics的反义,与其说调侃他俩,不如说在调侃multics。ken thompson稍微把名字修改了一下,unix。
自此,unix纪元开始。1970年是为unix元年,今年已经是unix 45年。unix时间戳从1970年1月1日开始计算和unix诞生的时间有莫大关系。
早年的操作系统最早是用汇编语言写的,汇编语言低级落后,写起来很痛苦。开发unix过程中,thompson发明了b语言,ritchie在b语言基础做了改进,称之为c语言。
c语言发明后,ritchie和贝尔实验室的同事brian w. kernighan合著一本c语言的书,后来被称为 k&r。kernighan名气没ritchie大,但并非凡人,unix命令awk中的k就是kernighan。
接下来thompson和ritchie用c语言重新编写了unix系统。结果相当满意,unix可以见人了。1974年,dennis m. ritchie和ken thompson发表了第一篇关于unix的论文《the unix time sharing system》,从此unix广为人知。
在这几年,世界上计算机的中心到了贝尔实验室,thompson、ritchie、kernighan还有好多。thompson和ritchie后来都获得了图灵奖。
有心栽花花不活,无心插柳柳成荫。multics目标宏伟,没干成,unix和c语言刚开始并没想那么多,而且还是业余时间的作品,终成伟业!
unix和c语言是计算机领域的常青树,历久弥新。从发明至今一直保持着旺盛的生命力,从发明至今都基本保持原貌,足见伟大!
三、混乱的unix发展过程
unix一经出现,引起了众人的关注,很多人找thompson和ritchie要unix的源代码。那是个开放的时代,那是个相互学习研究的时代,把程序的源码分享给别人是很平常的事。一份份的unix源码被流传到各个实验室、学校、公司。
加州大学伯克利分校有一帮热衷于unix的人,他们拿到源码后不断研究,不断改进,大大推进了unix的发展。
这个阶段unix发展有两条主线,一条在贝尔实验室内部,另一条就在伯克利分校。伯克利分校的成果很辉煌,著名的tcp/ip协议在unix上的实现就是他们搞出来的。后来把他们搞的这套unix称为bsd(berkeley software distribution)。
伯克利分校一时风光无两,最杰出的一位是bill joy。bill joy,是 vi、csh等等一系列软件的作者,sun公司的创始人。没有sun公司,就没有今天的java语言。
unix刚诞生的时候,贝尔实验室受反垄断法所限,不能从事计算机业务。其实也并没想到unix发展势头如此之好。
等到1983年,贝尔实验室的母公司at&t已经被强制拆分为几个小公司,不再受反垄断法的限制。这时,at&t发布了unix最新版system v,宣布从此unix只能商业使用,不再开放源代码。at&t想用unix赚大钱。
bsd那边受到了很大影响,他们不想急着赚钱,他们想开放源码。没办法,伯克利分校决心把bsd当中受到影响的源码重新写过。从伯克利分校出来的几位同学成立了一家公司,专门开发bsd项目。直到有一天,他们宣布bsd当中再没有最初来自贝尔实验室的源码。at&t不买账,告你,起诉,打官司。
这是一场漫长的官司,官司尚未打完,unix版权就被倒卖了好几次。买版权的好几家公司继续和bsd打官司,几家公司相互也打官司。
等到硝烟散尽,bsd终究推出了完全属于自己的unix,因为版权的问题,不能再叫unix,只能叫类unix系统。
bsd的类unix系统是freebsd、macos的前身。今天使用的苹果电脑,iphone手机上的操作系统都是从bsd这一支上发展而来。
漫长的官司耗尽了人们对bsd的热情,也让bsd错过了最好的发展机会。后来的freebsd、netbsd、openbsd都是从bsd分化而来,免费,开源,优秀,但再没挽回曾经的荣光,因为已经有了linux。
unix发展过程图
四、斯托曼博士的gnu计划
at&t想靠unix赚钱的时候,不止是at&t,很多商业公司都希望通过软件赚钱。不再免费,不再开放源代码,不再相互通过源代码学习研究。
曾经是多么好的时代,怎么现在就变得只认钱了呢?这一切让一个人很不满意。他曾经看到一个系统有问题,想要一份源码拿来帮修改一下,别人冷笑以对。
世风日下,他要向这个令人沮丧的时代挑战,他要还一个开源、免费的系统与人世间。请记住这个人的名字,理查德·斯托曼richard matthew stallman博士。
斯托曼是老牌黑客,emacs的作者。emacs和前面提到的vi是计算机领域中两大强悍的编辑工具,emacs和vi哪个更强是最容易引起争议的话题之一。为了少吵架,千万别和宝马车主说奔驰好。
斯托曼博士长头发,大胡子,不修边幅,一直单身。他一心投入自由软件运动,他创建了自由软件基金会(fsf)。他雄心勃勃地提出了一项伟大的计划,gnu(gnu's not unix)计划。not unix,不是unix,是自由的、免费的、开源的、像unix一样好用的系统。
gnu起初进展很顺利,glibc、gcc、gdb,这一系列的操作系统必备软件都有条不紊地在进展。所有的“g”来自gnu的首字母。为什么叫“g”,斯托曼博士说当时他觉得好玩,而且他小时候听过一首歌,很喜欢,歌名是《the gnu》。
完全搞个操作系统看来也并非易事,gnu完成了一大堆软件的时候才意识到遇到了大麻烦。gnu系统的内核项目hurd迟迟不能令人满意。内核之于操作系统,就像发动机之于汽车,必不可缺。
五、linux出世记
1991年,林纳斯·托瓦兹linus torvalds尚是芬兰赫尔辛基大学的一名学生,他在学校学操作系统的课程,他也想搞个操作系统玩玩。他当时已经在使用gnu项目的bash、gcc等软件。受gnu的影响,把他自己开发的一个简陋的操作系统内核放到了互联网上。
这个内核系统就是linux,linus's unix,linus的unix。名字并非linux所取,他一贯的风格是取个调侃的名字,但当时管理员说linux挺好,名字就这么定了。
linux放到网上后引起了很多人的兴趣,他们陆续通过互联网加入到linux开发过程中。1993年,大约有100多名程序员参与了linux内核代码。这时已经是互联网的时代,他们不用相识,不用谋面,通过网络讨论,通过网络协作,推进着linux。
1994年3月,linux1.0发布,linux已经成为一个基本可用的内核。从此linux就一直没有踩过刹车,一步步从幼苗长成参天大树。
linus小时候被企鹅攻击过,他给linux定logo的时候选中了企鹅,真不知道这是什么逻辑。长得像企鹅的除了qq,还有linux。
linux
linux开创了一种前所未有的软件开发模式。多人协作,代码随时提交,有问题及时修改,所有参与人员并非精英,而是一群狂热的支持者。前前后后无数人参与了linux项目的开发,组织不太严谨,有很多的争吵和讨论。linus经常写代码,偶尔扮演仲裁的角色,而非传统意义上的领导。
后来开源运动的吹鼓手埃里克·雷蒙德eric raymond写了一篇文章《大教堂与集市》来分析linux的开发模式。大教堂要设计好图纸,动用优秀的工匠,有序的工程计划才能修筑,闹哄哄无序如菜市场的一拨人能不能修一座大教堂?答案是可以的,因为他们建成了。
linus后来坦言,他开发linux时不了解还有freebsd等项目,如果知道了可能他就不会动手写linux了。那时各种bsd系统正在官司的阴影笼罩下,某种程度了也促进了linux的发展。
他们一开始也没什么图纸,一边修建,一边请人参观,出了问题随时修复,有的地方干脆推倒重来。他们没有严密的组织,只有大体的分工。随时有人在使用教堂,给他们提出各种意见。他们建的教堂已经足够好,他们建的教堂一直没有竣工,会一直修建下去。
eric raymond这个人不得不提,早年和斯托曼博士一起共事,还帮斯托曼博士修改过emacs的代码。他比写程序更擅长的是演讲和写文章。《大教堂与集市》是开源文化的扛鼎之作。斯托曼博士是开源运动的精神领袖,raymond是开源运动的布道师和理论家。
六、linux各种发行版
一边gnu项目为内核苦苦挣扎,一边linux内核项目横空出世,这不天作之合么?不错,手快的人来不及同情斯托曼博士的痛苦,把gnu一大堆项目和linux攒在一起搞了个新系统,gnu/linux。
好了,终于大家可以拿去用了,可以用一个完全免费、源码开放的系统了。
今天很多人把使用的系统叫linux,很不公平,是对gnu工作的漠视。正确的叫法是gnu/linux。
gnu/linux
有了gnu/linux还不是一切,只能是一个基础的操作系统,要想用得更好还缺很多软件。就像有了windows系统,没有word,没有excel,没有浏览器,没有游戏,可干的事并不多。
所幸的是gnu/linux诞生的年代,已经有了很多优秀的开源项目,他们和gnu无关,有的是个人开发,有的是组织开发,都遵循免费开源的理念。这些开源项目有apache、perl、python、vim、tex等等。
攒系统的人干脆一股脑攒了起来,就是所谓的gnu/linux的发行版。最早攒gnu/linux系统的公司是redhat,后来陆续一大堆gnu/linux的发行版,slackware、mandrake、gentoo、debian、ubuntu等等。有的已经消亡了,有的还活得挺好。
所谓gnu/linux发行版,就是攒好的一套gnu/linux。选用gnu项目中的基础软件,加上linux内核,再找一堆开源免费,版权协议许可的软件,最后做个安装程序,就齐活了。更好的发行版大体就是考虑的更周全些,软件包的更新、安装、卸载更方便些。
能不能自己动手攒一个gnu/linux的发行版?当然可以,linux from scratch,网上的一个项目,教你一步一步从头打造一个属于自己的gnu/linux发行版。
2002年,南非商人mark shuttleworth花了两千万美金,搭乘俄罗斯的宇宙飞船去了一趟太空。次年,他成立了canonical公司,致力于开源文化的推广,推出了gnu/linux发行版ubuntu。有钱人办事就是不一样,ubuntu做得太好了,gnu/linux用户纷纷投靠,ubuntu基本一统gnu/linux发行版的江湖。
五、gnu/linux和开源文化的背后
gnu/linux来了,虽然没成为大多数人电脑里的系统,但每个人都离不开它。诸多互联网公司的服务器里都跑着gnu/linux,名单不完全确认,google、facebook、淘宝、百度、腾讯、小说阅读网等等。
大多人使用的安卓手机的系统也是基于linux内核。
gnu/linux的繁荣有宏伟的规划,有个人的努力,也有很多无形的力量在起着作用。
没有unix就没有gnu/linux,是unix给予了伟大的启示。
没有c语言就有没有gnu/linux,c语言简单,优雅,介于高级语言和低级语言之间,开发系统软件的首选编程语言。
没有一系列unix标准的制定就没有gnu/linux的繁荣。标准就是“车同轨、书同文、统一度量衡”,秦始皇可算最早的标准制订者。遵循posix标准为gnu/linux发展铺平了道路。
没有互联网就没有gnu/linux,gnu/linux不是一个人在开发,是全球无数人协作的结果。如果没有互联网实在不可想象。当然,gnu/linux也反哺了互联网,无数互联网公司采用gnu/linux搭建服务器,gnu/linux也促进了互联网的繁荣。
没有斯托曼博士的努力,就没有gnu/linux。他的功劳不仅是创建gnu组织,也不仅是编写emacs、gcc、gdb,他的精神感召着无数人为开源运动做贡献。
当然还有raymond的振臂高呼,摇旗呐喊。
还有gnu/linux诞生之前就开发开源项目的人和组织。larry wall因为懒,整天被报表搞得焦头烂额,发布了perl语言;高德纳教授因为对排版工人不满意,十年时间停止重要工作,发明了伟大的排版软件tex;guido为了打发圣诞节的无聊,编写了新的脚本语言python……
gnu/linux发布之后,在前辈们的感召下无数人接受了开源的思想和理念,接受了开源文化的洗礼,兴起了开源文化运动。无数为开源项目做出贡献的人和组织,他们发布了php、mysql、ruby、node.js、x.org、gnome、kde……他们丰富了gnu/linux,他们进一步推动了开源文化运动,他们继续感召着别人。
kde(kool desktop environment)的初衷是想开发一套易用的桌面系统。windows系统就是一种桌面,使用方便,不是像程序员整天对着黑乎乎的屏幕工作。桌面系统要有浏览器,他们就分了一个小组khtml来开发浏览器。全世界能开发浏览器核心的也没几家,kde做到了。后来苹果公司和微软闹别扭,想自己开发浏览器,就是在khmtl的基础之上开发了自己的浏览器safari。khtml的浏览器核心模块叫webkit。google推出安卓手机时浏览器也是基于webkit开发的。
今天的iphone手机和安卓手机的浏览器都是webkit内核。
各种版权许可协议的制订也为gnu/linux的发展铺平了道路,其中就有gnu的gpl、lgpl,还有apache license、bsd协议。不可能每个人都有一套自己开源协议项目的版权协议,已经制订好的版权许可协议使得软件更好地传播。
其实开源并非自由,有人说gpl是用自由抹杀自由。gpl许可要求任何含有gpl许可的软件发布时必须开放源码。bsd和apache license相对比较宽松,算是准自由软件。
版本管理软件对gnu/linux的发展和开源文化运动也功不可没。linux内核开发起初使用的是商用版本管理软件,某天linus torvalds先生不开心了,就自己动手搞了一个。他好取自嘲调侃的名字,命名为git,意为没什么用的东西。
git可不是没什么用,太好用了,linux内核源码从此都用git管理。git免费、开源,git成就了一家伟大的网站github.com,伟大的源码项目托管网站。很多开源项目纷纷把源码托管到了github上。
gnu/linux不朽,开源运动不朽!
六、后记
从最初安装redhat linux起,陆续折腾过多种gnu/linux发行版。后来萌生念头,想写一本gnu/linux和开源文化的书,种种原因,一直未能如愿。
作为gnu/linux和开源运动的追随者,书不知何时能写完,这篇文章做个纪念。

原文标题:聊一聊gnu/linux 与开源文化的那些人和事
文章出处:【微信公众号:openfpga】欢迎添加关注!文章转载请注明出处。

总投资36.5亿元!我国MEMS十强企业西人马将在上海建8英寸芯片产线!
https原理过程详解
ne555可以用什么代替
避坑指南!蓝牙耳机晶振怎么选?
u-blox推出室内定位新方案,快来看看都有哪些变化!
GNU/Linux 与开源文化发展大致的脉络
小电阻在ePort模块中的大作用
万元单车价值 汽车电驱系统迎来千亿市场机遇
SK海力士有意收购Arm, 2025年ARM架构处理器渗透率将达到22%
哪些仪器仪表企业进入国家认定企业技术中心
电商行业wms系统主要操作流程介绍
关于高空测报灯设计原理的详细讲解
OPPO 正式上线客服远程故障检测系统——远程诊断功能
HDMI连接设备得到认证 8K清晰度将提升四倍
生物识别的到来,不用密码的智能手机已无处不在
电池内阻测试仪测不出内阻维修-日置BT3554
教你看笔记本屏幕
什么是DWDM光模块,它的优势有哪些
无人机反制技术在拦截无人机方面的不足
华为Mate 40跑分成绩公布