開源軟件的叛徒,加入了微軟
最近發(fā)生了一件不起眼的新聞,微軟把mono的上游項(xiàng)目交給了Wine團(tuán)隊(duì)來管理。
可能很多小伙伴已經(jīng)不知道m(xù)ono是什么東西了,但是在它的背后,是多家公司的激烈爭(zhēng)斗,是多個(gè)大佬的愛恨情仇。
故事很長(zhǎng),我們慢慢從Java說起。
上世紀(jì)90年代,微軟一手遮天,不僅統(tǒng)治了操作系統(tǒng),還把一眾應(yīng)用軟件廠商打得慘不忍睹,成為行業(yè)公敵。
這時(shí)候出現(xiàn)了三個(gè)新事物:Linux、Java、Netscape,它們將成為微軟帝國(guó)的掘墓人。
Java剛出現(xiàn)的時(shí)候,高呼“一次編寫,到處運(yùn)行”的口號(hào),好像操作系統(tǒng)變得不那么重要了。
但Java寫的桌面應(yīng)用實(shí)在差勁,界面丑陋,性能低下,被人嘲笑。
Sun公司一看這不行啊,不能在桌面端和微軟爭(zhēng)了,往服務(wù)器端走!
服務(wù)器端的程序沒有界面,、內(nèi)存和CPU管夠,缺的就是Java這種非常適合寫商業(yè)業(yè)務(wù)邏輯的語(yǔ)言!
Sun提出了J2EE(Servlet、EJB、JPA、JMS....)規(guī)范,聯(lián)合了一眾大佬,形成了反微軟聯(lián)盟,在互聯(lián)網(wǎng)時(shí)代牢牢地卡住了位置。
我要是Bill Gates,心里估計(jì)就要滴血了:老子用了二十年,好不容易把“桌面”收拾干凈,現(xiàn)在又來了一個(gè)互聯(lián)網(wǎng)!
Bill Gates先是搞了一個(gè)小陰謀,挖來了編程語(yǔ)言和編譯器的大師級(jí)人物Anders,開發(fā)了VJ++,不但可以繞過Java API直接訪問操作系統(tǒng)的功能,還可以把Java代碼編譯成Windows的exe來執(zhí)行!
圖片
Sun一看VJ++就炸鍋了:你這是破壞Java一次編寫,到處運(yùn)行的特點(diǎn),立刻就把微軟告了。
微軟的小動(dòng)作沒搞成,只能下定決心,重起爐灶,和Java對(duì)抗,這就是.Net戰(zhàn)略。
圖片
.Net 剛開始就是和Java打擂臺(tái)的,Java有字節(jié)碼,.Net就有中間語(yǔ)言(Common Intermediate Language,簡(jiǎn)稱IL);
Java有JRE,.Net就有CLR(Common Language Runtime)。
.Net的一大亮點(diǎn)是支持多語(yǔ)言開發(fā),用C#、F#、VB .NET、C++都可以,反正最終都要編譯成中間語(yǔ)言IL。
圖片
微軟為了吸引更多的同盟軍,這一次難得地和自己的鐵哥們Intel一起,制定了公共語(yǔ)言基礎(chǔ)結(jié)構(gòu)(CLI)規(guī)范,并且提交給ISO和ECMA做了標(biāo)準(zhǔn)化。
用面向?qū)ο髞碜鰝€(gè)類比,CLI相當(dāng)于接口,微軟的.Net Framework,是CLI的一個(gè)商業(yè)實(shí)現(xiàn)。
任何人都可以實(shí)現(xiàn)CLI,理論上都是和.Net Framework都是平起平坐的。
但是實(shí)現(xiàn)CLI,工作量過于龐大,CLI又是微軟主導(dǎo)的,真的有人會(huì)這么干嗎?
圖片
Miguel de Icaza(米格爾·德·伊卡薩)是個(gè)墨西哥裔程序員,大學(xué)專業(yè)本來是數(shù)學(xué),但是他不務(wù)正業(yè),迷上了Linux和編程,給Linux內(nèi)核做了很多貢獻(xiàn)。
圖片
沒時(shí)間學(xué)習(xí),他干脆輟學(xué)了。
沒有學(xué)位,拿不到美國(guó)的H-1B簽證,這讓他喪失了進(jìn)入微軟的機(jī)會(huì)。
不過幸虧他沒進(jìn)微軟,否則以微軟當(dāng)時(shí)仇視開源軟件的態(tài)度,他根本不可能搞出來GNOME。
沒錯(cuò),GNOME就是米格爾牽頭發(fā)起的,很就和KDE一樣成為L(zhǎng)inux桌面的雙子星。
圖片
在微軟面試時(shí),米格爾遇到了在微軟實(shí)習(xí)的Nat Friedman,成為好友。
1999年,兩人一起成立了一個(gè)叫做Ximian的公司,專門支持GNOME的發(fā)展。
這是剛剛流行起來的一種商業(yè)模式,軟件是開源免費(fèi)的,但是技術(shù)支持服務(wù)是可以收費(fèi)的。
公司獲得了獲得了幾百萬美元的融資,但讓人苦笑不得的是,雖然米格爾已經(jīng)在IT界有了非常高的名氣,但依然無法獲得美國(guó)的H-1B簽證。
最后米格爾通過O1簽證來到了美利堅(jiān),O1簽證本來是頒發(fā)給頂級(jí)音樂家,運(yùn)動(dòng)員,以及諾貝爾獲獎(jiǎng)?wù)叩?。?dāng)時(shí)O1簽證很麻煩,米格爾每隔6個(gè)月就需要會(huì)墨西哥的美國(guó)領(lǐng)事館續(xù)簽一次。
微軟發(fā)布.Net戰(zhàn)略后,米格爾意識(shí)到.Net這種支持多語(yǔ)言的策略對(duì)GNOME有很大的幫助,如果在Linux上實(shí)現(xiàn).Net,那程序員就可以用自己喜歡的編程語(yǔ)言來開發(fā)Linux桌面應(yīng)用程序了。
于是,米格爾決定推出開源項(xiàng)目Mono,在Linux上實(shí)現(xiàn).Net,把.Net的另外一條腿接上。
圖片
這是米格爾第二次和微軟發(fā)生聯(lián)系,這個(gè)決定引發(fā)了很多開源界大佬的批評(píng),GNU的創(chuàng)始人,自由軟件的斗士Richard Stallman猛批他是為“自由軟件的叛徒”,竟然把邪惡的微軟持有專利的東西在Linux上實(shí)現(xiàn)!
圖片
Mono雖然比不上微軟的親兒子.Net Framework,但的確解決了一個(gè)大問題,獲得了很多人的喜愛。
比如著名的游戲引擎Unity最早就選擇了Mono作為底層的.Net運(yùn)行時(shí),可以跨平臺(tái)地執(zhí)行C#代碼。
圖片
隨后,一系列大魚吃小魚事件開始上演。
2003年,米格爾的Ximian公司被Novell收購(gòu)。米格爾出任副總裁。
2011年,Novell又被Attachmate收購(gòu),Attachmate解雇了所有在美國(guó)從事Mono工作的員工,包括米格爾。
Mono前途未卜,米格爾和Nat Friedman又成立了新公司Xamarin公司,繼續(xù)開發(fā)Mono。
圖片
此時(shí)移動(dòng)互聯(lián)網(wǎng)已經(jīng)興起,Xamarin公司趁勢(shì)推出了Xamarin.iOS 和 Xamarin.Android,讓.Net程序可以運(yùn)行在手機(jī)之上。
不得不說,米格爾眼光獨(dú)到,這是至關(guān)重要的一個(gè)決定。
因?yàn)閮H僅3年后,微軟就推出了開源、跨平臺(tái)的.Net Core,一下子讓Mono處于很尷尬的地位,畢竟再怎么著,也很難和官方的產(chǎn)品競(jìng)爭(zhēng)啊。
2016年,微軟以4億美元收購(gòu)了Xamarin,讓Xamarin成為微軟.Net框架的一部分。
這一次,米格爾正式加入了微軟。
圖片
從.Net 5開始,.NET Framework、.NET Core、Mono又被整合到了一起,可以支持桌面、Web、云、移動(dòng)設(shè)備、游戲、IoT、AI等各種開發(fā)。
圖片
2024 年 8 月 27 日,微軟將 Mono 上游項(xiàng)目的所有權(quán)轉(zhuǎn)讓給Windows 兼容層Wine的開發(fā)團(tuán)隊(duì) WineHQ 。
Wine的文章參見:《國(guó)產(chǎn)操作系統(tǒng)最致命的短板,被這個(gè)開源軟件補(bǔ)上了?》
發(fā)起了GNOME、Mono兩個(gè)著名項(xiàng)目,兩次創(chuàng)業(yè),全部成功,米格爾不愧為人生贏家。
作為開源界的知名人物,他和很多熱愛Linux的大牛不一樣,他是個(gè)實(shí)用主義者。
為了讓GNOME支持多語(yǔ)言的應(yīng)用,他把微軟擁有專利的.Net引入了Linux世界和手機(jī)的世界,被批為“叛徒”。
他公開支持微軟的開放技術(shù),在ODF(Open Document Format) 和OOXML(Office Open XML )的大戰(zhàn)中,他旗幟鮮明地支持微軟的OOXML,完全不顧開源社區(qū)的廣泛批評(píng)。
雖然他是Linux桌面GNOME的發(fā)起者,但是他毫不掩飾對(duì)macOS的喜愛,他批評(píng) Linux 桌面以開發(fā)者為中心的文化、缺乏向后兼容性以及各種 Linux 發(fā)行版之間的分裂,這都導(dǎo)致“Linux桌面被毀掉”。