代碼編輯器/編譯器的江湖是競爭激烈的戰場,Visual Studio Code作為一個后生晚輩,是如何在一眾神器之中崛起的,它的故事值得一看。
VS Code 之父 Erich Gamma 作為設計模式 “四人幫“ 作者之一,軟件模式發展的先驅,開發了 JAVA 單元測試框架 JUnit,更輝煌的是,在 IBM 主導開發了 Eclipse IDE 編輯器,是當年最流行的 編輯器/IDE。
可是,Erich Gamma 覺得有點不太對,未來是屬于自己的 Web ,我要在 Web 打造像桌面端一樣的開發體驗。
在那個 IE 6 瀏覽器很香、jQuery 是最先進前端框架的年代,大佬果然是大佬,至少比一般人往后看10年。
同時 IBM 也江河日下,這個時候微軟拋出橄欖枝,“入伙吧,未來是云時代,來做 Azure 的 Web 端編輯器”。Azure 剛于2010年發布,需要一個 web 端的編輯器。
雙方一拍即合!
2011 故事開始 - Monaco Editor
因為有 Eclipse IDE 的開發經驗,很快擼了一個 Web 端的編輯器。猜測是因為 Erich 喜歡去摩納哥旅游,起名叫 "Monaco"。
這是一個 純 Web 的 Editor,VS Code 前身。也是目前 VS Code 使用的 editor,很快提供給 Azure 用戶使用。
Monaco 的特點就是“快“。性能吊打 Ace 和 CodeMirror。這也是 VS Code 至今的原則:不使用任何 UI Framework,這是為了追求極致的性能,盡可能接近 DOM,做到每一個性能損耗點都能完全控制。
2013年:全面轉向 TypeScript
JS 語言設計的時候太過倉促,留下很多怪癖,且動態類型導致很多問題在運行時才能發現,開發像 VS Code 這樣的項目難堪重任。
想一下如果沒有 TS 的類型校驗,重構一個大型的 JS 將會是怎樣的災難!
這一次,幸運又一次降臨在 Erich。他是同事兼好基友 Anders Hejlsberg 開發了 TypeScript。
從 2011 年 Monaco 就使用 TS,感覺越用越好,2013 年決定全面切到 TypeScript。更幸運的是:據說 Anders Hejlsberg 有一個怪癖,喜歡用一個文件寫所有代碼(待求證),所以大文件特別多,他也是 Monaco 的重度用戶,有他的加持,Monaco 性能不逆天才怪。因為轉到了 TypeScript,給 VS Code 的技術打下來堅守的基礎。
2013年:差點掛掉的一年
開發了 3 年的工具,雖然性能逆天,但致命的缺點是月活只有 3000 用戶!“你到底為公司創造了什么價值?” Erich 也面臨靈魂拷問。算了一下,用戶數至少 x10 才能存活。但做 Web Editor 大概也只能這些用戶,繼續搞 Monaco 還是換一個新賽道?怎么辦?
2014年:機遇來了
2014年,微軟開始全面轉型到生產力工具和云優先。從只考慮 windows 平臺主要考慮 macOS、linux、Windows 跨平臺,并全面擁抱開源。但微軟缺少一個跨平臺的開發工具,尤其是這個時候 Web 開發者開始迅速增長。
Erich 意識到機會來了。但 2014 年的瀏覽器還是不夠給力,前端項目越來越重,需要大量的文件處理。不是一個 Monaco 在線編輯器可以搞定的。
Erich 面臨艱難選擇:繼續發展至來的 Web 編輯器 Monaco 還是改到 Desktop 版的 Editor/IDE???
最終:結果大家都知道了,Erich 選擇了比開發者更能接受的 Desktop Editor/IDE。
方法也簡單,用 Electron 包殼 Monaco。并改了個網紅潛質的名字 “VS Code“,幾個月就搞好了。
2015年:終于它來了 - VS Code
為了盡可能多的 MS 人使用,提升業務價值,VS Code 選擇在 BUILD 大會上正式發布。當時最成功的一個 demo 是演示 Linux 下調試 .NET 應用。但當時很多功能停留在 Demo 上,比如很多人期待的 Extension 擴展 API,是在 6 個月后上線的。
2016年:多語言支持:LSP(Language Server Protocol)
開發過 VS Code 插件的朋友應該很熟悉 LSP,可以擴展其他語言支持。
LSP第一個使用 LSP 接入支持的就是 Java。在一個 Hackathon 上完成啟動。
2017~2019年:開發 VS Code Remote
WSL 幫了大忙,不需要處理不同操作系統文件系統的差異。2020年:重返 WebVS Code Desktop 版本深度依賴了各種 Node.js File API。所以即使是 Electron 應用移植到 Web 也是需要花不少時間的。
也是在 2020 年,出現很多在線的 IDE/Editor 開發工具,低代碼工具滿天飛,他們都應該或多或少感謝 VS Code。
好了,歷史科普到此結束。結論以下是我個人總結,為什么 VS Code 能翻盤
1、性能夠快!
相信很多從 Sublime/Atom 轉過來的用戶,包括我自己,都是因為當初被 VS Code 性能折服對于工具來說,任何時候“快”都是競爭力。快是因為有足夠的技術積累。
2、順應時勢
要有預見未來的理想主義,也要能從現實中找到一個可行路徑。
雖然 Erich 在10年前就押寶 Web 編輯器,但當時時機確實不成熟啊,如果不轉成 Electron 套殼,活不過2014年。
3、積累豐富,傾聽用戶聲音,持續優化,堅持 10 年
定好了大方向 Web Editor/IDE,解決了生存問題(幫助微軟做跨平臺開發),接下來就看誰能扛的久。
去年 2021 年1月份數據,VS Code 解決了 100K 個 issue。這是時間的味道,想象一下,修 10萬個 bug 的軟件細節能不好嗎。
有 Anders Hejlsberg 這樣的超級用戶,并給他帶來了TS
強大的生態,豐富的擴展。生態和產品像雞和蛋的問題,如果產品不好也沒法做大生態。所以本質還是 VS Code 本身功能夠好,架構優雅,方便擴展。
4、運氣好
機會是留給有準備的人,當微軟2014年宣布轉型的時候,恰好需要跨平臺編輯器,Monaco 剛好準備好。
順應了微軟大的轉型。在商業公司里做開源,懂的都懂,開源不帶來營收,如果無法解決“業務價值”問題,注定發展不大,很容易在資源搶奪過程中被拆解,看看 React 團隊的人員更換速度。
提前 10 年,押中了 Web 的崛起,因為他是 Erich。
如果能做到以上幾點,先積累個10年,“一夜成名“ 的確問題不大,這可能就是“翻盤”吧。
原文鏈接:
https://mp.weixin.qq.com/s/0cVNKR3IFvmPk472mo_R4Q