热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

为什么当年成功的是Linux,而不是BSD

为什么当年成功的是Linux,而不是BSD--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
敝人摸 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?个人认为应该没那么容易吧!
推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • windows便签快捷键_用了windows十几年,没想到竟然这么好用!隐藏的功能你知道吗?
    本文介绍了使用windows操作系统时的一些隐藏功能,包括便签快捷键、截图功能等。同时探讨了windows和macOS操作系统之间的优劣比较,以及人们对于这两个系统的不同看法。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
author-avatar
艳斐儿M
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有