请选择语言

“大玩家” 微软的开源之路 | 世界顶级企业开源故事系列之一

正文大纲
  1. 1. 开源在微软
  2. 2. 认真地开源
  3. 3. 业务和计划目标
  4. 4. 管理的工具
  5. 5. 简化开源使用
  6. 致谢
  7. 关于受访者

1. 开源在微软

微软现在是开源领域公认的大玩家,但就在几年前,这样的角色对这个软件巨头似乎是不可想象的。微软从一个占有市场领先地位的专有软件制造商,以超乎想象的大动作实现开源,令许多人感到惊讶。虽然该公司的故事是引人注目的,它的开源旅程不是像表面看起来那样地突然或意想不到。

尽管坊间有各种看法,微软其实已经做了相当一段时间的开源。起初,这些实验性的片断散布各处,但大约六年前,在 2011 年,我们聚焦成立了 微软开放技术 (MS Open Technologies) 子公司 “

—— Jeff McAffer,微软开源计划办公室主任

2. 认真地开源

McAffer 说:“就是从这时候起,微软开始认真地探索如何运用开源软件。在早期,如果公司中的任何人都对开源感兴趣,他们就会来到这个集中的小组,寻求来自开源开发者、贡献者和维护者的帮助。”

大约三年前,事情开始发生变化。微软决定让开源在整个公司中普及,并将开源融入主要的工程团队。

“假如我们只做了这些事,那么我们在开源的作为上将只会留下一个站不住脚的空白,”McAffer 说,“有人必须考虑政策,协调所有的开源努力,将使用的流程和工具,如何跟踪项目,等等。因此,我们创建了现在的开源计划办公室来处理所有这些问题。”

来自早期开源小组的一些技术人员搬到了新成立的开源计划办公室,而其他人则加入了与他们的工作相关的工程小组。事实证明,微软需要额外的人才,以确保所有项目和流程都有足够的人才来驾驭,因此,内部和外部的招聘工作很快就开展起来了。今天,开源是微软全球工作的一个蓬勃发展的部分。

3. 业务和计划目标

微软并没有一个中央开源战略或一个中央审批机构。取而代之的是,开源计划办公室促进了整个公司的讨论和决策。各个团队仍需要对其开源参与进行审查,但大多数是在该团队里进行。

“每个团队知道他们自己的业务,理解自己希望技术互动如何运作,在生态系统方面向什么方向驱动,以及所有需要发生的细微差别。”McAffer 说。

“我们把大部分的决定和方向都交给当地的管理部门决定,但是我们给他们一个架构来考虑这些决定和方向。我们的确有关于如何管理 IP(知识产权)的中央政策,以及我们如何处理安全问题。我们提供工具和流程,体现了这些政策,使其超级简便,让他们能以连贯而具体的方式执行。”

4. 管理的工具

Microsoft 的政策归结为处理工作负载的流程,然后相应地进行调整。一个例子是开源版本发布。根据我们的政策,版本发布是在 GitHub 上进行的。

“我们在 GitHub 上有一堆工具,在那里我们管理大约 100 个组织的 1 万多代码仓库,大约 1.2 万微软人在这个空间里互动。”McAffer 说。

“达到了这样的规模,你真的需要一个系统来管理许多方面。”例如,当人们想为正在运行的某个项目做出贡献时,我们需要工具来帮助管理贡献者许可协议 (Contributor License Agreement-CLA)。对于所有这些事情,我们要么自己建立了解决方案,要么转而寻求开源解决方案。例如,对于贡献者许可协议管理,Microsoft 使用了“CLA 助手”,一个源于 SAP 开发的开源程序。

“在 GitHub 管理方面,我们走了另一个方向,因为目前还没有一套工具来帮助管理 GitHub 上的企业的活动,”McAffer 说,“因此,我们最终在 GitHub 创建了一个开源门户网站,而我们也将这个门户网站开源了。”

