Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308577
  • 博文数量: 321
  • 博客积分: 10055
  • 博客等级: 上将
  • 技术积分: 3780
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-29 13:03
文章分类

全部博文(321)

文章存档

2012年(1)

2010年(7)

2009年(1)

2008年(312)

我的朋友

分类: LINUX

2008-09-21 08:23:59

敝人摸 Linux 也颇有一段时日了,偶尔偶尔也试着把触角伸向 FreeBSD。不知从何而来的既定印象,总听到人们说 BSD 不管是功能性、稳定度、安全性等等各方面都在
Linux 之上,甚至 Microsoft Windows 2000 和 Mac OS X 都取用了来自 BSD 的程序代码。如果真是那样,那么理论上 BSD 应该是 Free Software 里 OS 的霸主才是。但事实上,真有君临天下的气势的却是 Linux,BSD 相对来讲冷门多了。

是什么造成了如此的差别?难道大家真的是放着 BSD 这好东西不用,宁愿去用 Linux 这次等货?这种说法想也知道颇有可议之处,BSD 一定是因为某些因素才难以和 Linux 竞争的。

有人说是 BSD 那件法律诉讼让 BSD 从此无法和 Linux 竞争的。至少维基百科上的说法是这样的:

BSDi 很快就与 AT&T 的子公司 USL 产生了法律纠纷…这桩法律诉讼使得 BSD 的自由软件分支的开发进度延宕了 2 年之久,这导致没有类似法律问题的 Linux Kernel 获得了极大的支持。

但 BSD 约略面市于 1977 左右,也就是说该件诉讼案发生(1992)时 BSD 已发展了约 15 年。若说因为 2 年的停顿就使得 BSD 从此无法和 Linux 竞争其实是很难服人的:难道 2 年之间 Linux 成长幅度竟能抵得上 BSD 的 15 年开发史?且在该诉讼案结束时(1994 年 1 月)Linux 连 1.0 版都还没发布呢!难道 Linux (<1.0) 竟会比老牌的 BSD 更具竞争力?这显然不是问题所在。

为此我 Google 了许久,找到了以下几种说法,虽然也许都不是必要因素,但综合起来却决定了 BSD 和 Linux 的优胜劣败。不过那个年代离敝人实在太遥远了,因此这些说法多为道听涂说,请当作茶余饭后的闲嗑牙吧!

* 时机:

Linux 是出现约在 BSD 官司缠身及 Internet 起飞之时。

Linux 是 Linus Torvalds 苦于当时在 386 PC 上没有免费的 Unix 可用所以他才决定自己写一个的。Linus Torvalds 就曾说,如果当时已有 386BSD 或 HURD,他可能不会去开发 Linux。386BSD 发表于 1992 年 3 月,约是 Linux 面市(1991 年 9 月)后半年;而 HURD 则是迟至 1998 年才有一个最初始的体验版释出。换句话说,386BSD 和 HURD 若能再早点推出,那么 Linux 可能根本不会出现在这个世界上也说不定。

其实,最初 Richard M. Stallman 是计划和 BSD 的人们合作开发 HURD 的,但有部份 BSD 的开发者却不愿和 GNU 合作,这项合作案的拖延、最后破局却正好给了 Linux 发展成长的空间。

而此时正是 Internet 兴起之时,Linux 的开发者及爱好者正好能透过 Internet 实时得发布新闻、发表新点子、提问讨论、递送程序代码及进行错误回报,这种藉由 Internet 的分布式合作方式带给了 Linux 无限的活力。再加上 Linus Torvalds 本身独到的管理哲学,让许多实力顶尖的黑客们愿意参与 Linux 的开发工作,而不像一些大型项目那样纷争不断、最后导致分崩离析。就这样 Linux 藉助了 Internet 的力量以惊人的速度成长茁壮,待及 2 年后 BSD 解决官司问题时,Linux 的质量竟足以和那些 BSD 的自由软件分支竞争了。

*硬件支持:

在 Linux 现身(1991 年 9 月)之时,约莫刚好是人们开始买得起个人计算机时。但糟糕的是,当时的 BSD 并不支持当时的个人计算机所使用的 i386 硬件,而一般老百姓应该不太会为了玩 BSD 而特地购买高价的服务器设备,因此人们,尤其是穷苦的大学生,若要玩 Unix 时只有 Linux 可供选择,相对来说 BSD 的吸引力当然就大不如 Linux 了。

