当前位置:Linux教程 - Linux业界 - 锻造经典 微软需要向 Linux 学习什么

锻造经典 微软需要向 Linux 学习什么

  【IT168 软话不软】在上篇文章中,我列出了 Linux 可以从微软身上学到的 5 件事。但是,事情总是具有两面性:同样的,微软公司也可以从 Linux 身上学到很多的东西。


微软的确可以从 Linux 身上汲取许多营养!

  我知道这听起来有点奇怪,因为你们中的绝大部分人都正在一台 Windows 电脑上浏览这篇文章。但是,只要你稍微想想,就不难挑出微软身上还是存在着这样那样的缺点:微软的软件产品总是姗姗来迟;微软软件凭借着糟糕的系统安全性而闻名于世。再看看另外一方,想想 Linux 是怎样在服务器领域一路高歌猛进,又是怎样开始在电脑桌面系统领域扮演着一个越来越重要的角色。最后,让我们不要忘记还有伟大的苹果电脑公司,它已经凭借着自己的 Intel 硬件构架的新款 Mac 电脑从垂死的困境中走了出来,重新又开始在桌面系统领域中流行了起来。

  微软公司可能依然还处于这个世界的顶峰,但是预示着它下落趋势的征兆却无处不在。任何公司都可能在任何时候从自己辉煌的宝座上滑落下来,这种情况在历史不断地反复发生。

  在这一点上,微软公司无法超脱于万物之外。


曾几何时,IBM 公司统治着 PC 市场

  还记得当初每个人都只购买 IBM 生产的个人电脑的那个时候吗?现在,IBM 再也不销售 ThinkPad 笔记本了。曾几何时,每个人都会买美国制造的汽车,但是今天,通用汽车和福特汽车的市场份额在不断的萎缩,而来自日本的丰田公司和本田公司却在急剧地侵吞美国本土的汽车市场。此外,我还依稀记得早年泛美航空公司(Pan-American Airways )垄断美国国际航线市场时的盛况,但它却早已在 1991 年的时候破产了!

  一时的辉煌并不代表着你能够永垂不朽!假如微软公司想要永远占据着世界的顶峰,就必须要从自己最危险的竞争者那里学习一些东西--而这个竞争者就是 Linux。

  1. KISS 原则("keep it simple, stupid"--保持简洁,使用户不用思考!)


Linux 胜在简洁!

  你知道为什么微软无法按时地推出自己的软件产品,而是不断地一拖再拖吗?即便是这个计划看起来是万无一失的时候,也是这样?我知道。

  这种情况的出现,部分上是因为这是微软所采取的商业策略。这是微软惯用的伎俩,它喜欢使用这种“烟雾弹”策略来扼杀自己的竞争对手。每当某位竞争对手推出某个新产品的时候,微软总会大肆宣扬自己“即将推出”的最新软件产品中也同样包含有这个功能。结果怎样呢?消费者们一般都不会购买刚刚上市的这个新产品,而是乖乖地等着在“不久之后”购买微软的产品。

  但是,这还不是故事的全部。在经过多年的演化之后,微软公司的软件产品已经进化成了一头由无数意大利面条式的代码纠缠而成的复杂的庞然大物,以至于我很怀疑在微软公司中是否有人真正对软件的开发和进展有一个清晰而全面的了解。在程序开发者的圈子中,微软的软件是对这种“现代浮肿式软件”的最佳诠释。

  而在另一方面,Linux 继承了古老的 Unix 模式的精髓,使用着许多简单的,微小的程序,库文件和 APIs(应用程序设计界面)来构筑了一个精巧得多的软件。大部分 Linux 的发行版本和在它上面运行的软件,其程序源代码都能够被使用者们轻松地阅读、理解以及调试。

  这就是为什么 Linux 会比 Windows 进化得快得多的主要原因。举例来说,那不断推迟延期的 Vista 的 3D 图形界面“Aero Glass”依然还有很多地方需要被完善。而 Linux 这边的对应产品 Xgl,虽然依然处于开发之中,但是你知道吗?Xgl 现在已经能够工作的非常良好了,很多用户已经在使用它了。

  另外值得注意的一点是,Aero Glass 要求配置非常高端的图形显示硬件来支持。而 Xgl 我在自己只配备有整合 Intel 显卡的机器上成功地运行了它。

  假如微软真正是想要编写出更好的软件的话,管理层需要真枪实弹地对最基本的东西进行改革,而不是只坐在那里高谈阔论他们又怎样重新构筑了 Windows 系统,大肆吹嘘他们所取得的进步。微软需要真正放弃自己原有的工作方式,而采纳 Linux 或 Unix 风格的编程哲学。


Unix 基础的苹果电脑一直是 KISS 原则的典范

  2. 开发源代码(Open Source)


