在很多人眼中,传统中的微软和开源根本就是死对头,大有势不两立的架势。但是,很多年过去了,微软也进入了开源社区,并且为开源源代码提供了大力的支持。这个时候,我们如何看待开源和微软的关系呢。有人说是福音,也有人说是魔咒,微软在给开源下套。本篇文章将就此话题展开一系列的讨论。
从2007年7月微软开源技术先驱比尔·希尔夫(Bill Hilf)宣布微软将大踏步的迈向开源那一时刻开始,微软就开始以各种方式从不同层面逐渐渗透入开源社区。首先是在当年10月,微软正式加入了Open Source Initiative(OSI)。在反复审视了微软的公共许可(Ms-PL)和互惠许可之后(Ms-RL),开源组织还是向微软张开了双臂。由此,微软迈开了进入开源社区的第一步。
不管开源还对微软还存在哪些猜测和讨论,微软能够摒弃以往的观念开放地看待开源社区,并为此做出各种努力,这对于开源社区和微软的长期发展都是双赢的。正如,Red Hat的开源事务副主管兼OSI的主席Michael Tiemann所言:“微软加入OSI,这不是结束的开始,仅仅是开始的结束而已。”
微软走进开源社区口水无凭,以往开源界讨论对开源贡献大小习惯用单位或个人对Linux内核贡献做一个排行榜。Linux 内核大概两至三个月会更新一次,每次都有显著的新功能并提高性能。2012年Linux最新的发展报告显示,Linux 3.2 版本的更新完成了1 万多个补丁修改,有226 个企业及1316 个人名义开发贡献的内核。微软此次对于Linux贡献在排行榜上的排名挤进前20名。
此次微软提出了2174 项修改建议,主要的建议项目在服务器虚拟化应用的Hyper-V 技术,但是只有688 项被接受修改。不过,这仍然是微软的首次上榜,也是微软走进开源社区最显著的标志。同时位列傍上赞助内核开发的公司,第一名为Red Hat,其他知名企业如Novell、Intel、IBM、Google、Samsung、Nokia 及Oracle 也是一同参与提出修改与赞助的企业。
事实上,早在2009年7月22日,微软一次向2万行的开发源代码的捐献被认为是向开源社区迈出的最坚持的一步。成立于2006年的微软开源技术中心(OSTC)向开源软件团体捐献了超过2万行的设备驱动程序代码,其中包括三个Linux设备的驱动程序。目前,这些代码被提交给Linux内核社区,并被归类到Linux目录树下,提供给Linux社区和用户。
这些代码支持任何Linux操作系统版本基于微软Hyper-V Server 2008或者Windows Server 2008 R2 Hyper-V平台进行虚拟化。对Linux用户来说,他们将可以在Hyper-V上运行Linux,不再依赖于采用VMware或者Xen等虚拟化技术。
不过,对于微软如此破天荒贴近开源社区的行为,有很多开源厂商和开源社区专家担心,微软其实是想借开源之名达到促进其商业软件营销的目的。当然,作为一个成功的企业,商业利益是其追求的第一目标,这无可厚非。但是在什么样的时代,通过什么样手段是适合的,微软做出了自己的选择——拥抱开源。
微软开源不是说说而已
微软不仅针对Linux内核建设出人出力,还在自身开源技术的发展出钱成立子公司。2012年4月13日,微软宣布组建一个名为“微软开放技术公司”(Microsoft Open Technologies)的子公司,其主要战略重点是开发开源软件和开放标准。
对此,“微软开放技术公司”总裁吉恩·保利(Jean Paoli)声称,微软开放技术公司的目标是推进微软向开放领域的投资,包括互操作性、开放标准和开源软件。
而这个子公司的核心团队,据来自于一直与微软内部的许多业务部门在各种标准计划方面密切合作的互操作性战略团队。这个团队以前研究的问题包括万维网联盟(W3C)的HTML5、互联网工程任务组(IETF)的HTTP 2.0、分布式管理任务组(DMTF)和结构化信息标准促进组织(OASIS)的云标准。此外还研究许多开源软件环境,如Node.js、MongoDB 和Phonegap/Cordova。
对“微软开放技术公司”这一消息,红帽公司首先对微软成立开放技术全资子公司以推动开源互通性、开放标准以及开源社区的举动表示欢迎,但是,同时红帽也对微软提出开源公司发展历程的艰辛,做成一个引人瞩目并恪守承诺的开源和开源标准并不是一件容易的事情,这不是财团一两次宣布参加就能够成功,而真正开放的公司,开源也会成为公司文化的一部分,这是一个根本性的转变。另外,红帽也开放性地指出,微软能够加入开源大家庭,对于用户和开发者来说是最大的福音,让他们拥有更多的选择,这符合开源的精神。
此刻,我们说微软似乎在一时间领略到了开源的真谛,异构的混源环境已经成为当今企业客户面临的现实问题,而推进互操作性将有效地解决客户的需求、并成为推动企业业务成长的杠杆。
业界也有提出质疑:回顾过去微软与开源的对立,如今的微软积极地与Linux互操作,又将会给市场和用户及自己带来何种影响呢?Burton集团的分析师Chris Wolf当时就提出: “微软如此善意的奉献开源代码,但现在的问题是,到底有多大的善意?又会对Linux用户有何种影响呢?”
其实,微软早2006就已经成立开源技术中心(OSTC),带着其在Linux、UNIX和开源技术方面的经验和实力,与开源社区建立了良好的合作关系。同时,他们通过微软互操作战略,与很多的相关厂商合作,尤其是Linux厂商,建立广泛的合作关系,促进这些公司的获取收益。更重要的影响是,随着微软互操作战略的实施和不断深化,微软与开源已经从之前单纯的竞争日益变成竞合,来共同满足市场和用户的需求。
微软开源化的10大证据
谁说微软不爱开源?微软从十多年前,就开始投入对开源的工作。如果,再用传统思维来看待开源和微软,那就显得有些不够与时俱进了。一位曾经在微软工作了十年的业内人士总结了十大证据,证明微软已经在往开源的作为。
1.鼓励开源的生态系统
Windows和.NET开发者社区里面充满了开源的项目和提议,由Ninject,AutoFac,CastleWindsor和 StructureMap等IoC/DI框架,到nUnit等测试工具,由RavenDB等NOSQL文档数据库,到Orchard和Umbracon那种强大的文件管理系统,这些例子也只是.NET/Windows平台里众多开源项目的冰山一角而已。http://cio.zol.com.cn/296 /2966806.html
2.减少无谓的反复“创新”
微软一直坚持自己开发完成别人在开源世界已经存在的技术的微软版本,这点一直让众多开发者不爽。所以当ASP.NETMVC3.0发布的时候还是让开发者们很惊喜的,因为这个微软第一次发布一个包括开源代码的主要项目,而ASP.NET4.0也增加了 jQueryMobile&JSON.NET等更多的开源功能。
3.和NuGet数据包管理器合作
数据包管理器对于开源生态系统来说非常重要,有了它开发者们才能轻松共享自己的代码,而在2010年十月发布的NuGet能很好的弥补 Windows/.NET平台开源生态系统在这方面的不足,现在已经容纳了包括 jQuery,Modernizr,JSON.NET,ELMAH,log4net,Ninject等6000多个各大.NET开发者们需要数据包资料,虽然6000这个数字对比其他开源平台来说有点少,但是数据包的数量还在稳定增长中,现在有的包也都非常有用,相信以后一定会变得更好的。
4.把Windows系统优化成一个适合开源程序的平台
现在很多热门开源项目都是通过基于Linux的平台进行开发的,Windows想要运行这些项目就需要通过Windows的虚拟机才可以,失分不方便,而微软已经在这方面做出了努力,2011年11月,微软就宣布通过新版的LibUV可以在Windows系统上稳定的运行node,同时,微软发布了 IISNode,让开发者可以在IIS构建node。而在LibUV广受欢迎之后,其他开源项目现在都在都在做Windows系统的本地化。
5.让接口多元化、规范化
这也是微软的开源社区已经走向成熟的标志,以去年十一月Antirez宣布微软提供了Windows可以本地运行Redis的端口这事为例,Antirez并没有接受在Redis的核心代码中加入微软补丁的做法,而鼓励微软创建自己的Redis分支接口。而通过开源社区的努力,也成为了今年开源社区第一个正式完成发布的项目。
6.Windows支持Apache,PHP和Ruby
从2008年开始,微软已经开始了这方面的努力,而现在不但在Windows系统上可以构建Apache网络服务器,而且IIS也已经可以搭载Wordpress,Drupal,Joomla等给予PHP技术的网页和服务。
7.Azure支持众多开源平台
在Mix09上,微软已经正式宣布WindowsAzure会支持PHP,Java和Ruby这些开源平台。除了声明本身包含的内容,微软也在努力地提供各大开发环境的API,以求更多的开发者使用Azure服务。而在2011年11月微软宣布Windows支持Node之后,微软也接着宣布了 WindowsAzure与平台也完全支持Node。也预示着Azure会不断地向开源的方向前进。
8.支持Hadoop
去年,微软联合HortonWork宣布他们在努力地让Hadoop接入Windows,这是一个很重要的消息,因为这代表这微软宁愿放弃本身有的大数据管理项目而接受Hadoop,也代表着微软接受别人的产品的能力的提高,对所有人来说都是一个很好的消息。
9.微软成为了Linuxkernel排名前20的资助者
十年河东十年河西,十年前微软的CEO鲍尔默还把Linux称为毒瘤,去年微软就成为了Linux最大的20个资助方之一。微软的资助主要围绕着让微软的的操作系统虚拟技术Hyper-V能够搭建Linux系统这一个目标。
10.ASP.NETMVC4.0,WebAPI和Razor引擎的开源化
如果说到微软和开源有关最重要的新闻,以下的声明一定不能不提:
ASP.NETMVC4.0,WebAPI和Razor引擎会开源开发,ASP.NET开发小组会考虑开发者社区提交的修改建议,ASP.NET开发小组会公开地进行开发,将所有未来的更新代码更新到一个对外的服务器上。
微软开源背后的故事
对于开源,微软在内部也进行过一场激烈的辩论。这场辩论或许是改变微软面对开源未来很多年的策略。
经过几年的尝试和投入,此时微软有很多高层已经意识到,自由软件运动的力量不可阻挡,并开始探索向开发者数量日益增长的开源软件社区示好的方式。时任微软开源战略主管的萨姆·拉姆齐(Sam Ramji)每隔三个月都会与盖茨以及微软其他高管会面,展示由一组微软小型工程师团队收集的不同开源技术。
2008年,就在比尔·盖茨退休前的一周召开了一场会议,会议的主题是关于是否继续开源。这次会议与以往不同。在公司首席法律智囊史密斯和古铁雷兹的邀请下,拉姆齐和盖茨、微软首席软件架构师雷伊·奥兹(Ray Ozzie),以及其他一些高管坐在一起,讨论微软是否真的可以开始使用开源软件。拉姆齐和奥兹,站在他们支持微软应当拥抱开源技术的一边,而古铁雷兹也给出了能使这一提议成为现实的法律框架,但是,这些仍然没有得到微软一些高管的认同。
伟大的人物就是适当的适合做出最恰当的选择。比尔·盖茨此时站出来坚决力挺开源。他的理由是,微软必须对当前的情况做出改变。
拉姆齐表示,如今的开源已经变得非常重要,具有非常大的竞争优势,如果微软的竞争对手都开始使用开源技术了,而微软没有这么做,后果可想而知。盖茨实际已经领悟到了这一点。
而在微软内容,也有一批一直坚持开源策略的领导者在为微软走向开源做出自己的努力。萨姆·拉姆齐,以及微软开源技术先驱比尔·希尔夫(Bill Hilf),当然还有比尔·盖茨。
微软开源技术倡导者们都看到,在业界随着越来越多的应用从本地数据中心转移至云计算系统,而传统软件的经营模式也正在发生着巨大的转变。很多企业已经适应为自己需要的软件服务付费,而不是购买整个软件套件安装在自己的服务器上。即将发布的Windows 8应用商店也开始接受开源应用软件了。
同样,通过在Windows Azure之上提供开源软件,这是微软一条的确可以赚钱的方法。Windows Azure负责人希尔夫表示:“凭借Azure,微软可以通过提供计算能力、存储空间和网络带宽赚钱。我们希望我们将能够提供更多类型的应用程序和系统,所以 开源技术能够帮助(业务)迅速提升……我们在Azure上提供Node.js并非完全是利他的,这也是推动微软业务发展的一种方式。”