Microsoft之逆襲

Gordon Lau

Gordon Lau

2020-06-09

2018年年底,微軟公司首次在近年來超越蘋果公司,成為全球市值最高的公司,價值超過8000億美元。時間快轉至筆者動筆寫這篇文章的今天(2020年6月),微軟依然是全球市值最高,市值高達1兆4000億美元,實在只能用天文數字來形容。

如果你不是從事資訊科技行業,你可能覺得一頭霧水,Microsoft近年在普通消費者眼中好像乏善足陳: Windows 10 變成每半年小更新旳操作系統,Windows 11 似乎永遠不會面世;Microsoft Office 也沒有大更動,基本上打開Microsoft Office 2019,整體感覺與Microsoft Office 2016分別不大,縱使不是專業投資者都會知道,科技公司的價值取決於創新,那Microsoft的創新在那裏呢?

microsoft.png

Source

這一切改變,筆者認為與Microsoft 新任CEO Satya Nadella於2014年上任有莫大關係。在他上任之前,Microsoft正在努力以Windows Phone打入智能電話市場,大家現在都知道成效不彰。而那時在開發者的世界,Microsoft就是反開源軟件(Anti open-source)的代名詞,前任CEO Steve Ballmer更曾於2001發表Linux is Cancer般令人震驚的評論。而正由於對開源開發之不友善,當時要在Windows上使用主流的開源程式語言,例如Node.jsPythonJava等,在開發者體驗(Developer Experience)上都比在類Unix 系統(Mac及Linux)上遜色不少,以Windows 開發網頁應用、手機應用,變成了一件吃力不討好的事情。這些事情都令當時微軟流失了大量使用Windows之開發者。

流失開發者對一間科技公司來說,是一個沉重打擊。大家身邊的開發者,往往都是新科技的嘗鮮派,想像一下:如果你的IT朋友千叮萬囑叫你不要使用Windows,你也不期然會考慮再三。順帶一提,依筆者之個人記憶,開發者不使用Windows之迷思也正是在此時出現,有興趣的朋友,可以閱讀筆者以前寫過的破除迷思系列:高手一定唔用Windows?一文。

逆襲

Satya Nadella如何應對這個困境呢?當然微軟內部的策略筆者無從得知:而筆者作為一個局外人,觀察到一個很簡單的原則:

贏回開發者歡心,就能逆轉劣勢

Satya上任不久的2015年,竟然出現了令人更震驚的Microsoft loves linux一文,由Linux is Cancer轉為Microsoft loves linux,可說是180度的改變。具體措拖是怎樣呢?Microsoft 由這時開始,開始全方位逆襲。

VSCode

Visual Studio Code 可說是Microsoft逆襲的第一步,VSCode 在2015年推出,當時市場上有幾個輕量的編輯器: 包括Sublime TextGithub Atom、還有Bracket等。這幾個編輯器比起之前的編輯器(例如NotePad++),都有很大的進步,但也各自有自己的問題。Sublime Text價格不菲,試用版每儲存5次就會出現提示購買訊息; Github Atom太笨重,速度太慢; Bracket的目標用戶比較像是設計師,而非開發者。 VS Code正好填補了這個市場上的空位: 速度快、自由開源、以開發者為主要目標用戶。

vs-code.png

VS Code更加入了常用的Git及Debugger,對開發者而言非常方便,無須像在Sublime TextGithub Atom中需要自行安裝。因此,在2019 StackOverflow 開發者調查中,Visual Studio Code 蟬聯最受歡迎的開發工具。筆者寫這篇文章的工具,也正正是Visual Studio Code

stackoverflow-survey-2019.png

Source

TypeScript

TypeScript 推出的時間很早,2012年已經推出了第一個版本,那時正是Node.js熱潮,TypeScript沒有在當時得到太多注目,直至數年後,前端應用框架ReactAngularVue.js相繼面世,開發者在開發複雜單頁應用(Single Page Application)時,發覺隨著軟件的程式碼數量增多,維護成本就愈高,原因正是JavaScript本身是一種動態弱型別(Dynamic and weak)的程式語言,非常靈活易寫,卻不利可讀性。與之相比,TypeScript包含了JavaScript之靈活及靜態語言之嚴謹,使之更適合大專案之維護。

typescript.png

Source

Facebook為了維護大型React專案,也開發了一個名為Flow的型別檢查程式庫,不過由於TypeScript愈來愈受歡迎,因此React也正式支援了TypeScript,並於官方網站推介作為加入靜態型別的方法之一。

