微软的可爱的蛋糕与对Kernel代码的贡献
时间:2011-08-02 来源:ugmbbc
作为一个 Linux 用户,你会信任 Microsoft 吗?也许以前你会好不犹豫的说 No,不过最近两条让人大跌眼镜的关于 Microsoft 与 Linux 的新闻则让许多人开始认真思考 Microsoft 与 Linux 的关系,一是在前不久发布的 Linux 3.0 中,来自 LWN 的统计显示 Microsoft 位列 RedHat, Intel, Novell 与 IBM 之后成为第五大 Linux Kernel 代码贡献者;另一个则是 Microsoft 在 Linux 20 周年之际,制作了一则可爱的视频,视频中卡通版的比尔盖茨为小企鹅送去了祝福的蛋糕。
不管你对 Microsoft 曾经有多么厌恶,这个视频都会让你脸上露出笑容,片中以轻松的语调回顾了 Microsoft 与 Linux 的战争,并在最后以友好的姿态建议为二者的对抗划上句话,至少 Microsoft 认为二者可以共存,它们的关系应该是 Microsoft and Linux,而不是 Microsoft vs Linux。
这个视频释放的善意当然让人欣慰,世界和平这个词也许说出来有点矫情,不过假如 Microsoft 与 Linux 真的能够相安无事,那这个世界真的会清静许多;如果 Microsoft 不仅仅是贡献 Kernel 代码,还能够在一些应用上遵循标准,甚至开放接口,这个世界无疑将更加美好。不过,就像我的祖国与她那一衣带水的邻居在一起时经常所说的那样,以史为鉴, 面向未来。重温 Microsoft 对待 Linux 的历史,也许对于二者未来的关系更有意义。
当 Linus 发出那封著名的宣布 Linux 诞生的邮件时,微软已经凭借 DOS 取得了在 PC 操作系统的主导地位,并开始进入 Windows 的时代,虽然 Linux 并不是为了取代 Windows 而生的,但 Linux 的发展在一定程度上逐渐的威胁到了 Windows,尤其是当 Windows 也进入到 服务器领域时,二者的竞争是不可避免的。
在 1998 年泄漏的 Halloween 文档里, Microsoft 第一次正式的承认了开源特别是 Linux 将是对 Microsoft 统治地位的主要威胁,并提出了一些战略上的措施来阻止 Linux 乃至开源运动的发展。这些泄漏的内部文档令局促不安的微软正式的站到了 Linux 的对立面。
2000 年,Ballmer 在微软的年度财会上对 Linux 的评价引申出了那句臭名昭著的“Linux is communism”,在他看来,Linux 的迅速扩展是因为 Linux 有一些共产主义的特质,那就是 Free。可怜 Ballmer 先生在错误的地方说出了这番话,如果是在天朝,那该多合适啊。
2001 年,又是 Ballmer 先生在一次接受媒体采访时,提到了另一句臭名昭著的话“Linux is a cancer”,他把对 Linux 的痛恨比喻为癌症,任何被它侵蚀的代码都被感染而无法具有知识产权的功能。
2004 年,Microsoft 对 Linux 的打击进入了一个新的阶段,单纯的用肮脏卑鄙下流的语言已经不能起到应有的效果。微软发动了一场市场战役,通过一些客户案例来宣称在实际的使用上,Linux 并不能起到节约开支的作用。
Linux 在不同时期都被指责侵犯了别人的版权,包括微软的,Oracle 的,UNIX 的,这其中有 Microsoft 在背后不遗余力的推动。2009 年 Microsoft 控告 Tomtom 采用了 Linux Kernel 的产品侵犯了微软的 FAT32 代码的版权;在前不久,Microsoft 又指控 Android 代码侵犯了版权,并要求 Samsung 为出厂的每台 Android 设备支付 15 美元。
另一方面,随着 Linux 在 Server 市场的所向披靡,微软又不得不接受这个现实,并不得不在自己的产品中支持 Linux。微软与 Linux 的关系让人觉得这得是精神多么分裂的人才能干出来的事啊。
2009 年,微软的 Hyper-V 的 Linux 驱动被发现包含了 GPL 代码,随后微软开源了该驱动,并对开源的代码使用了 GPL 版权。微软开源的这些代码主要是为了能在自己的 Hypervisor 虚拟机上更好的运行 Linux。显然,云计算与虚拟化的大热,以及 VMWare 的高利润率不可能不吸引到微软投入其中。
微软与 Novell 的合作(现 在是 Attachmate,该合作刚刚续到 2016 年) 也是为了能够更好的在 Windows 与 Linux 的互操作性上提供支持,特别是虚拟化的环境下,比如在 Hyper-V 虚拟机上运行 SUSE Enterprise Linux Server。微软在今年早些时候宣布 Hyper-V 虚拟机将支持 CentOS,在刚刚结束的 OSCON 2011 上,微软又宣布 Hyper-V 将正式支持 RHEL。在虚拟化与云计算的大环境下,微软不得不考虑客户多系统的环境。
所有这些都是商业利益,不过在 Linux Kernel 的开发人员眼里,源代码才是最真实的。微软在让自己的代码进入官方 Kernel 的过程中,痛苦不堪。在 2009 年开放源代码并提交给 Kernel 开发人员之后,这些代码并没有直接进入官方 Kernel,而是在 staging tree 中接受 review,直到符合 Kernel 的代码标准为止。
显然,Windows 与 Linux 这两个各有 20 年历史的项目,代码上最直观的不同来自于编码风格。虽然 Linux Kernel 的开发人员都极其痛恨 Windows 的编码规范(DWORD, HANDLE 这些玩意儿),但让 Windows 的开发人员将这些代码一一改成符合 Linux 的编码规范,也不是件好差事。因此在最初的代码提交后,Microsoft 就没了下文,直到负责驱动部分代码维护的 Greg K.H 威胁将这些代码从 staging tree 中拿掉,微软才又开始慢慢的行动起来,不过进程仍然极其缓慢,直到这次 3.0 的发布。根据 LWN 的统计,微软的开发人员将最初提交的 20000 多行代码精简到了大约 15000 行代码。
因此微软这次对 Linux 3.0 的贡献主要集中在对之前开源驱动代码的清理与规范上,未来微软仍有可能对 Linux Kernel 有较大的贡献,因为这些代码仍然在 staging tree 中,仍然有一些问题需要解决才能正式的进入 Kernel,并且随着 Kernel 的发展,这些代码也需要不断维护。至于除此之外,微软会不会对 Linux Kernel 有更多贡献,除非微软开发自己的 Linux 发行版。
最后回到蛋糕身上,当你再次欣赏这个可爱的视频时,你会想到什么呢?
我想到的是,前不久,当 Firefox 5.0 发布时,IE 团队也送上了祝贺的蛋糕。嗯,这是他们的老套路了。
文/开源小厨