Open Source

  谈到编程的哲学,事实上,微软并不会因为接纳了开发源代码的哲学就彻底完蛋。我在这里所说的“接纳”,是真正意义上的“接纳”,而不只是施舍般的放出一星半点的软件代码。

  如果比尔·盖兹无法接受 GPL 协议--他也的确无法接受--这里还有 BSD 协议。很多商业公司,诸如 Sun 公司和 Scalix 公司, 他们也同样非常高兴地发现自己可以修改 MPL 协议(Mozilla 公共协议)来满足自己的需要。

  毕竟,现在看起来,微软公司也不再是真正地想要通过“将自己的软件卖给消费者”而维生了。微软公司现在其实是想把自己的软件租给你。他们想让你通过 Windows Live 或 Office Live 等等集中式的网络服务站点来使用他们的软件。简而言之,他们真正想要“卖”给你的是技术支持和服务。

  那好,现在再想想,成功的 Linux 公司使用的是哪种商业模式?是的,你答对了:Red Hat 和 Novell/SUSE 就是靠提供技术支持和服务而赚了大钱。

  而在微软公司那食古不化的大脑里面的最深处,他们还坚持着自己的商业模式就是销售私有软件。关于这一点,引用比尔·盖兹在 2002 年西雅图“政府领袖大会”上的原话,是这样的:“GPL 软件指的就是像 Linux 这一类的东西,你永远无法在它周围创造出任何商业模式。原因很简单,因为它必须是免费的。”

  “什么,永远都不能?”“是的,永远不能。”“你肯定,永远都不能?”“好吧,几乎永远都不能!”这艘无敌战舰的舰长一直在向世界这样宣布着。现在,虽然 Red Hat 还无法拥有像微软公司所具有的那样的媲美中等国家的收入,但是,这家市值超过了 45 亿美元 Linux 公司每天都在通过免费软件赚取丰厚的利润。


市值 45 亿的 Red Hat 公司是靠“免费”赚钱的大师!

  为什么需要转换为开放源代码模式?因为微软的程序开发需要接受一切它能够得到的帮助。是的,微软公司拥有无数顶级的程序员,但是,想想这些开放源代码程序员是怎样以更快的速度创作着更好的软件,这显得不是非常讽刺吗?

  这里所阐释的道理是。这个根本与编程哲学毫无关系,不要去想什么“开发源代码软件”、“自由软件”和“私有软件”之间的意识形态的冲突。这里是纯粹的实用主义:开放源代码的开发模式能够创造出更好的大众化程序,并且速度更快。

  你可以抗议说开放源代码不是对什么都适用的。这一点我同意。

  的确,很难想像许多应用面很窄的软件程序,诸如在不动产或工厂生产线的控制程序能够吸引到足够的社区参与者,以便于通过开放源代码的方式来进行发展。另一方面来讲,我也的确很难想像开放源代码程序员们有足够的法律素养来编写个人税务方面的程序。但是,对于能够吸引到程序员参与的主流软件来讲,开放源代码模式的确是现有的最好的开发方法。

  3. 精简中层管理机构

  基于 Windows Vista 那无休无止的延期,谁曾经说过“Vista 的管理层应该被炒鱿鱼,并立刻被踢出今天的微软。因为他们要为自己的异想天开负上全部责任”?

  请选择答案:A)Steven J. Vaughan-Nichols,本文的作者兼《Liunx 观察》的编辑;B)Mary Jo Foley,《微软观察》的编辑;还是 C)一位微软公司的程序员?

  正确答案是 C。

  假如你阅读过诸如“迷你微软(Mini Microsoft)”或“口袋风暴(Packet Storm)”之类的微软公司内部的博客的话,你就会发现很多微软程序员根本一点都不喜欢公司的中层管理机构。他们完全有充分的理由这样感觉。

  微软公司现在变得越发臃肿了。有无数的决议和思想在公司上下不断地流窜循环,却没有一个能够真正地解决问题。在大多数情况下,公司内部的首要工作目标是让自己的上司看起来顺眼,而不是尽力开发出高质量的产品;互相“踢皮球”成了公司中最流行的运动,没有任何人会主动地站出来,勇敢地负起自己的责任。

  你也许是这个世界上最棒的程序员,但是如果你陷入了公司管理层的纷争的话,如果你的工作从目标上来讲就没有什么价值,如果你无法得到清晰而正确的指示,你编写出来的东西将依然只是一堆垃圾。无数的微软程序员都这样被废掉了。但是,我想这不是他们的错。

  而在开放源代码世界中,情况却恰恰相反,直到世界末日的来临,它都只会关心代码的质量。你的工作会处于整个世界的注视之下,如果它不够好,将没有人会用他。但如果它很棒的话,全世界都会用它,而其它的开发者也会更加尊敬你。

  自始至终,开放源代码世界将会只保留人类知识的精华。只有出类拔萃的,才会永久留存。