也就是说,新一代的 Hackers 及 Lovers 多站在 Linux 这边,BSD 自然难以和 Linux 竞争,而后来的 386BSD 及其继承者 FreeBSD 就是针对 i386 硬件而开发的 BSD 分支,但因为错失时机再加上以下种种原因,似乎还是难以和 Linux 竞争。

*GNU 的大力支援:

我想 GNU 这个伟大计划敝人就不用再多加介绍了。GNU 提供了一个操作系统所需的各式各样必要组件,但最重要的组件 - Kernel 却迟迟没有着落。原本计划好要成为 GNU 官方 Kernel 的 HURD 的发展一直很不顺利,而 Linux 的出现就刚好出现填补了 GNU 这个拼图上最重要的一个大洞。

另外,虽然 GNU 的软件质量是毋庸置疑,但 BSD 的人们(尤其在核心工具程序部份)却似乎不怎么爱用 GNU 软件,因此喜爱 GNU 软件的人们除了 Linux 之外就似乎别无选择了。

就这样,GNU 和 Linux 一拍即合,虽然 Linux 只是个初出茅庐的 Kernel,但它却适时得和刚好欠缺 Kernel 的 GNU 搭配组成一个高质量且功能完善的操作系统。Linux 能如此受欢迎真的要感谢 GNU 多年来在前默默得铺路呀!

个人认为,Linux 和 GNU 是分不开的:没有 GNU,那么没有任何工具程序的 Linux 根本无用武之地;而没了 Linux,GNU 软件就没有了可以尽情发挥的舞台了。因此,个人可以接受人们说 Linux 的全名应该是 GNU/Linux。若我们仔细想想 Linux 的发展成长过程,个人认为如此称呼并不为过。

*教堂和市集、学究和黑客:

BSD 最让人称道的地方就是『严谨』。传统上 BSD 会有个名为『Core Team』的开发团队,BSD 的开发工作、方针及发布行程就由这个 Core Team 掌控一切。

但 GNU/Linux 相对来说就松散许多。Linux Kernel 是由 Linus Torvalds 负责、GNU 则由 Richard M. Stallman 带领、各个 Linux 发行版都各有其不同的支持团队,每个工具程序、甚至每个函式库都有其不同的开发小组,而彼此之间基本上很少有什么沟通协调机制或协同作战的观念,因此感觉上就比较松散。

也就是说,BSD 走的是教堂式的学究派路线,而 Linux 则是代表了市集式的黑客精神。

在人们观念里,『严谨』的开发方式才是迈向成功之路,但 Linux 的出现却颠覆了这种传统看法。因为没有人能掌控这一切,因此在 GNU/Linux 里任何新奇的想法、建议、批评、比较、争论、不满…就像煮开的热锅里的水泡哔哔啵啵不断得翻涌上来:只要言之有物,说的话总有人听、发现的问题总有人热心解决、发表的意见总能获得立即的响应。在这种开发者和使用者的界线模糊不清、彼此相互合作、竞争、激励的环境下 Linux 的进步当然是一日千里,Linux 的确是将 Internet 的特性发挥到极致了。

而同一时期的 BSD 相较之下就显得低调许多。虽然『Core Team』这种开发模式能够确保 BSD 的质量维持在最高标准,但相反的就容易导致像是保守、死板、僵化、不易沟通、难以吸引开发者等等之类的批评。虽然之后接手的 FreeBSD 的 Core Team 就较为活泼开放,非常愿意采纳使用者的意见,但似乎还是难以和市集式的 Linux 竞争。

* 多样的版本:

Linux 的松散结构也反应在 Linux 的发行版上。Linux 并没有什么官方发行版,任何人只要有兴趣有能力,都可以自行发行 Linux,这使得我们能轻易得在 Internet 上找到超过 200 种以上的 Linux 发行版,而实际数字恐怕远不止如此。

这使得在市场上的 Linux 发行套件百家争鸣,每一种 Linux 发行套件都有其特质和吸引人之处。如此一来,几乎每个人都可以找到能符合自己需求的 Linux 发行套件。重于严谨的可能会选择使用 Debian GNU/Linux;想要直接使用完整桌面环境的可能会选 Ubuntu;喜欢自行编译的可能会选 Gentoo,而希望有商业支持的可能会选 RedHat… 而一些开发者无力维护、质量不佳或是使用者群较少的 Linux 发行套件很可能过不久就被其它的 Linux 发行套件所取代了。这种相互竞争的方式也让 Linux 软件的质量能快速得向上提升。

