最近,微软在开源方面的动作频频引人注目,但是也许你并不知道微软从2004年就开始参与开源了,而就在那一年,Facebook 和 Ubuntu 才刚刚成立。
为此我做了一点研究,向大家揭示从2004年以来微软在开源方面的重大事件。
WiX 工具集是微软的第一个开源项目,它发布于2004年4月。该工具集包括编译器、链接器、库工具和反编译器。WiX 的原作者 Rob Mensching 在一篇文章中写道,“WiX 成为微软以 OSS 认证的许可证发布的第一个项目,采用的许可证是 Common Public License。”
F# 是一个微软开发的跨平台、面向对象的编程语言。它在 Apache 2.0 许可证下发布的开源项目。可以运行在 Linux、 Mac OS X、Android、 iOS 和 Windows 下。该项目现在由 F Sharp 软件基金会开发运作。
CodePlex 是微软的自由开源项目的托管网站,这应该是微软首次重要的开源社区尝试。在该公司发布 CodePlex 的 beta 版时,上面已经有了12个项目。现在该网站上已经托管了几百个项目,也支持 Git 版本控制软件。
2003 年,微软和 Zend 公司宣布合作以提升 PHP 在 Windows 服务器上的表现。在公告中,微软说该公司为 PHP 在 Windows 服务器平台部署所开发的各种技术改进都会按照 PHP 许可证提交到 PHP 社区,以寻求社区反馈和贡献。
这是一份震动 Linux 世界的公告。微软和 Novell(SUSE 的拥有者)宣布合作了!虽然这两家公司主要关注在微软和 Novell 之间的互操作性的解决方案上,但是其中的专利条款却像捅了蚂蜂窝一样。
开源推进联盟 ( Open Source Initiative ) (OSI) 对微软的开源许可证 Microsoft Public License (Ms-PL) 和 Microsoft Reciprocal License (Ms-RL) 进行了认证。在一篇文章中, OSI 写道,“这个决定的通过获得了开源社区大多数人的认可(虽然还有不同意见),这些许可证符合开源定义的10项准则,所以应该通过。”
在欧洲法庭上败诉之后,微软与 Samba 项目之间的长期战争终于结束了。微软和由 软件自由法律中心 ( Software Freedom Law Center ) 所创建的非盈利机构 协议自由信息基金会 ( Protocol Freedom Information Foundation ) (PFIF)达成了合作,微软移交该协议的文档,以便 Samba 项目可以无缝的与 Windows 配合。
2008年,微软在其业务和与开源公司的合作方式方面做了一些重大举措。在一篇文章中,该公司说道,“微软确立了四个互操作性准则,并将它们应用到主要的商业产品上:1、确保开放连接;2、促进数据的可移植性;3、加强对行业标准的支持;4、在客户和行业的开放合作方面投入更多,包括开源组织。”
微软向 PHP 社区做的第一次贡献是为 ADOdb 提交补丁,这是 PHP 上的一个流行的数据库抽象层。时任微软平台战略资深总监的 Sam Ramji (现在是 Cloud Foundry 的 CEO)在一篇文章中写道,“该补丁通过 SQL Server 团队开发的原生驱动为 SQL Server 提供了支持。ADOdb 以 LGPL 和 BSD 许可证授权。这是我们第一次贡献到 PHP 社区项目中,但是绝不会是最后一次。”
微软收购了一家旧金山的初创公司 Powerset,他们重度依赖于 Apache Hadoop 的 HBase 项目。 HBase 是一个以 Java 写的开源的、分布式的列数据库。Powerset 赞助了两名 HBase 开发者,而在微软收购之后依旧保持了赞助,并在一篇文章中写道,“微软参与并对开源社区做出贡献,这有益于客户、有益于社区,也有益于业务。”
微软通过成为 Apache 软件基金会 ( Apache Software Foundation ) 的白金赞助商而逐渐向开源 Web 服务器 Apache 项目靠拢。同年,微软与 Sourcesense 达成了合作关系,目标之一是为 Apache 软件基金会的顶级项目 Apache POI 的新版本开发贡献力量。
2009年,微软向 Linux 内核贡献了超过两万行的代码。这些代码大大增强了在 Windows Server 2008 Hyper-V 或 Windows Server 2008 R2 Hyper-V 上运行的 Linux 操作系统虚拟机的性能。这些贡献让微软在一段较短的时间内成为了 Linux 内核排名第一的贡献者。
微软与 Joyent 公司和 Node.js 的作者 Ryan Dahl 一起将 Node.js 移植到了 Windows。在一篇 2011 年的文章上,微软的 Claudio Caldato 写道,“我们的首要目标是给 Node 增加一个高性能的 IOCP API,让开发者可以在 Windows 上也获得 同 Node 在其它平台上一样的高性能和可伸缩性,IOCP API 可以让你执行多个并发的异步输入/输出操作。”微软的 Azure 团队也在开发 iisnode ,以便可以在微软的 IIS 服务器上运行 Node.js。
2012年,该公司在 Apache 2.0 许可证下开源了它的部分 Web 产品体系,包括 ASP.NET MVC、Razor 和 Web API。在一篇文章中,微软的 Scott Guthrie 说道,“这样做可以带来更开放的开发模式,社区中的每个人都可以参与,并通过提交代码、修正错误、开发新功能等方式来提交反馈,也可以使用它的最新源代码和测试用例随时构建和测试产品。”如 Scott 所说,这也是第一次微软外部的开发者可以给他们提交补丁和贡献代码,微软的开发团队会审核这些代码,并有可能合并到产品中。
(LCTT 译注:原文称作“ASP.NET MCV”,但是微软原文称为“MVC”,不知本文原文何故,译文径改之。)
2012年,微软宣布成立一个全资子公司, 微软开放技术公司 ( Microsoft Open Technologies, Inc. ) ,其主要目标是“推动公司在开放性方面的投入,包括互操作性、开放标准和开源”,微软的 Jean Paoli 写道。
TypeScript 是一个自由开源的编程语言,微软讲该开源项目以 Apache 2.0 许可证下发布。在一篇宣布这个消息的文章中,微软的 S.Somasegar 解释道,它是“一个 JavaScript 的超集,将类型检查、静态分析、明确接口,以及最佳的体验共同组成了一门语言及编译器。”
2013年,上面提到的微软开放技术公司宣布了一个 VM Depot 项目,这是一个由社区驱动的 Linux 和 FreeBSD 虚拟机镜像库,用于微软 Azure。在该项目的公告中, Gianugo Rabellino 写道,“在 VM Depot 中,社区可以构建、部署和分享他们的 Linux 配置、创建定制的开源软件组合、与他人协作、在云上创建新的架构,以充分利用 Windows Azure 平台的开放性和灵活性。”
2014年,微软宣布它将开源 .NET 的整个服务器端体系。在发布公告中,微软写道,它将“以开源的方式提供完整的 .NET 服务器端体系,包括 ASP.NET、.NET 编译器、.NET 核心库、框架和库,可以让开发者能够横跨 Windows、Mac 和 Linux 开发 .NET 程序。” .NET 的发展推动由 .NET 基金会进行。
2014年,微软开放技术公司向 OpenJDK 的 JDK9 开放团队提交了第一个补丁。Martin Sawicki 在一篇宣布这次贡献的文章中写道,“这些代码的开发是应我们的合作伙伴之请,它可以让 Java 的套接字能够利用 Windows 的 TCP 回环快速路径 ( TCP Loopback Fast Path ) 能力,以提升在同一台机器上的套接字之间的通讯速度。”
2014年,微软的新 CEO 萨提亚.纳德拉 ( Satya Nadella ) 宣称“微软爱 Linux”。从勉强同意到技术上认同,这为微软带来了巨大的关注,但是在业界还有不少疑虑。
微软通过与 credativ 合作,将最流行的 Linux 发行版之一的 Debian 带到了它的 Azure 上。在一篇宣布此消息的文章中,Azure 的高级程序经理 Stephen Zarkos 写道,“通过此次发布,客户现在可以选择由 credativ 构建的最新的 Debian 7 和 Debian 8 在微软 Azure 中创建基于 Debian 的虚拟机。”
2015年末,微软与 Red Hat 达成合作,将 Red Hat 企业版 Linux(RHEL)带到了它的 Azure 云。这两家公司决定协同工作来“解决企业、ISV 和开发者在跨私有云和公有云的 Red Hat 软件上构建、分发和管理应用的常见需求。”
超过1/4的 Azure 云服务器运行着 Linux,这些用户需要能够安全地登录进机器来管理它们。微软计划通过 PowerShell 将开源项目 SSH 带到 Windows 上。该公司说,他们不仅会将 SSH 支持带到 PowerShell 中,他们也会给 OpenSSH 社区贡献代码。
2016年1月,微软和 Canonical 展示了在 Azure 上运行 Ubuntu Linux 的第一个技术预览版。John Zannos 在 Ubuntu 博客上写道,他们贡献了可验证的 Ubuntu 镜像,让开源应用可以很好地运行在 Azure 环境中。在此宣告后,微软现在已经将所有的领先的 Linux 发行版带到了 Azure 云上。
通过这一计划,微软将可以让客户跨 Windows 服务器和 Linux 运行 SQL Server ,带来持续一致的数据平台。微软的 Scott Guthrie在一篇文章中说,“我们会将核心数据库能力拿出来,预计时间是2017年中。”
微软与 Canonical 紧密合作,将最流行的 Linux 命令行工具带到了 Windows 10 上面。微软创建了一个名为 Windows Subsystem for Linux 的技术,可以让 Ubuntu 运行在 Windows 内核上。Mike Harsh 在一篇文章中写道,“你现在可以运行 Bash 脚本、类似 sed、awk、grep 的 Linux 命令行工具,甚至你可以直接在 Windows 上试试那些主要用在 Linux 上工具,如 Ruby、Git、Python 等等。”