一波三折 - 微软发布Linux驱动代码
上周短短数天之内,微软连续发布了两个GPLv2程序:第一个是Hyper-V的Linux驱动,第二个则是Live Services for Moodle的插件。 Moodle是一个开源的课程内容管理系统,Live Services插件可以让Moodle与微软的Live@edu服务进行整合,向Moodle用户提供电子邮件,日历,即时通讯和搜索。插件现在可以在微软的Education Labs网站上下载。当然第一个程序的影响要大的多,通过Hyper-V的Linux驱动,微软向Linux社区捐赠了2万行代码,,以增加其在虚拟化市场的竞争力。
7月21日凌晨,微软公司对外宣布,面向Linux内核社区发布2万行的设备驱动程序代码。这是微软首次直接面向Linux社区发布Linux设备驱动程序代码,用的是目前Linux社区最受欢迎的许可方式GPLV2。
微软发布的2万行设备驱动程序代码可供Linux社区和客户使用,这使得任何版本的Linux都可以基于微软的虚拟化技术Hyper-V Server 2008或者Windows Server 2008 R2 Hyper-V上进行虚拟化。在此之前,因为双方有合作,微软只提供了Novell公司的Linux操作系统使用其虚拟化技术的解决方案。
Linux驱动程序开发小组表示,微软这一举动是由于他们的敦促所致。Linux的驱动程序开发小组是Linux内核开发团队的一部分,一直以来就在说服各个厂商,请求他们把自己的驱动程序装入Linux内核,领导这一小组的是Novell的一位员工Greg Kroah-Hartman。
Hartman表示,收到了微软提供的22000行源代码后,在未来24小时内就会在下一个Linux的发行版中发布。Hartman说,这些代码将会成为Linux内核2.6.30.1稳定版的部分,而包含开源驱动程序计数的首个主内核版将会在12月份作为2.6.32版的一部分予以发布。
有业内人士认为微软向Linux贡献代码是非常受欢迎的,也有人认为微软将利用GPL对Linux平台发起冲击。 红帽首先肯定了微软的改变,但红帽依然敦促其竞争对手保证将不会利用其专利权来打击Linux。 红帽法律部门表示:“微软为GNU通用公共授权V2下的Linux内核做出了非常重要的贡献,这是非常重大的一个新闻。这就好像昨天微软还在以Linux、开源软件、GPL为对手,今天就变成了Linux社区的一个可靠成员。作为为Linux内核贡献最大的公司,红帽对此表示非常感谢,也鼓励微软能继续为Linux做出贡献。”但是红帽的法律部门还表示微软需要承诺不采用任何的专利权来打击Linux。“要赢得Linux社区的尊敬和信任,微软需要不含糊的保证不会用专利权来打击Linux以及其他开源开发人员和用户。”
Linus则表示他至今尚未看过代码,因为它是驱动程序,是低风险的,他本人对驱动代码的兴趣也不大,他信任驱动的维护人员能做好他们的工作。如果驱动项目的维护者Greg Kroah Hartman将微软的代码递交到Linux kernel,他可能会出于好奇心而去观赏一下。Linus很坦率称自己是务实主义者,他可能有时也会去取笑微软,但同时他认为微软仇恨是一种疾病。自由软件世界有“极端主义者”,这是他为什么不称呼他的工作为自由软件的主要原因之一,他不想与排外主义者和仇恨者扯上关系,他承认这可能出于私心,但所有开源代码其实都是出于利己因素驱动的。
正如陆首群教授说的那样,微软这么做是有多重原因的。一是为提高微软在虚拟化市场上竞争力服务,二是面对Linux发展形势中争取主动。
微软此次发布的2万行Linux设备驱动程序代码,首先受益的是那些计划使用虚拟化技术的公司。在此之前,用户如果想在既有Linux又有 Windows的异构环境下使用虚拟化技术,微软提供的解决方案只针对一家Linux厂商Novell,现在,所有的Linux版本均可使用微软的 Hyper-V来虚拟化Windows及各种版本的Linux。客户有了更多的选择。
对于微软而言,它向竞争对手Linux提供帮助并不是一个亏欠的买卖。微软意识到,虚拟化的趋势不可阻挡,微软也对Hyper-V带来的收入寄 予厚望。Linux驱动程序的发布,让所有版本的Linux都可以使用Hyper-V,业内分析认为这一举措可以提高微软在虚拟化市场的竞争力,提升 Hyper-V带来的收入。
事情到了这里本来应该告一段落,可戏剧性的事情发生了。微软在GPL许可证下发布了Hyper-V的Linux驱动,但最终它将无法被Linux kernel接纳,因为其违反了GPL许可证。据一位开源软件网络工程师称,微软根据GPLv2许可证协议为Linux内核发布的代码在微软发布之前就违反了这个许可证协议。
开源软件网络厂商Vyatta的主要工程师Stephen Hemminger在博客中称, Hyper- V开源驱动中有一些组件静态链接到闭源的binary,这是GPL所不允许的。他认为这个驱动程序有根据GPL许可证授权的组件和与一些二进制代码有联系的组件。由于这个许可证不允许专有软件和开源软件混合使用,微软的这个软件就违反了GPL许可证协议。
Hemminger说,他已经提醒Novell这个违反协议的事情,并联系了Linux Driver项目负责人Greg Kroah-Hartman,希望在不引起媒体注意的情况下解决该问题。Novell随后把这个事情通知了微软。Hemminger还对微软发布这个代码表示祝贺。这个代码包含4个驱动程序。这些驱动程序是虚拟化Linux设备驱动程序的一部分。他说,虽然这个事情用的时间比预期的长,但是,微软终于决定做正确的事情,发布了这个代码。但Linux kernel弃用微软的Hyper-V驱动的消息最终被公开,Kroah-Hartman证实由于存在违反GPL许可证的行为,代码未被接受。这让微软感到万分尴尬。
微软上周四通过公共关系部门对此事做出回应称,它正在研究对Hemminger的说法给予答复。Novell没有对此发表评论。