写点什么

不受微软待见的 Python,如何在八年内逆袭成功?

  • 2018-12-22
  • 本文字数:3528 字

    阅读完需:约 12 分钟

不受微软待见的Python,如何在八年内逆袭成功?

Python 是微软未来云计算的一个重要组成部分,是服务和团队需要支持的语言之一,也是微软公司内外快速增长的数据科学和分析领域最受欢迎的语言。但一直以来,Python 在微软似乎从来没有享有如此高的盛誉。


2010 年,我们的一些 Python 程序员非常低调,以防有人注意到他们,把他们拉入自己的项目。他们为数不多,是从之前的工作中留存下来的,但却一点一点地改变患上“非我原创(not invented here)”综合症的公司文化:Python 属于其他人,所以微软对它不感兴趣。


然而,过去八年却发生了戏剧性的变化。微软的很多产品现在都开始支持 Python,还有一些最新的产品只支持 Python。我们的一些关键工具是用 Python 开发的,而且我们也正在积极地在这门语言和社区上投入。


从 2011 年加入公司到现在,我有幸参与了一些重要的 Python 项目。现在,我在为 Python 在微软的发展壮大贡献着一己之力,并与社区合作,让每个人都能更好地使用 Python。

Visual Studio 中的 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 大会,在大会上展示我们开发的工具。但我们在微软内部还不够强大,还无法获得营销团队的支持,所以我们让工程师负责规划、人员配备、装修和运营展位。有时候,我们会冲到当地的印刷店,以便在最后一刻打印出更好看的标志,或者跑到杂货店购买巧克力,因为我们真的没有什么可以拿出手的好东西。我们经常感觉自己是一家存活在大公司内的小型创业公司!


PyCon US 2014微软展台


PyCon US 2014 微软展台


一直以来,公司内外的人都认为 PTVS 是一个社区项目,但却没有意识到我们其实也是属于微软的。不过也有一些迹象表明,这种情况有在改善。比如,我们找到负责 visualstudio.com 的市场人员,并让他在主页的语言列表中加入“Python”。不出所料,这引起了一些人的注意,我们开始看起来更“官方”了。


后来,我们开发的工具被添加到 Visual Studio 2015 安装程序中,这也是一个转折点。这个版本包含了一个改进过的“自定义”页面,其中简化了核心选项,并添加了很多“外部”组件。用户可以勾选 Python,而无需下载 Python 安装程序,这也是有史以来的第一次。


Visual Studio 2015安装程序,包含了Python工具


Visual Studio 2015 安装程序,包含了 Python 工具


随着我们的用户数量的飙升,引起了越来越多人的关注。我们不再低调了!PTVS 迁移到了 GitHub 上,Python SDK for Azure 比预期的更受欢迎,而这一切开始真正引领微软的文化变革。

成为 Python 贡献者

在 PyCon US 2015 大会上,我自愿为 Windows 提供 Python 支持,这个提议很快被接受,经过多次与法律团队的交涉后,我很快成为 CPython 的核心开发者。


对于 Python 3.5,我将 Python 使用的 Visual C++ 2010 编译器和运行时迁移到最新版本,其中包括专门针对 CPython 做出的变更。我还重写了安装程序,修复了安装方式,并将安装目录改到了更为安全的目录。最后,我开始负责开发 python.org 上列出的所有 Windows 版本的 Python。


旧的Python安装程序以及Python 3.5的新安装程序


旧的 Python 安装程序以及 Python 3.5 的新安装程序


现在,我们有五个 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 Day海报


微软的 Python Day 海报


虽然我们自己知道 Python 在微软其实已经很受欢迎,但有一件事还是让我们感到很惊讶。2014 年末,我们组织了一个内部的“Python Day”,邀请了一些名人,预订了一个可以容纳 100 人的房间,并在办公室周围张贴海报。当这一天到来时,因为参与的人太多,我们不得不换到雷德蒙德区最大的房间之一,并为其他全球办事处开启了在线直播。有超过 1000 人参加或观看了此次活动——约占整个公司的 1%(包括所有工程人员、财务人员、人力资源和法律人员)。