类似 GitHub 上的这些元素很容易在微软自己的开源门户网站 https://opensource.microsoft.com 上看到,而微软员工在内部也用同样的方式来管理代码仓库和团队。

McAffer 解释说:“我们也将其开源,其他公司学会了以后,开始在内部使用,因此,这是一个双向的互动。”

GitHub 是一个非常丰富的环境,在那里有很多的互动是可能的。与许多公司一样,微软发现很难跟踪所有正在进行的事情,并了解自己所有代码仓库的情况。

“我们最终参与了 GHTorrent 项目。我们与他们携手做了相当多的工作,而现在正实际上赞助 GHTorrent 项目,例如支付所有的 Azure 云计算资源费用。”

GHTorrent 不但帮助微软了解其在 GitHub 发生的事,同时也帮助了它自己了解内部的项目。即便如此,也有一些 GHTorrent 尚未做到的事情,例如与拥有私有代码库以及关切细致数据管理权限的团队的协同工作。

微软最终创建了另一个名为 GHCrawler 的开源系统。此工具将 GitHub 中的所有内容跟踪到提交的层级、团队和权限更改。然后,数据将用于度量和跟踪分析,以发现一些洞察力,例如,拉请求 (pull requests) 的数量有多少,回应速度有多快,需要多久才能结案或合并。“这给了我们一个追踪我们的表现的方法”,McAffer 说。

5. 简化开源使用

在微软,开源的消费是一个完全不同的问题,也是一个不同的流程。微软公司以多种方式使用开源,对其进行全面跟踪和管理法律与安全等方方面面的需求是巨大的。

“我们做了大量的工作来简化开源的使用流程和政策,真正了解微软作为负责任的开源消费者的重要品质,如何做对的事,并确保我们遵守许可证。”McAffer 说。

McAffer 继续说“为此,我们在内部编写了大量的工具来发掘、跟踪和监视发生的事情,并报告开源的使用情况。”这些工具也往往具有一定的专有性质,因为它们与 Microsoft 的工程系统紧密集成在一起。

“我们一直在试图梳理我们自己使用的工具,寻求让更多的开源社区可以更广泛地受益的方法,但有点困难的是,这些工具在许多方面和我们的业务政策或我们的工程系统是非常具体联结的,并不适用与所有人。”McAffer 说。

多年来,Microsoft 开源的旅程一直是一个真正植基于开源精神且有趣的过程,在这一进程中,我们将持续地分享我们从工具到代码里所学到的东西给所有人。

致谢

我们要感谢来自微软的高级开源项目经理 Carol Smith 和微软开源计划办公室主任 Jeff McAffer 接受采访。

我们还要感谢 Pam Baker 的采访。

关于受访者

Jeff McAffer

Jeff McAffer 有超过 25 年的经验,领导诸多有影响力、以高性能指标来管理的软件开发团队。他的主要兴趣在于“平台”,使人们能够创建和部署可扩展的系统。特别是,作为微软开源计划办公室的主任,杰夫正在推动微软的工程实践和与开源社区的接触。

他是开源版 Eclipse 的工具和运行时成就的创始人和架构师之一,是 Eclipse 创始的社区和生态系统建设的关键人物,同时还写了几本书,他还是 Eclipse 和 OSGi 社区的著名演讲者。

在他的职业生涯中,他曾在包括模块化的运行时、集成式开发环境、语言设计、分布式和大规模并行系统、仿真、专家系统和虚拟机设计等领域工作。

在大型企业和小型创业公司工作时,他担任过首席研究官、创始人/创业家、董事和经理,以及远见家、建筑师、项目/团队领导、设计师和实施者的角色。

他在开源项目 (Eclipse) 开放规范 (OSGi、JCP、IETF、ANSI)、工业级产品以及纯理论研究项目方面有着深厚的经验。

Jeff 的专长:开源、组件设计、部署、资源调配、Eclipse、Equinox、RCP、OSGi、Node、Java 和 Smalltalk。