一个帖子引发的开源之路
20年前的10月5日,Linus Torvalds
在
comp.os.minix 新闻群组
发布了以下帖子:
Do you pine for the nice days of minix-1.1, when men were men and wrote
their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustrating when everything works on minix? No more all-nighters to get a nifty program working? Then this post might be just for you :-)
As I mentioned a month(?) ago, I'm working on a free version of a
minix-lookalike for AT-386 computers. It has finally reached the stage
where it's even usable (though may not be depending on what you want),
and I am willing to put out the sources for wider distribution. It is
just version 0.02 (+1 (very small) patch already), but I've successfully
run bash/gcc/gnu-make/gnu-sed/compress etc under it.
Sources for this pet project of mine can be found at nic.funet.fi (128.214.6.100) in the directory /pub/OS/Linux. The directory also contains some README-file and a couple of binaries to work under linux (bash, update and gcc, what more can you ask for :-). Full kernel source is provided, as no minix code has been used. Library sources are only partially free, so that cannot be distributed currently. The system is able to compile "as-is" and has been known to work. Heh.Sources to the binaries (bash and gcc) can be found at the same place in /pub/gnu.
ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled (and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix to set it up if you want to run it, so it is not yet a standalone system for those of you without minix. I'm working on it. You also need to be something of a hacker to set it up (?), so for those hoping for an alternative to minix-386, please ignore me. It is currently meant for hackers interested in operating systems and 386's with access to minix.
The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If you are till interested, please ftp the README/RELNOTES, and/or mail me for additional info.
I can (well, almost) hear you asking yourselves "why?". Hurd will be out in a year (or two, or next month, who knows), and I've already got minix. This is a program for hackers by a hacker. I've enjouyed doing it, and somebody might enjoy looking at it and even modifying it for their own needs. It is still small enough to understand, use and modify, and I'm looking forward to any comments you might have.
I'm also interested in hearing from anybody who has written any of the utilities/library functions for minix. If your efforts are freely distributable (under copyright or even public domain), I'd like to hear from you, so I can add them to the system. I'm using Earl Chews estdio right now (thanks for a nice and working system Earl), and similar works will be very wellcome. Your (C)'s will of course be left intact. Drop me a line if you are willing to let me use your code.
Linus
PS. to PHIL NELSON! I'm unable to get through to you, and keep getting "forward error - strawberry unknown domain" or something.
Linux一路留下的痕迹
Linux 最原生态的版本是0.01版(发布于91年9月),翻阅这个版本的源代码,实际上与学生们在课堂实验中写的代码并无多大差异,但是,这个不足万行的代码已经是一个完整的OS。从0.01到0.02的,如他帖子中所述,能运行bash、GCC、gnu-make、gnu-sed、compress等程序。对一般用户来说,它依然是一个青涩的柿子,并不能偿出其味道。但对于黑客来说,0.02版却为他们带来了不少的惊喜,因为0.02版的发布,意味着Liunx内核被开源,他们可以参与进来施展手脚了。
从Linux0.03到0.09,每周提交的bug增多,于是每
两周发布一个新版进行更新。因为Linux基于minix,而minix的文件系统有一些自身的缺陷,文件系统就是管理自己的地盘—磁盘空间以及其上存储的信息的,因此开发出自己的文件系统用起来自然就得心应手。那时,liuns也许还没有精力顾及到这个问题,但有大牛愿意出力,他就是Theodore Ts'o。
Theodore Ts'o 1990年毕业于美国MIT大学计算机科学专业。这家伙爱好广泛,烹饪,骑车,折腾电脑,无线电报都在他玩的范围。有一天在网上逛游时,看到了Linux,于是就加入linux内核邮件列表(LKML)。在0.10内核中,他贡献了自己的代码—虚拟磁盘驱动程序和内存分配程序。当他感到Linux缺少一个自己的文件系统后,就提出并实现了ext2文件系统,后来ext系列的文件系统都成为了Linux世界中事实上的标准,任何一个发行版都会默认支持,现在已经发展成ext3,ext4。
还有英国人—Alan Cox,特别爱玩电脑游戏,尤其是网游,不过那时候的网游不像现在这样华丽,那时候是字符界面的,能想象字符界面的网游是怎样的!那种叫做MUD——Multi-User Dungeon or Dimension。玩MUD就得有计算机,得有网,所以 Alan Cox就开始逐渐的对计算机和网络产生了兴趣。为了提高电脑运行游戏的速度以及网络传输的速度,他开始接触各种操作系统,为自己选择一个满意的游戏平台,争取榨干电脑的每一个指令周期。经过自己考虑,他买了一台386SX电脑,并且装了Linux0.11版的系统。于是他开始使用linux,进而学习其源代码,并对linux产生了兴趣,尤其是网络方面相关的代码。在Linux0.95版之后,他开始为linux系统编写补丁程序,以后逐渐加入Linux的开发队伍。从0.11参与进来后,他就成为Linux内核代码的主要维护者。即使最大的OS公司高薪诚聘,也被他礼貌而坚决的拒了。
Linux 从当初的0.01版到今天的3.0版,历经800多个版本的变迁,参与者无数,代码修订过程中的一点一滴并没有在时间的流逝中消失,而是在新闻组,在邮件列表都留下足迹。记得99年我们编写《Linux操作系统源代码分析》一书时,查到的第一手资料大都来自邮件列表。当02年我们分析2.4内核的时候,发现一些函数消失了,一些变量更改了,一些参数增加了,但在邮件列表中,甚至能看到争吵的过程和更改的理由,这些完全公布的细节,在一定程度上决定了开源的魅力所在。
一波三折的开源路途
在Linux操作系统刚刚有所起色之际,一些程序员却背叛了Linus 的领导。这些程序员警告说,由于Linus 事必躬亲,坚持由自己审核所有程序员为Linux操作系统做出的每一个修改,结果导致Linux操作系统的完善工作几乎陷于停滞。他们表示,除非Linus 改变自己的工作作风,否则他们将重新编写一套系统软件,与Linux分庭抗礼,而这一举动很有可能使Linux的发展遭受重创。程序员拉里·麦克沃伊在当时扮演了调停者的角色,他回忆说:“所有人都清楚,双方的关系已经破裂。因此改革势在必行。”
斗争双方在旧金山特温峰的麦克沃伊家中召开会议,会上这场危机彻底激化。一批Linux操作系统的主要编程人员轮流上阵,劝说Linus 改变工作作风。当晚的晚餐是乳蛋饼和羊角面包,但是餐桌上的气氛却非常尴尬,晚饭结束后,大家重又坐在客厅的地板上吵作一团。4个小时后,Linus 终于做出让步。他同意委任更多的程序审核代表,并且使用软件来自动处理各处发送来的源代码。这个自动处理程序于2002年问世,从那以后,Linus 处理源代码的速度达到了原先的5倍。近些年来,Linux操作系统在成长和发展的历程中遭遇了许多次大的变故,而特温峰休战协定只是其中之一。(摘自Linux传奇一文)
传奇路上的巨擘相助
1991年还在赫尔辛基大学上学的linus发起的这个Linux项目,由于没有任何组织形式,完全是一盘散沙,而且人们始终都对这个计划嗤之以鼻。年轻的学生以及嗜咖啡成瘾的社会叛逆人士利用业余时间编写出了Linux操作系统的大部分源代码,那时的linus尽管还有沉重的学业负担,但他仍然坚持独立完成Linux操作系统的完善工作。
如今,这一工作方式已经成为一段历史传奇。尽管外人对Linux程序员团体知之甚少,但事实上这个团体已经日臻成熟,并具有较高的组织性和工作效率,Linux社团正逐步趋于专业化。目前,linus领导着一批技术骨干,这些人几乎全部受雇于技术公司,他们负责监督关键项目的开发工作。IBM、HP、Intel、Oracle等技术巨擘也纷纷围拢到这个芬兰人身旁,它们不仅为linus提供技术和市场营销支持,而且还为他调拨出数千名专业程序员。仅IBM公司为开发Linux操作系统而提供的程序员就从1999年的两名增加到了今天的上千名。甚至还成立了一个董事会,专门为Linux的发展制订大政方针。群策群力之下,Linux日渐强大起来。如今,这个系统软件正把自己的触角伸向各个领域。尤其是google在Linux之上开发的Android,把Linux的应用引向更深的未知领域。有80多年历史的moto,愿意诚服在仅有十多年历史的google麾下,基于Linux的Android才是商业大旗背后的技术大佬。
坚持着的兴趣
相对于用户程序而言,编写操作系统的难度就大得多,liuns对此有自己的看法。有记者问“
编写操作系统内核代码是一项艰难的工作,您的动力是什么呢? ” ”也许很难,但是也同样有趣。一直以来,相比那些在表面上的东西例如用户界面之类,我对深入到硬件细节的内容更感兴趣。能比操作系统内核更深入的,有且仅有创建硬件本身了,其实这件事我也做过,毕竟我曾在一家CPU公司工作了7年(Linus1997年起就职于全美达)。我没有去做焊剂钢铁之类的事,但是我非常喜欢在底层工作,我喜欢思考软件是如何同CPU及其他硬件交互的。此外,
我确实没有意识到这项工作有多么艰难,也从没有想到自己会在这上面专注了超过15年的时间”,liuns如此轻描淡写的回答了这个问题。
http://home.lupaworld.com/home-space-uid-26540-do-blog-id-239156.html