當前位置:係統粉 >   IT資訊 >   微軟資訊 >  微軟如何開始擁抱Python?

微軟如何開始擁抱Python?

時間:2018-12-24 來源:互聯網 瀏覽量:

在微軟內部,Python 從一個不受重視的語言變成了香餑餑。

最近,微軟 Python 開發者 Steve Dower 發布博文(如下文,下文中 Steve Dower 以“我”自稱),回憶了 Python 如何在公司內部流行起來的。Steve Dower 在學生時代參與了 Python Tools for Visual Studio (PTVS)這一微軟開源工具的開發,項目經理後來邀請他來公司當暑期實習生,一年之後成為微軟的全職開發者。到了 2018 年,開發工具 Visual Studio 和 Visual Studio Code 都支持 Python,他們還雇傭了五名 Python 語言的核心開發者,積極參與世界各地的 Python 活動,他們為 Python 感到驕傲。

Python,是微軟公司未來雲業務體係的重要組成部分,屬於服務與團隊支持工作中需要使用的基礎語言之一,同時更是公司快速增長的數據科學與分析領域內最受歡迎的語言選項。然而,Python早期在微軟公司顯然沒有獲得與其重要地位相符的盛名。

2010年,微軟內部開始有幾位Python支持者,但他們一直低調,以防有人注意到他們已經有權限為自己的項目分配開發人員。雖然這支隊伍還不大,也不新,主要來自以往的工作,但其仍受到微軟公司企業文化中“並非原創”問題的影響:Python是一種屬於他人的語言,因此微軟對其並不感興趣。

轉眼過去八年以來,情況出現了戲劇性的轉變。如今,微軟的眾多產品都開始支持 Python,一些最新產品甚至隻支持 Python,部分關鍵工具也是用 Python 編寫的,微軟正積極投資於 Python 語言及相關社區。

我從2011年開始在微軟公司工作,有幸參與了多個重要的Python項目,並與多支團隊合作其它項目。最近一段時間,我轉而為微軟公司貢獻力量,旨在幫助微軟建立自己的Python儲備,同時通過與技術社區合作,使每個人都能更好地使用Python語言。

Visual Studio中的Python

在正式加入微軟公司之前,我在澳大利亞讀研究生。當時我已經是個Visual Studio粉絲加 Python 開發者,我也很高興看到2010年發布的Python Tools for Visual Studio(簡稱PTVS)。當時,運行在.NET環境之上的 Python 版本 IronPython 已經被交付至社區,另有一支由 Dino Viehland 和 Shahrokh Mortazavi 帶隊的小組負責將Python支持引入微軟公司的各款產品當中。經常與法務團隊進行為期數個月的協商,PTVS最終發布在CodePlex(微軟的前開源托管服務)上,並開始接受外部貢獻。

作為一名 Python 開發人員,我很高興率先體驗了 PTVS 的初始版本,並上報了一些無法正常起效的內容,包括解決其中存在的部分問題。經過一個月左右的跟進,該團隊經理問我是否有興趣以暑期實習生的身份到微軟工作。一年之後,我正式成為微軟公司的全職員工。

由於我們的團隊擁有最為豐厚的 Python 知識儲備,因此我們自然成為了微軟 Azure 的Python支持主力。初始版本的 Azure SDK for Python 就是由我們這支隊伍開發完成,目前團隊已經有五名成員。隨著 Python 越來越重要,我們得以轉型為一支專門的 Python 負責團隊。通過對該 SDK 的持續貢獻,我們很快發現並吸納了 Laurent Mazuel 加入。這裏需要強調的是,這套 SDK 已經成為 Azure 管理 SDK 獲得成功的關鍵所在——其協調著100多項 Azure 服務,並克服了將其構建為整體連貫庫中出現的種種挑戰!

接下來的幾年裏,我們親眼見證自己的項目在用戶總量與實用性方麵不斷提升。每一次新版本的發布,都會引起人們在各類社交媒體平台(如Twitter、Reddit以及Hacker News等等)自發地熱烈討論,包括不少同事在內,很多人仍然不相信微軟公司實際上已經開始向Python張開懷抱。我在一位開發人員隔壁的辦公室工作了半年之後,這位開發人員才意識到,微軟居然擁有我們這樣一支 Python 專項團隊。

