微软彻底拥抱 Python!

2019-01-05 15:51

微软彻底拥抱 Python!



  一直以来,C# 可以说是微软在编程语言方面最为显著的一大标签,甚至于知乎上都有「微软的所有程序员都用 C# 吗?」的提问。但时至今日,微软正在逐步地拥抱 Java、JavaScript 以及 Python。在本文中,来自微软的 Python 工程师 Steve Dower 即分享了微软是如何一步一步拥抱 Python 的。以宇宙第一 IDE Visual Studio 为例,在数年之前,微软的 Python 开发者可谓少之又少,且非常没有话语权,但今天,微软正在积极拥抱 Python 语言及社区,目前已经有许多产品及关键工具实现了支持,而微软也有着直接的 Python 工程师团队及文化。

  Python 是微软未来云服务的重要组成部分,也是微软的服务和团队需要支持的基本语言之一,同时还是公司内外快速增长的数据科学和分析领域最受欢迎的选择。但是以前在微软 Python 并没有如此受欢迎的地位。

  2010 年,我们几个做 Python 的人一直很低调,以防有人注意到他们可以将一些开发人员重新分配给自己的项目。我们的团队很小,都是从以前的工作中留下来的人,但是正在遭受一种“并非起源于这里”综合症的公司文化:Python 是一种属于其他人的语言,所以微软并不感兴趣。

  在过去的八年中,这种情况发生了戏剧性的变化。现在许多微软的产品都开始包含 Python 支持,而有些最新的产品只支持 Python。我们的一些关键工具是用 Python 编写的,而且我们正在积极地投资语言和社区。

  本篇文章是我的亲身故事。从 2011 年加入微软以来到今天,我有幸参与了一些重要的与 Python 相关的项目,并与许多团队合作建立了其他项目。这些日子以来,我通过微软做出了贡献,建立了 Python 的主体,并与社区合作让每个人都能更好地使用 Python。

  在加入微软之前,我曾在澳大利亚的研究生院学习。当时我是 Visual Studio 爱好者,也是 Python 开发人员,2010 年,当看到最早发布的 Visual Studio 版的 Python 工具(简称 PVTS)时,我非常激动。在上运行的 Python 版本 IronPython 已经交给了社区,与 Dino Viehland 和 Shahrokh Mortazavi 合作的一个小团队被整合在一起,继续为微软产品构建 Python 支持。经过与法律团队数月的谈判,在 Apache 2.0 许可下在 CodePlex(微软以前的开源托管服务)上发布了 PTVS,并允许接受外部贡献。

  作为一名 Python 开发人员,我有幸使用了第一版的 PTVS,并报告了一些无法正常工作的问题,还修复了一些问题。在我做了一个月左右的贡献以后,他们团队的经理问我是否有兴趣作为暑期实习生来微软。一年后,我成为了微软位于 Redmond 的全职成员。

  由于我们的团队拥有最多的 Python 知识,因此我们自然成了在微软 Azure 上支持 Python 的大本营。最早面向 Python 的 Azure SDK 是在我们的团队中开发的,现在已经有五个人了,随着 Python 重要性的增加,我们将这项工作移交给了一个专门的团队。我们发现了 Laurent Mazuel 对该 SDK 的贡献,并很快招募了他,从那以后他一直是 Azure 管理 SDK 成功的核心人员——协调 100 多个 Azure 的服务生成一个连贯的库是一项很大的挑战!

  在接下来的几年里,我们看到我们的项目在用户和实用性方面都有所增长。每个版本的发行都会在 Twitter、Reddit 和 Hacker News(尽管我们很少在这些地方宣传自己的产品)上产生很大的反响,许多人不相信微软真的在从事与 Python 有关的项目,包括我们自己的同事。我与旁边的一位开发人员在办公室共事了半年多,他才相信我们真的有一个 Python 团队。

  每年我们的工程团队都会参加各种 Python 会议,展示与讨论我们的工具。然而在微软内部我们还不够大,无法获得营销团队的帮助,因此我们让工程师负责规划、人员配备、装修和运营展位。有时候我们会在活动期间冲到当地的印刷所,然后在最后一刻打印出更好的标志,或者到杂货店拿巧克力,因为我们没有任何真正的赠品。我们经常感觉自己是一家大公司内部的小型创业公司。

  长期以来,公司内外的人都认为 PTVS 是一个社区项目,没有意识到我们是真正的微软。但是也有一些进步的迹象。其中一个是,我们找到了负责网站的销售人员,让他在公司主页的语言列表中加入“Python”。不出所料,这引起了一些人的注意,而且是好的方面。我们看起来有点“官方”了。

  当我们被添加到 Visual Studio 2015 安装程序时,事情又出现了下一个转折点。这个版本包括一个经过改进的“自定义”页面,该页面简化了核心选项并添加了许多“外部”组件。这是第一次 用户可以获得 Python 支持,而无需下载其他安装程序。

  随着用户数量飙升,越来越多的人开始关注我们。我们不再低调行事了!PTVS 迁移到了 GitHub 上(),用于 Azure 的 Python SDK 比预期的更受欢迎,并且这些部分开始逐步落实,并开始了真正的文化变革。

  同时,在 2015 年美国的 Python 大会上,我自愿帮助支持 Windows 上的 Python,这项提议被很高兴地批准了,经过多次与法律团队的访谈后,我很快成为了微软支持的 CPython 核心开发人员。

  如今在微软,我们有五个核心 CPython 的提交者,我们所有人都有时间为该项目做出贡献。我们为兼容性、注册、花哨的新图标(example.png 等)、JIT 执行钩子以及更多正在进行的工作做出了贡献。受雇于大型公司并拥有自己的项目,可以帮助我们看到问题和情况,如果我们纯粹是志愿者,那么就不可能了。再加上领工资的开发时间,我们能够对 Python 社区产生令人满意的积极影响。

  当人们向你询问 Python 时,你就知道这家公司的文化开始发生变化了。我们认为,我们取得重大胜利的项目之一是跨平台的 Azure CLI。最初是用 Node.js 编写的,其背后的团队发现维护这么大的命令行工具越来越困难。在研究替代方法时,他们向我们询问了 Python 支持。

  CLI 团队:“我们并不真正了解 Python,但似乎 Python 对于可扩展的命令行工具来说是一个不错的选择。”

  CLI:“你们能否帮我们建立基本结构?只需几个命令,并告诉我们如何保留登录状态和配置文件?也许可以本地化?“

  CLI 感到十分惊讶,可能更多的是怀疑态度,但是他们接受了我们的提议,后来我做了一个样本。CLI 团队采用了我做的样本,并将其转变为世界上最大的 Python 命令行应用程序。现在 Knack 是高性能大规模命令行应用程序的 Python 框架,可以处理数千个命令和选项,同时支持参数补齐、提示、可扩展性、配置文件等。

  虽然我们知道 Python 在微软比想象中更受欢迎,但有一件事线 年末, 我们组织了一个内部的“Python 日”,邀请了一些名人,预定了 100 个人的房间,并在办公室周围张贴海报。结果反响简直太不可思议了!最后那天我们转移到了 Redmond 主园区最大的房间,并为我们其他全球办事处设立了直播。总共有 1 千多人参加或观看了这次活动——大约占整个公司的 1%(包括所有工程、财务、人力资源和法律等来自各个岗位的人员)。

  大约在同一时间,Visual Studio 2017 设计了一个全新的安装程序。 从过程的早期开始,Python 就被考虑在内——不仅仅是作为扩展的链接,而是作为真正的内置功能。但是我们仍然将我们的工作公开在 GitHub 上,并帮忙构建许多其他 Visual Studio 组件所使用的模型。PTVS 是最早的开源 Visual Studio 功能之一,但现在有很多,包括 Roslyn(C#和 Visual Basic 编译器)、MSBuild 和 Visual F#。

  我们还采用了社区构建的 Visual Studio Code 扩展,雇用了它的开发人员 Don Jayamanne,并让他全职与其他开发人员一起工作。由于它始于开源,所以必须保持这种状态,我们的官方 GitHub 代码库也清楚地展示了我们在原始的代码上建立了分支。

  在 2019 年美国 Python 大会上,我们将第三次作为主要赞助商出席大会。与五年前不同,我们将拥有一个设计好的展台和大量的演示,我们将讨论我们依赖 Python 的所有方式,为 Python 做出贡献,并致力于支持 Python 以及使用 Python 的每个人。

  虽然我不能说在过去八年(甚至更长时间!)中我们见证了很多进步,但是我很荣幸能够为此而努力,并帮助微软成为开源社区中更好的一员。