「Microsoft ♥ Linux」的再觀察/Toppy368

編按:本文為作者對於日前本站〈Windows 10 支援 bash:微軟 Linux 化之路的第一步?〉一文的回應,由編輯取得作者許可之後整理刊出,以饗關心這個話題的讀者。

先說結論

Windows 10支援bash不是單一事件。最近微軟宣布,將陸續把旗下開放工具開源、並移植到Linux環境之下,之前也曾宣布要能執行Android應用程式等等(不過Android這部份後來沒下文了)。

從這一點其實不難發現,微軟的態度轉變得很「兇」;微軟以往幾乎不理會開放原始碼陣營,開發工具跟Apple一樣也都是綁作業系統的。另一方面,開源程式陣營也做了一些跨平台的努力;所以,其實部分開源開發工具也有能在Windows下運作的套件。

微軟最近的口號「Microsoft ♥ Linux」、以及各種向Linux靠攏的方式,筆者認為一定是計算過的。雖然現在手機及雲端應用採用Linux、以及由Linux改良而來的Android龐大客群[footnote]由於Android改寫了Linux核心、再加上部分授權爭議,因此是否能等同於Linux是有爭議的。維基百科的發行版Linux列表,把Android當成發行版的專用套件處理,本文以「Linux改良版的Android」為稱呼。[/footnote],來對抗iPhone使用的iOS,但桌面應用還是以Windows及Apple的Mac OS X兩強相爭,Linux發行版相對小眾。

如果微軟朝Linux靠攏,會造成怎樣的結果 ? 是否反而會造成Windows開發者出走 ?

這一點我覺得微軟應該都算過才對,畢竟這是大規模的政策轉變;至於微軟開放bash之後能支援到什麼程度,這部分我覺得可以觀望看看。畢竟要改寫一套邏輯截然不同的系統,勢必會發生相容問題,所以這部分只能等開放之後才知道了。

開發者角度

筆者個人認為,無論如何微軟願意這樣做實際上是好事。雖然開放這些功能可能有風險,但微軟在此必須要有設定權限及功能開關(畢竟一般使用者可能用不到Linux功能,可能連FTP、VPN、telnet、ssh都很少碰到了)、開發者也要瞭解這些工具的方便及風險。

不過開源有個好處,就是萬一有漏洞,廠商能夠更快發現並補洞;不過這是理想狀態下的說法,商業軟體可能沒那麼快補齊,造成漏洞空窗期甚至「0 day」漏洞。

雖然微軟在開發對bash支援的過程中,可能會遇到某些邏輯問題,我們很難知道背後如何運作;不過因為是Windows原生的,所以如果支援效果不錯,就會降低很多開發人員的困擾,我覺得這是好事,畢竟這些步驟也是很麻煩的。

雖然筆者認為微軟其實也可以不用那麼做,只要在Windows上新增telnet及ssh客戶端插件,讓使用者能直接利用cmd及PowerShell,就會方便一些(最好是放在市集或官網上供人下載,但必須注意權限問題)。

不過整個移植也是好事,畢竟這樣一來,門檻就降低了。

執行其他作業系統的方式

開發者在需要同時執行多個作業系統時,目前有幾種方式可以選擇,也各有優缺點:

1. 虛擬機器

第一種是開虛擬機器(VM),可以在不動硬碟分割區及開機設定的情況下,分一些硬體資源跑其他作業系統;你可以跑Linux發行版、甚至像是XP或95等舊版Windows,而Android SDK 也只能用這種方式來模擬。

這樣的優點是,可以不用關機且能同時雙開系統;當想刪除虛擬機時,也不用再重灌或額外處理。但缺點是需要分一些系統資源,對於硬體設備不強的電腦而言會很吃力(目前伺服器的虛擬化也是採用這類技術)。

2. 另開磁碟/區

第二種方式,是將作業系統安裝在硬碟的空磁區、或是安裝在USB隨身碟上;只要重新開機、並執行安裝在獨立磁區或USB碟的系統,就有原生系統環境可以跑了。這樣的缺點是,每次切換作業系統都必須重開機,而且安裝過程的操作有些難度。

而且,如果哪天不需要使用這些系統了,可能要動到整個分割區。當然,如果是安裝在隨身碟中,就不需要考慮這個問題了。

3. 連接外部機器

第三種是透過指令連接外部機器。你可以申請VPS主機/伺服器、AWS 等雲端主機/伺服器,也可以買台NAS並設定外部網路(當然你想透過第二種方式並開外網也行,但前提是要會設定)。

在外地用ssh方式連接到你的主機上,步驟類似連接PTT的方式,門檻是你必須熟悉指令、而且要有可以執行Linux的機器。

微軟轉變對用戶的影響

最後來說說微軟態度轉變對於企業、一般使用者的影響。

Windows最主要的使用者,還是一般消費大眾及企業主,而企業主不一定知道專業的IT資訊;對於非資訊相關部門來說,基本上會直接跳過指令系統,而甚至根本不願意碰。而微軟的開發元件也不見得能在別的系統上跑,也因此常常有不相容於其他系統的問題。

甚至企業為了部分程式過於老舊、而且不相容於新系統,所以直續使用舊版系統;這樣的狀況不只會造成微軟官方「警告」的維護成本及安全性問題,也造成企業更新軟體的負擔。

微軟這次重視開發者的需求,把該公司的開發元件移植到Linux上,未來上述這種事情會少很多;畢竟接下來企業只要痛一次,請軟體商改寫成主流語言(包含移植到Linux的微軟語系),就可以減少許多日後的維護問題、以及新舊作業系統升級的困擾。

此外,某些ERP或會計系統、甚至是一般消費者常常用到的遊戲,也有可能因此可以做跨平台運用;或許在不久的將來之後,使用者就可以在Ubuntu Linux上玩網路遊戲了。

微軟如果認真的做這一塊,而不是說一套做一套(開空頭支票),真的移植這些開發工具,除了讓它們能相容於Linux之外,甚至成為開源工具,讓開發者能移植更多跨平台軟體,這無論對開發者、公司行號、甚至一般消費者,都可以說是好事一件。