【程序人生 編者按】微軟在開源道路上不斷前進,甚至在Windows10中開放名為 WSL 的 Linux 子係統,讓開發者可以直觀操作 Linux。本文作者作為 WSL團隊的一員,將詳細給我們講述開發 Windows 的 Linux子係統的那些事兒。

作者 | Tara Raj
譯者 | 風車雲馬,責編 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
以下為譯文:
2016年8月,我從弗吉尼亞大學計算機科學與技術專業畢業後加入微軟,在微軟的整個職業生涯都在為Linux開發工具。其實我上大學時幾乎隻使用Linux操作係統,大部分編程都是用C++編寫的。
當時我的學習經曆似乎不太適合微軟,但趕上微軟正在做企業改革,所有操作係統都很重要,包括Linux。
到微軟的第一份工作是加入Linux的SQL數據庫開發團隊,該團隊特別邀請我把以往的Linux經驗發揮出來。我剛剛畢業,一聽到自己的開發經驗能為團隊帶來價值時,我真感到受寵若驚。
幾年前,微軟想在Linux上開發SQL Server隻是一個玩笑,然而到2016年,這個想法卻變成了現實。在他們發布第一個版本後不久,我就加入了這個團隊,並致力於改進用於SQL Server的管理工具——特別是管理Linux服務器和應用程序。要在Linux上正常運行SQL Server,需要以Linux操作係統的工作方式來設計命令行工具。
我有幸為Linux的SQL Server設計第一個版本的GUI工具,剛開始采用了Visual Studio代碼(現在叫Azure Data Studio代碼),它不受操作係統的限製,可用於所有類型的SQL Server開發。
在微軟的第一年我學到了很多,包括項目管理的流程和方法,如何將技術實踐和商業思維結合起來。

2017年8月,我加入了Windows 的Linux子係統(Windows Subsystem for Linux,簡稱WSL)研發團隊,並擔任項目經理。我第一次聽說WSL是在2016年的微軟Build大會上,當時它被宣布為“Bash on Ubuntu on Windows”。
當時Channel9一經發布就迅速走紅,淹沒了Build網站上的其他許多報道。《華爾街日報》記者凱文·加洛(Kevin Gallo)對Build大會做了一個簡短的視頻介紹,雖然隻占用了整個主題演講的兩分鍾,但觀眾和媒體都非常激動。Channel9團隊曾一度擔心WSL視頻的巨大點擊量是不是DDoS攻擊。微軟在Windows係統內運行Ubuntu引起了巨大的轟動。
Windows Console團隊是第一個確定客戶對WSL有需求的團隊。當他們深入客戶調研時,一次又一次地聽到人們希望在Windows上有類似Bash的東西。最終團隊意識到:既然可以讓Bash本身在Windows上運行,為什麼還要開發類似Bash的東西呢?
其實為Linux創建Windows子係統並不容易做到。團隊需要對Windows內核有深入的了解,還要研究一項微軟名為Pico process的技術。恰好有趣的是,Pico process也是在Linux上實現SQL Server的技術。簡單的說,WSL使Linux編譯的二進製文件在Windows NT內核上運行成為可能,而無需重新編譯應用程序或使用虛擬機。
Ubuntu是WSL中第一個可用的Linux版本。開始我們聯係了Canonical公司的開發人員,看看他們是否願意提供幫助。他們對這個WSL想法很有熱情,後來Ubuntu可以在Windows商店(Windows Store)中使用。在Windows商店中存在多種Linux版本的應用(至少有六種),是不是覺得很有趣,你見過多少自家的應用商店有其他操作係統?

我們編寫的代碼是兼容Linux的內核係統調用(syscall),將Linux進程與底層Windows內核連接起來。Linux中大約有340個係統調用,問題是先實現哪個係統調用?與所有操作係統版本一樣,新的係統調用會與新的操作係統版本一起添加,但是為了保持向後兼容性,不會刪除舊的調用。當初湧現了一波syscall浪潮,WSL團隊也開始深入理解syscall用戶需要什麼。
要實現什麼樣的syscalls,首先要了解哪些人會使用它。Build公告的主要目的是希望人們使用WSL並提供反饋。任何人都可以通過Windows內部程序獲得WSL。也許你認為隻有Windows愛好者才會對內部程序感興趣,但現在有超過1000萬的訂閱者,他們對各種各樣的東西都感興趣,比如遊戲、藍牙和WSL。
對Windows中運行Bash感興趣的還有Web開發人員,他們試圖構建運行在Linux服務器上的Web應用程序,可采用一係列Bash命令。此外,如果您查找構建Web應用程序的幫助,比如Stack Overflow,其大多數示例代碼隻運行在Linux上——而你正在Windows機器上進行開發,這讓人感到很無奈。對於Web開發人員來說,隻好遷移到Mac和macOS上,在那裏運行代碼。
在WSL進入Windows的初期,一位積極的WSL用戶設法讓XEyes作為GUI應用程序運行在WSL和X11上。XEyes所做的就是在屏幕上畫一對卡通眼睛,跟著鼠標指針轉。在成功演示時,所有的社交媒體都沸騰了!