开源世界的生存法则:多样化,适者生存!

  你感觉自己受到了开源社团领导者的排挤,或是和他意见不和?在开放源代码世界中,你可以自由地离去,开拓你自己的疆土。假如你的选择是正确的,其它的精英程序员将会追随你而来。

  每当我听见有人将开放源代码的发展方式比做某种软件世界的万物平等的共产主义运动时,我就感到非常的好笑。事实与他们所想的恰好相反。开放源代码世界是超级纯粹的自由市场的资本主义,它是软件世界的达尔文进化主义。在这个世界的法则中,绝对不会有平等和和谐,只有弱肉强食,适者生存!

  任何人都可以参与,任何人都可以编程,但是,假如你希望 Linus Torvalds 能够采纳你的代码,并将其整合到Linux的系统内核中的话,它就必须要是世界一流的代码,并且能够和 Linux 的其它部分良好兼容。

  举个著名的例子,Reiser4 文件系统。它是世界上最快的文件系统,同时它也具有良好的安全性能。但是,现在它依然没有被整合进 Linux 的系统内核。为什么?因为,虽然它现在已经逐渐地要被接纳了,但是一些 Linux 的核心开发者们依然感觉 Reiser4 还需要进行进一步的完善,以便能够更好地适应整个系统内核。

  那么,开放源代码模式就是完美无缺的吗?不。它离“完美无缺”还有很长的距离。在任何努力中都掺杂着自私的成分。无论如何,这就是为什么现在世界上会同时存在六七个主流的 BSD 操作系统的原因。

  但是,至少这些竞争都是公开的,都是摆在桌面之上的。在开放源代码世界中,不存在“抢功劳”或踩着他人的头向上爬的事情。自始至终,开放源代码世界都将软件质量是摆在第一位的,它对于软件质量的重视程度要远远超乎于某个由“办公室政治所统治的地狱”对软件质量的重视程度。而微软公司似乎正在逐渐地演变为这样的一个地狱。

  4. 行事坦诚!

  .NET 究竟是什么玩意儿?

  我的好朋友 Mary Jo Foley 最近这样说到,.NET“已经变成了一个毫无意义的术语,以至于微软自己也不能简单地将其阐释清楚。”

  让我们再来看看微软是怎样支持开放标准的:事实是它根本就不支持。噢,微软公司也许会辩解说它是支持的,但是看看事实上真正是什么情况。比如说,在 7 月份的时候微软宣布将会对开放文档格式(ODF)进行某种程度的支持。我那时候就不相信它所说的话。你看后来发生了什么事?我猜对了。微软对于 ODF 支持的缺斤短两让我感到恶心。

  这种事情发生在微软身上已经不是什么新闻了。但是,你知道吗?微软其实是能够改变这一切的。

  如果微软想要获得好的声望,它所需要作的仅仅就是真正地使用正确的名称和支持标准。

  想要制作一个新的编程框架?棒极了!但是要记住就将它简单地命名为 .NET,而不要在.NET 前面再加上什么稀奇古怪的前缀。想尝试将软件转换为一个网络服务,也行,将它命名为 Windows Live 和 Office Live,但是不要将“Live”这个称号弄得到处都是,不要以后每弄出一个新玩意儿,就冠上“Live”的称号。

  用户永远都不希望感到困惑。


“盖茨大帝”应该对开放标准真诚一点

  另一方面,对于标准来说,要老老实实地支持它们。我了解对于商业而言,一个标准在建立自己的市场领导地位上所付出的努力,要远远超乎于制定标准本身所需要的工作。因为,如果你自己的“标准”成为了“市场的标准”的话,你自然而然就会在商业竞争中领先于自己的竞争对手。这也就是为什么我们现在还无法对 802.11n 无线网络标准达成一致的原因。

  但是,对于微软公司而言,事实上却不用为此类争斗而操心。微软的文档标准,比如 Open XML,它的研发,生产,储存和推广完全都是由微软自己一手操办的。

  对于那些非微软标准来说,它们其实是早已存在了的。因此,这里不存在着什么要在市场上占领先机的问题;现在的问题是在部分市场中,已经有一部分用户在使用这些非微软标准了,而你需要帮助自己的用户能够更好地和这些“非微软用户”一起工作。

  但是,在过去,微软经常将这些标准玩弄于股掌之间。它常常装作自己也是“标准化运动”的一分子,但是接着便在标准的基础上增添一下新的功能和特性,以便让微软版本的标准看起来更棒一点……当然,这是在你全部使用微软的软件产品的情况之下。

  微软想要通过这种方式将用户牢牢地拴在自己的软件平台上。但我认为事实上却很难达到微软所期望的效果。我想这种策略只会激怒其它软件厂商,并且赶跑聪明的用户。

  如果微软的市场研究团队能够好好审视一下自己关于品牌名称和标准支持的策略思维的话,我会感到非常的欣慰。我打赌,他们将会发现 Linux 所具有的率直坦诚的理念,清晰易用的命名规则,以及对开放标准的真正支持,将会是更好的一种发展策略。

  5. 拜托,现在已经是网络世界了!


