【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

不受微软待见的 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


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

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

关注

评论 1 条评论

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

DAPP智能合约双币质押挖矿项目系统开发

l8l259l3365

中国水泥行业数字化采购:驱动产业链供应链现代化的关键

用友BIP

数智采购

注释在编程中的重要性:理解程序员的两难选择

小魏写代码

千帆大模型平台引领Falcon-180B适配创新

百度开发者中心

人工智能 Prompt 千帆大模型平台

Illustrator 2023 for mac(ai2023矢量图编辑软件) v27.9密钥激活版

mac

苹果mac Windows软件 矢量图形编辑软件 ​illustrator 2023

区块链公链开发

西安链酷科技

区块链开发DAPP开发 区块链开发链游开发

《永劫无间》新版本上线,英特尔锐炫及XeSS即时支持,助力玩家丝滑畅游!

E科讯

2个数仓中不等值关联优化案例

华为云开发者联盟

数据库 后端 华为云 数仓 华为云开发者联盟

IDO官网预售 创建 ICO 解决方案:为您的代币发行奠定基础

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

什么是智慧光伏?智慧光伏电站运维平台

2D3D前端可视化开发

物联网 数字孪生 三维可视化 智慧光伏 智慧电站

将 Amazon EC2 到 Amazon S3 的数据传输推向100Gbps 线速

亚马逊云科技 (Amazon Web Services)

S3 Amazon EC2 亚马逊云科技

ABAQUS二次开发怎样接入Python代码?ABAQUS软件教程

思茂信息

abaqus abaqus软件 abaqus有限元仿真

Loopback for Mac(音频路由和虚拟音频设备软件) v2.3.2直装激活版

mac

苹果mac Windows软件 Loopback 虚拟音频软件

在Vue中使用Mock.js虚拟接口数据实例详解

树上有只程序猿

Vue Mock.js

Prompt模板助力应用升级

百度开发者中心

人工智能 大模型训练 Prompt

最新开源、更擅长推理的中文大模型

百度开发者中心

人工智能 大模型

大模型训练-实战的模型、算力与数据训练

百度开发者中心

人工智能 大模型训练

文末福利免费送 | KaiwuDB AI 时代数据库技术专题沙龙,名额仅剩 20 位,报名从速!

KaiwuDB

数据库 KaiwuDB

用大模型Prompt解决行业问题

百度开发者中心

大模型训练 Prompt

ZGC关键技术分析

得物技术

Java 高性能 GC算法

Java中的代码重构:技巧、优秀实践与方法

这我可不懂

Java 代码重构

公链项目宣传包装开发推广部署一条龙服务

西安链酷科技

DAPP智能合约交易系统开发 DAPP系统开发 公链开发

当AI遇上3D建模:一场创意与技术的完美碰撞!

Finovy Cloud

AI 3D

熟练使用 Redis 的五大数据结构:Java 实战教程

互联网工科生

Java redis

元宇宙项目开发 dapp智能合约模式开发

西安链酷科技

盲盒系统开发 盲盒APP系统开发 元宇宙开发 链游开发

社区团购,拯救消费降级的利器

用友BIP

社区团购

云图说|交换数据空间Exchange Data Space

华为云开发者联盟

数据交换 开发 华为云 华为云开发者联盟

NFTScan 正式上线 Scroll NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFTScan nft工具

QCN9024 Performance|WiFi6E TriBand Card DR9074 Achieving Blazing 1.3Gbps Speed in 5.28GHz 80MHz BW Throughput Test

wallyslilly

QCN9074 QCN9024

Python并发编程:多线程技术详解

高端章鱼哥

Python 并发编程

平台工程动态 Monthly News 2023-9

杨振涛

DevOps 云原生 开发者体验 内部开发者平台 平台工程,

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