Visual Studio 2017安装程序,提供了Python工作负载


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


2018-12-22 13:402824
用户头像

发布了 731 篇内容, 共 451.8 次阅读, 收获喜欢 2002 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

滑动窗口

工程师日月

算法 5月月更

程序员如何保证自己开发的正确性——测试开发有感

Bruce Talk

技术 敏捷 TDD Agile

【中国信通院 x ShardingSphere 金融用户社区】成立,多家知名金融机构正式入驻

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

【Meetup 预告】OpenMLDB x DolphinScheduler 链接特征工程与调度环节,打造端到端 MLOps 工作流

第四范式开发者社区

人工智能 机器学习 数据库 调度 特征工程

深入剖析 | snowflake算法

九叔(高翔龙)

算法 雪花算法 uuid 全局唯一ID snowflake

设计者模式之装饰者模式

乌龟哥哥

5月月更

Kubectl-ice 插件展示集群容器配置信息更强大、更便捷

Marionxue

kubectl插件 kubectl-ice 容器配置

SAP UI5 OData V4 模型的构造方式

汪子熙

JavaScript 前端 SAP ui5 5月月更

后端开发【一大波干货知识】Redis中的IO多线程(线程池)

C++后台开发

redis 多线程 线程池 后端开发 C++后台开发

druid 源码阅读 10—— 过一下流程图中的getConnectionDirect

张大彪

如何在你的 wordpress 网站中添加搜索框?

海拥(haiyong.site)

WordPress 5月月更

大模型走向产业的一小步,AI走向普惠的一大步

脑极体

Druid 连接池源码阅读 10

石小天

Docker下Java文件上传服务三部曲之三

程序员欣宸

Java Docker 5月月更

Amazon MSK Serverless 现已正式推出,无需再为托管式 Kafka 集群进行容量规划

亚马逊云科技 (Amazon Web Services)

kafka Serverless

druid源码学习十

Nick

Apache Druid

百尺竿头更进一步丨拓展 Amazon Aurora 的读写能力之 Gaea 篇

亚马逊云科技 (Amazon Web Services)

Amazon 环境搭建

单片机上常用-GB2312、GBK汉字取模与字库偏移地址的计算与汉字描点

DS小龙哥

5月月更

跨平台应用开发进阶(九) :uni-app 实现Android原生APP-本地打包集成极光推送(JG-JPUSH)详细教程

No Silver Bullet

uni-app Andriod 极光推送 5月月更 本地打包

跨平台应用开发进阶(十) :uni-app 实现数据存储、获取和删除

No Silver Bullet

uni-app 数据存储 5月月更 全局

druid 源码阅读(十一)maxWait 参数

爱晒太阳的大白

5月月更

Kitex 源码解析活动发布!

baiyutang

Go 字节跳动 微服务 5月月更

Tech Talk 活动回顾|化“被动”为“主动”,如何构建安全合规的智能产品

亚马逊云科技 (Amazon Web Services)

产品 安全 解决方案

Amazon Personalize 个性化效果评估,从准确性到多样性、新颖性和偶然性

亚马逊云科技 (Amazon Web Services)

Amazon 模型

【LeetCode】在长度 2N 的数组中找出重复 N 次的元素Java题解

Albert

LeetCode 5月月更

Linux环境编译多个C程序文件

Loken

音视频 5月月更

零基础学Java第四节(字符串相关类)

编程攻略

java编程

实现compact table command

Asha

区块链技术已站上真正意义的风口,如何把握?

CECBC

模块六:作业

本人法海

「架构实战营」

【刷题第15天】剑指 Offer 09. 用两个栈实现队列

白日梦

5月月更

不受微软待见的Python,如何在八年内逆袭成功?_AI&大模型_Steve Dower_InfoQ精选文章