我們想了很多收集用戶反饋的方法。曾為WSL建立了一個UserVoice站點,上麵已經收集了數百個想法和數千次投票。考慮到WSL的首批受眾是Web開發人員,所以覺得GitHub很有作用。但是WSL並不是一個開源項目——在開源的GitHub上放置一個非開源項目似乎很奇怪。最後我們決定在GitHub上創建一個專門反饋和討論相關問題的論壇,至今我們已經收到了關於WSL的數千個問題。
在 WSL GitHub repo 上會提交成千上萬的問題,而WSL團隊會審查每一個問題,通過分析和評估,然後決定要做什麼。如果需要編寫新代碼來實現某個特性或修複某個問題,那麼會將任務添加到WSL項目計劃中,開發周期可以短至幾周。
這樣,人們所希望的WSL功能或遇到的問題通過UserVoice或GitHub得到了有效快速的解決,構建WSL社群也是整個項目創建過程的關鍵部分。
當我作為WSL的項目經理時,我的目標是讓WSL超越beta版。人們抱怨最多的是兼容性和性能。在我看來這些問題提得很好,這恰恰說明他們在認真使用我們的產品,因為在產品初期我們可能隻關心係統一些大的方麵。所以,為了讓人們用WSL做得更多、更快,我們還有很多工作要做。
隨著WSL功能的擴展和完善,我們將WSL帶向其他開發係統及其開發人員——而不僅局限於Microsoft生態係統的開發。當我們參加PyCon和OSCON這樣的活動時,那裏的開發人員看到微軟員工時都很驚訝。當我們告訴他們在微軟開發工具上運行Linux時,他們都表示懷疑。然後我當場演示了SQL Server、WSL和Visual Studio代碼。

為了打消他們的疑慮,我讓他們自己試一試。當這些開發人員開始運行他們自己的命令、腳本和代碼時,總是反應激動:“等等,這實際上是Linux。你是怎麼做到的?我怎麼會不知道呢? 這很酷。”
針對有關WSL兼容性和性能的抱怨,我們已經在一個新版本中解決了這個問題——WSL 2。它在Windows中提供了Linux內核並將性能提升了20x。今天,WSL已經經過了beta測試並升級到了版本2。你可以在公告博客上了解更多。
我還與微軟的其他團隊合作,希望WSL能與其他產品很好的結合。例如Visual Studio Code,它是JavaScript和Node.js中最流行的文本編輯器。使用Visual Studio代碼的開發人員可以從WSL中獲益良多。主要的優勢在於使運行在WSL中的Node.js代碼調試變得更容易。開發人員可以在運行WSL的Windows計算機上編寫Linux版本的Node.js並進行調試。

當我們為Node.js提供這樣的功能時,C++、Python和其他語言也有類似的需求。我開始對這種集成非常著迷,這為Linux開發帶來了全新的體驗。我現在著手c++代碼的Visual Studio遠程開發,我們會在今年的PyCon上線WSL的c++擴展功能。
盡管我在微軟工作的時間不長,但我為Linux開發工具感到興奮——從數據庫到操作係統再到 IDES。我願意繼續傳播對Linux的熱愛,並創建讓全世界的開發人員都感到滿意的工具。
原文:https://medium.com/microsoft-open-source-stories/when-linux-came-to-windows-204cf9abb3d6
聲明:本文為CSDN翻譯,轉載請注明來源出處。

下麵給大家推薦程序人生的好朋友——CSDN。
CSDNID:CSDNnews
專業的中文 IT 技術社區,與千萬技術人共成長。
成就一億技術人,成為技術人交流和成長的家園。
中國專業 IT 社區 CSDN (Chinese Software Developer Network) 創立於 1999 年,致力於為中國軟件開發者提供知識傳播、在線學習、職業發展等全生命周期服務。
長按下方二維碼關注 CSDN ,一手開發資訊,每日為你精心推送。

長按二維碼識別即可關注
熱 文推 薦
☞Python 爬取 B 站 5000 條視頻,揭秘為何千萬人為它流淚!
☞ 從愛立信退出世界 500 強,看 20 年 IT 行業變遷
☞ 如果諸葛亮是程序員 | 每日趣聞
☞Zend 創始人欲創建 PHP 方言,暫名為 P++;鴻蒙 OS 麵世;中國首個開源協議誕生 | 開發者周刊
☞主鏈100強榜單出爐, XRP竟與比特幣比肩; 以太坊每周產生1248種新代幣 | 數據周榜
☞Docker,一個傲嬌的男人
☞AI“生死”落地:誰有資格入選AI Top 30+案例?
☞最前沿:堪比E=mc2,Al-GA才是實現AGI的指標性方法論?
☞邊看邊用!這本 Python 3.6 的書火爆了 IT 圈!
相關資訊
最新熱門應用
bitstamp交易所app
其它軟件33.27MB
下載
v8國際交易所app蘋果手機
其它軟件223.89MB
下載
雷達幣交易所官方網站軟件安卓版
其它軟件292.97MB
下載
歐意交易所官網蘋果手機
其它軟件397.1MB
下載
幣贏交易所app最新版安卓
其它軟件52.2 MB
下載
追幣網交易所最新版
其它軟件223.89MB
下載
比特牛交易所官網app蘋果版
其它軟件26.64MB
下載
火bi交易所
其它軟件175MB
下載
比特兒交易平台app安卓手機
其它軟件292.97MB
下載
歐意交易所官網安卓版
其它軟件397.1MB
下載