现在已经是网络世界了

  你想知道所有的微软安全问题的根源在哪儿吗?因为在它的内心深处,或是在它的代码深处,微软依然还是将 Windows 电脑看作是独立的设备。

  哦,不,它们不是独立的!自从 Windows 工作组(Windows for Workgroups)诞生以来它们就不再是独立的了。

  今天,整个世界都与你的电脑连接在了一起。这就意味着,Windows 的一些陋习,它那让所有的数据和程序都在底层上共同工作的陋习,从 DDE(动态数据交换)到 ActiveX,不但能够让 Windows 程序得以在相互间通过网络进行交换操作,同时也使那些黑客们得以轻松自如地潜入你的电脑,并大肆破坏。

  是的,我知道 Vista 中新增 UAP(User Account Protection,用户账户保护)、LUA(Least-Privilege User Accounts,最小权限用户账号)、强制统一控制(mandatory integrity control),以及其它等等类似的闪亮的安全噱头。但是,我也知道这些东西也都只是为了修补那些同样的,古老的,基本的问题。

  并不只是我一个人这样认为。赛门铁克(Symantec)同样也指出了这一问题。

  当你继续深入下去,触及到问题的本质的时候,你会发现任何人都无法修复一个从根本上就存在着漏洞的模型。这是绝对不可能的。


Linux 时刻准备着抗击一切挑战

  Vista 的开发者们真正应该做的是好好地向 Linux 学习。在 Linux 和 Unix 中,系统从编写第一个代码开始,就处于这样一个指导理念之下,那就是“系统可能会被多个用户使用,并且它很有可能为被接入到一个危机四伏的网络之中”。

  Linux 会被攻击吗?当然。任何系统都有可能会被攻击。但是,这一点从根本上来讲对于 Linux 要难一点。即便是某个黑客成功地侵入了Linux系统,如果他没有得到系统的根用户(root)的管理权限的话,他也很难对系统造成重大的破坏。

  而对于 Windows 系统而言,一旦你侵入进去,就像是进入了一个自选超市一样。你可以轻而易举地将这台电脑变成一台垃圾邮件发送器,查看所有的密码,以及做其它任何你想做的事情,当然也包括完全将这台电脑弄瘫痪。有人想遭受这样磨难吗?

  最后,某一天,不知何故,就会突然爆发一场巨大的 Windows 病毒或蠕虫的攻击,这场攻击将会使以前所有的大规模病毒爆发相形之下显得就像毛毛雨一样温柔。这就像是在过马路时闯红灯一样。不错,100 次中有 99 次你都会安然无恙。但是,当你第 100 次闯红灯时,警察可能就会需要用街道清扫车来收集你的遗骸了。

  总结


微软能够在未来一直取胜吗?

  那么,最终微软公司内会有人挺身而出来解决这些问题吗?对此我深表怀疑。

  直到现在,微软公司按照自己的方式一直生存地非常、非常、非常的好。人们总是倾向于遵从传统的做事方式,直到某一天他们被迫认识到这些古老的方式的确再也不适用了才肯罢手。

  如果 Vista 会栽上一个大跟头,或是每个用户都决定不购买 Office2007,只是继续使用 Office 的早期版本或迁移到 OpenOffice 平台上,微软可能会开始做出一些改变。假如某天某个病毒给 windows 电脑世界带来了地狱般的劫难,我可以打赌微软一定会做出某些改变。但是,正如其它公司一样,如果上述这些劫难没有真正发生,微软也就不会真正地敞开自己的心胸,做出改变。

  但是,从大历史观的角度看来,对于绝大多数公司而言,当这一天真正到来时往往已经为时已晚。我怀疑在这一点上微软是否能够有所不同。

  但是,在最低限度上,我依然希望微软能够改革自己的中层管理机构。那些不可思议的糟糕的延期,即便是由微软对于成功的低标准看来也是这样,在很大程度上都是由臃肿糟糕的中层管理机构所导致的。

  这就是我,一位身处微软公司外部的愤世嫉俗的记者,所期望微软应该去做的一件事。但这种期望,其实根源于微软公司的内部。微软的高层们可能不会在意我说了些什么,但是他们的确应该好好地倾听一下自己员工所发出的声音。

(原文作者:Steven J. Vaughan-Nichols,文章来源:Linux-watch,点击查看原文)

原文出处:IT 168