Python 是微软未来云计算的一个重要组成部分,是服务和团队需要支持的语言之一,也是微软公司内外快速增长的数据科学和分析领域最受欢迎的语言。但一直以来,Python 在微软似乎从来没有享有如此高的盛誉。
2010 年,我们的一些 Python 程序员非常低调,以防有人注意到他们,把他们拉入自己的项目。他们为数不多,是从之前的工作中留存下来的,但却一点一点地改变患上“非我原创(not invented here)”综合症的公司文化:Python 属于其他人,所以微软对它不感兴趣。
然而,过去八年却发生了戏剧性的变化。微软的很多产品现在都开始支持 Python,还有一些最新的产品只支持 Python。我们的一些关键工具是用 Python 开发的,而且我们也正在积极地在这门语言和社区上投入。
从 2011 年加入公司到现在,我有幸参与了一些重要的 Python 项目。现在,我在为 Python 在微软的发展壮大贡献着一己之力,并与社区合作,让每个人都能更好地使用 Python。
在加入微软之前,我还只是澳大利亚的一名研究生,不过我当时已经是 Visual Studio 的铁杆粉丝和 Python 开发者。微软在 2010 年第一次发布 Visual Studio(PTVS)Python 工具时,我感到无比兴奋。.NET 的 Python 版本 IronPython 已经交给了社区,Dino Viehland 和 Shahrokh Mortazavi 组成的一个小团队继续为微软产品提供 Python 支持。经过与法律团队数月的谈判,PTVS 基于 Apache 2.0 许可托管在 CodePlex(微软的前开源托管服务)上,并开始接受外部的贡献。
作为一名 Python 开发者,我很高兴能够使用最早的 PTVS 版本,并帮忙找到和解决了一些 bug。一个多月之后,PTVS 开发经理问我是否有兴趣作为暑期实习生加入微软。一年后,我顺利成为雷德蒙德办公室团队的一名全职员工。
由于我们的团队具备最丰富的 Python 知识,所以理所当然地成为为微软 Azure 提供 Python 支持的团队。最初版本的 Azure SDK for Python 是由我们的团队开发的,这个团队现在有五个人,随着 Python 重要性的提升,我们已经能够将这项工作交给专门的团队。后来,我们招来了 Laurent Mazuel,他是让 Azure Management SDK 取得成功的核心人物——能够协调 100 多个 Azure 服务并生成一个同一的库绝对是一个巨大的挑战!
在接下来的几年里,我们看到我们的项目在用户和实用性方面都经历了显著的增长。每次发布新版本都会在 Twitter、Reddit 和 Hacker News 引起人们的关注和讨论,很多人不相信微软正在做与 Python 有关的东西,包括我们自己的同事在内。我办公室旁边的一位开发同事直到半年后才知道到我们实际上是一个 Python 团队。
我们的工程团队每年都会参加各种 Python 大会,在大会上展示我们开发的工具。但我们在微软内部还不够强大,还无法获得营销团队的支持,所以我们让工程师负责规划、人员配备、装修和运营展位。有时候,我们会冲到当地的印刷店,以便在最后一刻打印出更好看的标志,或者跑到杂货店购买巧克力,因为我们真的没有什么可以拿出手的好东西。我们经常感觉自己是一家存活在大公司内的小型创业公司!
一直以来,公司内外的人都认为 PTVS 是一个社区项目,但却没有意识到我们其实也是属于微软的。不过也有一些迹象表明,这种情况有在改善。比如,我们找到负责 visualstudio.com 的市场人员,并让他在主页的语言列表中加入“Python”。不出所料,这引起了一些人的注意,我们开始看起来更“官方”了。
后来,我们开发的工具被添加到 Visual Studio 2015 安装程序中,这也是一个转折点。这个版本包含了一个改进过的“自定义”页面,其中简化了核心选项,并添加了很多“外部”组件。用户可以勾选 Python,而无需下载 Python 安装程序,这也是有史以来的第一次。
随着我们的用户数量的飙升,引起了越来越多人的关注。我们不再低调了!PTVS 迁移到了 GitHub 上,Python SDK for Azure 比预期的更受欢迎,而这一切开始真正引领微软的文化变革。
在 PyCon US 2015 大会上,我自愿为 Windows 提供 Python 支持,这个提议很快被接受,经过多次与法律团队的交涉后,我很快成为 CPython 的核心开发者。
对于 Python 3.5,我将 Python 使用的 Visual C++ 2010 编译器和运行时迁移到最新版本,其中包括专门针对 CPython 做出的变更。我还重写了安装程序,修复了安装方式,并将安装目录改到了更为安全的目录。最后,我开始负责开发 python.org 上列出的所有 Windows 版本的 Python。
现在,我们有五个 CPython 核心提交者,并且获得了时间上的授权,我们可以花时间在这个项目上。我们致力于改进兼容性、注册、花哨的新图标、JIT 钩子以及其他更多正在进行中的工作。受雇于大型公司并拥有自己的项目,这样有助于我们看到一些问题,而这些问题是纯粹的志愿者看不到的。我们付出的时间是有偿的,因此更加能够给 Python 社区带来令人满意的积极影响。
当有人走过来问你有关 Python 的事情而不是你主动去告诉他们时,你就知道,公司的文化正在发生变革。我们认为跨平台 Azure CLI 是我们的一个主要胜利。它最初用 Node.js 开发,后来,它的开发团队发现维护这么大的命令行工具越来越困难。在研究替代方案时,他们向我们寻求帮助。
讨论过程大致如下:
CLI 团队:“我们并不了解 Python,但对于可扩展的命令行工具来说,Python 似乎是一个不错的选择”。Python 团队:“是的,它会是一个不错的选择。”CLI 团队:“你们能否帮我们建立基本的结构?只需要几个命令,并告诉我们如何保留登录状态和配置文件?还有本地化?”Python 团队:“当然,我们很乐意”。CLI 团队:“你们需要几个礼拜时间?”Python 团队:“礼拜三之前就可以准备好了”。
CLI 团队感到很惊讶,或许还有几分怀疑。他们最终接受了我们的提议,我还为他们提供了一个示例:
https://github.com/Azure/azure-cli/tree/549f1be8ee881fb309caf3559d9232d3191af81d。
Azure CLI 团队采用了我们的东西,并将它们变成了世界上最大的 Python 命令行应用程序。
Knack(https://github.com/Microsoft/knack) 现在是专门用于构建高性能大规模命令行应用程序的 Python 框架,可以处理数千个命令和选项,同时支持参数完成、提示、可扩展性、配置文件,等等。
虽然我们自己知道 Python 在微软其实已经很受欢迎,但有一件事还是让我们感到很惊讶。2014 年末,我们组织了一个内部的“Python Day”,邀请了一些名人,预订了一个可以容纳 100 人的房间,并在办公室周围张贴海报。当这一天到来时,因为参与的人太多,我们不得不换到雷德蒙德区最大的房间之一,并为其他全球办事处开启了在线直播。有超过 1000 人参加或观看了此次活动——约占整个公司的 1%(包括所有工程人员、财务人员、人力资源和法律人员)。
Visual Studio 2017 安装程序,提供了 Python 工作负载
与此同时,Visual Studio 2017 换上了全新的安装程序。我们从一开始就被包含在内——不只是一个扩展链接,而是作为真正的内置功能。不过,我们仍然将我们的工作公开在 GitHub 上,我们的模型也被用在其他的 Visual Studio 组件中。PTVS 是最早的开源 Visual Studio 功能之一,现在有更多的开源功能,包括 Roslyn(C# 和 Visual Basic 编译器)、MSBuild 和 Visual F# 等。
我们还采用了由社区开发的 Visual Studio Code Python 扩展,并招来了它的开发者 Don Jayamanne,让他全职与其他开发者一起工作。因为它一开始是开源的,所以必须继续保持这种状态,我们的官方 GitHub 存储库清楚地表明我们是从原始分支 fork 出来的。
我们是 PyCon US 2019 的关键赞助商(这已经是第三次了),所以你们可以期待在那里见到我们。与五年前不同,我们将拥有一个更好的展台,并提供大量的演示。我们将介绍我们与 Python 的故事,比如我们如何依赖 Python,如何为 Python 贡献我们的力量,如何为使用 Python 的用户提供支持。
2011 年,Python 在微软非常低调。而到了 2018 年,我们为 Python 感到自豪。在我们的开发者工具(如 Visual Studio 和 Visual Studio Code)中都能看到 Python 的身影,我们在 Azure Notebook 中托管它,并使用它来构建 Azure CLI,等等。我们聘请了五位核心 CPython 开发者,还有很多其他贡献者,他们通过 NumFOCUS 和 PyData 积极支持开源数据科学。我们还定期赞助、主持和参加世界各地的 Python 活动。
虽然我不能代表我们在过去八年中所取得的所有进展,但我很荣幸能够为此而努力,并帮助微软成为更好的开源社区参与者。
英文原文:
https://medium.com/microsoft-open-source-stories/python-at-microsoft-flying-under-the-radar-eabbdebe4fb0