TypeScript同時廣受弱型別(Weak Typing)及強型別(Strong Typing)的開發者所喜愛,在最新2020 StackOverflow survey 的調查,TypeScript為第二最受喜愛程式語言,僅排在Rust之後。 loved_programming_languages.png

Windows Subsystem for Linux(WSL)

2016年中,微軟宣佈推出一個名為Window Subsystem for Linux(WSL)的子系統,能令開發者在一個Windows的環境之中,運行一個Linux的環境。這對很多開發者而言是天大的喜訊,因為Windows長久以來都欠缺一個與Unix通用的Command Line環境。固然有像CygwinBabun這樣專案去模擬一個Command Line環境,但與一個真正的類Unix環境相去甚遠。 因此微軟與著名Linux發行版Ubuntu的母公司Canonical合作,在Windows 10之中提供一個名為Bash on Ubuntu on Windows旳系統。這一步令使用Windows的開發者,可以不用虛擬機器的情況下,就可以直接使用原本只能在Linux使用的套件。

terminal-1.0.png

Source

WSL令Windows 同時得到WindowsLinux的各自好處:既有良好的桌面軟件支援(Linux不支援Adobe的軟件),也有良好的Command Line支援,集合了兩家的優勢( Best of both world),因此受不少開發者所喜愛。 而由於雲端世界絕大多數使用Linux,所以WSL也方便了不少DevOps工程師管理雲端VM。WSL 2.0 更包含了一個真正的Linux 核心(Linux Kernel),因此加上了WSL2.0 的Windows 10,會同時包含Windows NT 核心及Linux 核心,成為了名符其實一個「雙核心操作系統」。由以下的圖表,可見在新WSL的架構之中,Linux 是真正在一個VM之中運行,但在資源佔用方面卻比普通VM要少得多。

WSL-2-Architecture.jpg

Source

.Net Core

長久而來,微軟在伺服器市場都有一席之地,然而大多數微軟的程式語言、工具、程式庫,都是專為Microsoft Windows Server 而設,基本上你要使用任何微軟開發的工具: 例如.Net FrameworkVisual StudioSQL Server,你就必須要使用Windows Server,別無其他選擇。但隨著近年Containerization 發展浪潮之下,Linux 操作系統佔了雲端部署絕大多數(例如Amazon Web Service 上有90%是Linux VM),結果導致微軟不但在Server 操作系統上馬失前蹄,連帶其他工具,都由於無法在Linux 上使用,而失去了不少市場份額。

因此微軟將程式語言、開發工具、程式庫等與Windows 分開發展,在2016年6月推出了.NET Core.NET Framework一向深受Windows開發者歡迎,包括了非常受歡迎的C#ASP.NetF#等程式語言。.Net CoreWindowsMacOSLinux上皆可運行,連帶SQL Server亦一樣可在三個主流平台上運行,大大擴充了潛在開發者之市場,不會再僅限於Windows Server 開發者。 微軟在.Net Core上之意圖尤其明顯,就為了重新搶佔伺服器開發中被JavaNode.js奪走了的不少市場,智能電話開發亦加入了新成員Blazor 去搶佔跨平台應用開發之市場,與React NativeFlutter決一高下。

dotnet-5.jpeg

Source

2020年4月,Microsoft更推出了.Net 5,留意名字裏沒有CoreFramework,代表Microsoft已徹底向跨平台開發進發,即使在Windows Server的市場份額未如理想,亦要在未來雲端開發、物聯網開發中佔一席之地。

Github

2018年6月,Microsoft向全球最受歡迎的開源程式碼儲存網站Github提出收購。這個消息還在當時引起不少開源開發者的逃亡潮,原因當然是因為微軟一直以來打擊開源軟件的形象。結果在併購完成後,Github 將免費的private repository 由三個提升至無限制。因此證明了微軟在對開源軟件的策略已有翻天覆地的變化,完全是名言If you can't beat them, join them.的最佳實踐。

github-action.png

Github Action

2018年10月,更推出了名為Github Action的CI/CD工具,Github的主要競爭對手Gitlab正是以優質的CI/CD工具而聞名,此舉明顯是為了保持Github的龍頭地位。

總結

微軟在90年代的成功,令微軟在千禧第一個十年時錯過開源開發(Open source development )、網頁應用(Web Application)、智能電話應用(Smartphone application)的發展,而錯失了第一個十年後,又在第二個十年急起直追,在不少領域重新領先,筆者看來,這正代表創新者必須與時俱進,一成不變的話則必然受時代淘汰了。

Comments

Read More

科技會過時?

四個原因令Linux更適合作Server

學術探討系列:型別推論(一) Type inference(I)

Excel病特效藥:Office JavaScript API