而各个 BSD 的发行版则是由其 Core Team 全权负责,因此至少可以保证该 BSD 的发行质量能符合 Core Team 的要求。且如此一来,全世界使用该 BSD 发行版的人其系统架构将会一模一样,这的确比较让使用者不会无所适从:Linux 各个发行版之间有时就连最基本的套件管理方式都大异其趣了,但在 BSD 上则比较没有类似的困扰。

但相反的,过度控制、缺乏竞争者的结果是 BSD 在弹性上就大不如 Linux 了。使用者既然能轻易得找到符合自己需求的 Linux 发行套件,再加上其实 Linux 也未必比 BSD 差,所以使用者就不太会为了 BSD 而 BSD,强迫自己去接受 BSD 的风格,因此 BSD 会变成小众市场其实并不令人意外。

* Richard M. Stallman、Eric Steven Raymond 及 Linus Torvalds:

若说到自由软件界的代表人物,我想人们脑海中会浮现的名单应该少不了 Richard M. Stallman、Eric Steven Raymond 及 Linus Torvalds 这几位指标性人物。Richard M. Stallman 是公认的自由软件界的精神领袖,他的意见对于 GNU 还是具有一定的影响力。Eric Steven Raymond 则是黑客文化的传道士,他发表了不少像是《教堂与市集》、《提问的智慧》之类对黑客文化影响深远的文章。而 Linus Torvalds 则是 Linux Kernel 项目领导人。这几位指标人物彼此之间似乎总是意见不合,但他们却有一个共通点 - 他们都是 Linux 的拥护者。

也就是说,当几位自由软件界的代表人物都在努力为 Linux 宣传的同时,BSD 自然从人们的雷达范围中消失了。不管 BSD 再怎么棒,但人们不晓得的话也是罔然。

* GPL vs. BSDL:

Richard M. Stallman 之所以是自由软件界的精神领袖,除了他发起了 GNU 计划之外,个人认为他为了 GNU 而撰写的 GPL 更是决定性的因素。GPL 是一种偏向于开发者的回馈条款:使用者可以自由运用 GPL 程序代码,但所有修改必须也以 GPL 开放,让所有人(包括原始程序设计者)都能受益。这是能确保程序代码永远能让所有人自由使用的终极手段。

相较之下,BSDL 应该是偏于使用者的一种无偿授权:使用者如何自由运用这些程序代码,程序设计师无权置喙,只要宣告这个软件是 BSDL 授权即可。因此,BSDL 的软件可能有一天会变成封闭软件 - 像 Microsoft 在 Windows 2000 核心里就采用了一些来自 BSD 的网络组件,但 BSD 的人们却没有因而受惠。Microsoft 并没有必要回馈那些修改后的程序代码。

这或许是决定性的因素:BSD 采用的是 BSDL,而 Linux 则是采用了 GPL。Richard M. Stallman 和 Linus Torvalds 都曾严辞批评过 BSDL,认为 BSDL 会有让项目分裂的倾向,因为人们可以拿了 BSDL 的程序代码而拒绝回馈;而 GPL 则能让项目倾向于整合,因为我们可以将那些 GPL 程序代码再整合回去原程序里。也因此,有很多顶尖的程序设计师坚持只以 GPL 开发软件,他们才不愿花费时间力气为人作嫁。那么采用 BSDL 的 BSD 受到冷落也是意料中事了。

也因此,在众多主观客观因素都有利于 Linux 下,当年 BSD 会落败其实并不让人意外。而迟至今日,BSD 似乎没什么东山再起的气势。举个例子好了,目前在超级计算机里的前 500 大排行榜里,Linux 就占了 427 台,Windows 5 台,Mac OS 2 台,而 BSD 却只有 1 台。虽然用这个来比较似乎有失公允,但我们还是可以由其中稍稍看出一点端倪。

写到这里,您可能会好奇:FreeBSD 是针对个人计算机而开发的 BSD 分支,近年来 FreeBSD 的发展速度也是飞快,摄于 BSD 的优良传统及显赫声名,是否可能有那么一天,FreeBSD 会挤下 Linux 成为 Free OS 的新霸主?

其实,FreeBSD 和 Linux 的分别就只有 Kernel 和 Core Tools,其它应用软件的差别就较小。也就是说,FreeBSD 真正的竞争对手应该是 GNU+Linux 才对。那么,根据本文的论点,这会是一场 FreeBSD vs. GNU/Linux、教堂 vs. 市集、学究 vs. 黑客、BSDL vs. GPL 的战争。但历史已告诉我们:如此的 BSD 之路已经失败了。在一些客观因素没有改变之前,FreeBSD 想要扳倒 Linux?个人认为应该没那么容易吧!
阅读(260) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~