我們工程師團隊每年都會參加各種大大小小的Python會議,展示並討論我們的工具。我們在微軟內部還屬於那種“小不點”,因此得不到營銷團隊的協助——為了解決問題,一切規劃、人員配備、裝修乃至展位運營工作都得由工程師來完成。有時候,我們會為了一場活動到處奔波(例如在最後一分鍾,衝到打印店,快速打印出更好的標誌;或者在附近的雜貨店買巧克力,以作為活動伴手禮)。正是這樣的經曆,讓我們感到自己就像是大型企業內部的小小初創公司!

微軟如何開始擁抱Python?(1)

圖: PyCon 2014美國大會上的微軟展台

長久以來,微軟公司內外都認為 PTVS 隻是一個社區項目,而沒有意識到我們都是實實在在的微軟員工。但這種誤解慢慢開始發生轉變,特別是在我們找到負責 visualstudio.com 網站的營銷人員,要求其在主頁的語言清單中插入“Python”一項時。不出所料,這引起了不少人的關注,但同時也是最好的自我宣傳方式。從那時起,我們被越來越多地視為“官方”力量。

下一個轉折點出現在我們被添加至 Visual Studio 2015 安裝程序時。此版本包含一個經過改進的“自定義”頁麵,頁麵內簡化了核心選項並添加了眾多“外部”組件。就是在這裏,用戶第一次獲得了官方Python支持,而無需下載任何其它安裝程序。

微軟如何開始擁抱Python?(2)

圖:Visual Studio 2015的安裝程序當中,首次包含Python Tools forVisual Studio

隨著我們用戶數量的持續飆升,我們團隊也獲得越來越多的關注。我們作為微軟公司的 Python 力量,終於正式進入公眾視野!PTVS項目遷移到了目前的 GitHub 主頁上,Python SDK for Azure的受歡迎程度遠超預期,而已經落實的一切工作,不知不覺掀起了一輪真正的文化變革。

我的Python貢獻之旅

與此同時,在PyCon 2015美國大會上,我誌願參與到Python on Windows的支持工作中來——這個項目得到了大家的積極認可,而在與法務團隊進行了多次交流之後,我很快成為微軟支持下的CPython項目的核心成員。

在Python 3.5版本,我對Python進行了移植,從其使用微軟 Visual C++ 2010 編譯器與運行到更新至最新版本——其中包括對我們專門對 CPython 打造的 C Runtime 進行針對性調整(例如_set_thread_local_invalid_parameter_handler() 函數)。此外,我還重寫了安裝程序,修複了用戶安裝機製並將其變更為正確的安全安裝目錄。最後,我負責構建 python.org 網站上提供的所有 Windows 版本 Python。

微軟如何開始擁抱Python?(3)

圖:舊版本的Python安裝程序與Python 3.5版本安裝程序

時至今日,微軟公司已經擁有五名核心 CPython 提交者,而我們所有成員都有充裕的時間為該項目做貢獻。我們致力於改善項目的兼容性、注冊機製、設計漂亮的新圖標、JIT執行hook以及更多正在推進中的其它新成果。身為微軟公司的全職員工,我們能夠獲得遠超純粹誌願者的優勢——包括擁有自己的項目,同時更透徹地了解問題與場景,再加上擁有良好薪酬的開發投入,我們得以對Python社區投入熱情並產生積極影響。

關注文化層麵的轉變

當人們問起關於Python的發展進度時,我們能夠以公司的企業文化變革作為回應,而非直接做出幹癟乏味的描述。我們認為,這一重大勝利的裏程碑之一正是跨平台Azure CLI項目。該項目最初是使用Node.js編寫的,但其團隊隨後發現,要維護規模如此龐大的命令行工具正變得越來越困難。在研究替代性方案時,他們就Python支持一事向我們征求了意見。

整個對話過程大致如下:

CLI 團隊: “我們並不真正了解Python,但看起來Python對於可擴展命令行工具來說似乎是個不錯的選擇。”

Python團隊: “是啊,應該沒問題。”

CLI: “你們能不能幫我們建立起基礎結構?幾條命令就夠了,然後告訴我們該如何保留登錄狀態與配置文件?或者說怎樣實現本地化?”

Python: “當然,我們非常樂意。”

CLI: “那要構建起我們能夠試用的成果,大概需要幾周時間?”

Python: “放心,禮拜三就能準備好。”

雖然明顯帶有驚訝甚至是懷疑的情緒,但CLI團隊仍然接受了我們的提議,而我負責為他們整理出一套展示樣本。Azure CLI團隊決定采用這一方案,並將其轉變為世界上規模最大的Python命令行應用程序。如今,Knack已經成為適用於高性能大規模命令行應用程序的Python框架,能夠處理數千條命令與選項,同時亦可支持參數補全、提示、可擴展性以及配置文件等等。

微軟如何開始擁抱Python?(4)

圖:微軟公司海報上展示的 Python 日活動

雖然我們一直很清楚,Python在微軟公司內部的受歡迎程度遠超大家的想象,但後來發生的一件事還是徹底震撼到了我們。2014年年末,我們組織了一場公司內部的“Python日”活動,邀請了一些知名員工,預定了一個能夠容納100人的會議室,並在辦公室周圍張貼了海報。同事們的反響極為熱烈,這迫使我們不得不在活動當天將組織地點轉移到微軟主園區最大的會議廳內,甚至還麵向全球各地的其它辦事處進行現場直播!總而言之,超過1000人參加或觀看了此次活動,約占微軟公司總員工數量的1%(包括工程、財務、人力資源與法務人員——各個部門都有參與其中)。

微軟如何開始擁抱Python?(5)

圖:Visual Studio 2017安裝程序中提供的Python工作負載

大概在同一時間,Visual Studio 2017的安裝程序也在經曆全新設計升級。這項工作初期,我們這支小團隊就受邀加入其中——不僅負責擴展性工作,同時也參與了實實在在的內置功能創建。然而,我們仍然將自己的工作成果公布在 GitHub 之上,並幫助計算出多種其它 Visual Studio 組件需要的模型。PTVS是最早的開源 Visual Studio 功能之一,而如今其後繼者已經包含Roslyn(C#與Visual Basic編譯器)、MSBuild以及Visual F#等等。

微軟如何開始擁抱Python?(6)

我們還采用了由社區構建的 Visual Studio Code 擴展,雇用該擴展的開發者 Don Jayamanne,並邀請他以全職形式與其他開發人員共同工作。由於這個項目始於開源形式,因此其必須始終保持這種狀態,而我們的官方GitHub庫也明確顯示我們立足原始版本進行了分叉。

在PyCon 2019美國大會上,我們將第三次以核心讚助商的身份出席,與五年前不同的是,這一次我們將帶來設計合理的展台以及大量演示內容,我們將討論我們對Python的高度依賴、如何為Python做出貢獻,並將致力於支持每一位使用Python的用戶。

不再悄然推進

回顧2011年,彼時微軟的 Python 發展計劃確實隻能算是悄然推進。但在2018年,我們對 Python 成果感到無比自豪,我們在自己的開發者工具(例如Visual Studio與Visual Studio Code)當中提供支持,在 Azure Notebooks 中進行托管,並利用 Python 構建起 Azure CLI 等最終用戶體驗。我們聘請了五位核心CPython開發者以及眾多其他貢獻者,通過 NumFOCUS 以及 PyData 等項目積極支持數據科學的開源導向,亦在定期讚助、主辦並參與世界各地召開的 Python 活動。

雖然我不敢說自己親曆了過去八年內微軟公司在Python領域的一切進展,但可以肯定的是,我很榮幸能夠成為這波曆史潮流的參與者,並努力幫助微軟在開源社區當中成為一名不斷進步的好成員。

我要分享:

最新熱門遊戲

版權信息

Copyright @ 2011 係統粉 版權聲明 最新發布內容 網站導航