1. 程式人生 > >把微軟、MongoDB 與華為放到一起,為什麼?

把微軟、MongoDB 與華為放到一起,為什麼?

作者:開源中國(OSCHINA)

內容來源:開源中國(OSCHINA)

最近開源中國(OSCHINA)在慶祝 11 週年生日,編輯部藉著這個機會梳理了一下這一年來我們追過的那些開源界/開發界的熱點新聞,算作一個階段性小結。(其實只有 9 個月~)

今年這幾個月下來,已經積累了龐大規模的內容,我們按不同方向整理成了數篇文章,接下來會陸續推出,這是第二篇,聊聊在開源上最受關注的幾家公司。

上一篇:程式語言這一年:Rust、Kotlin 上位,Python 橫行

OSCHINA 今年關注了什麼之——公司與開源

前一篇我們梳理了一下程式語言方面的動態,而程式語言之外,今年在開發者中引起最為熱烈討論的可能要數華為相關的資訊了。華為與微軟、MongoDB 被我們劃分在“今年在開源上讓人眼前一亮的公司”中,梳理成這第二篇總結文章,下邊來看看。

華為

由中美貿易爭端引起,華為被美國封殺,並且蔓延到技術領域。在美國政令下,谷歌開始限制華為使用安卓微軟隨後停止華為訂單,緊接著,SD 卡協會、Wi-Fi 聯盟、IEEE 學術委員會等均撤銷華為會員資格(後又接連恢復)。

絕地反擊,華為宣佈將推出自主研發的海思晶片、鴻蒙作業系統與方舟編譯器。

一時間引起了劇烈的反響,一方面是一種愛國情懷在刺激著全國人民,不管是不是開發者,大家在關係到國家前途的這件大事上都積極參與了進來;另一方面,華為準備祭出的這幾個專案,在國內當前技術環境下並沒有前例,它們技術上具體是如何實現的?完成得怎麼樣?有什麼樣的突破?……這些與技術相關的期待、疑問與質疑在講究“talk is cheap, show me the code”的開發者圈子中瞬間爆炸。

這其中有正面的聲音,反面的也不少。在華為一次次騷操作中,人們的質疑一再被打臉,真香定律瘋狂應驗。

最近開源的方舟編譯器來說,傳聞這個編譯器華為已經自主研發了 10 年,但是直到開源出來,華為還是被許多人噴只會畫餅:

  • 2009 年,華為啟動 5G 基礎技術研究的同時,開始建立編譯組,第一批海內外研究人員加入;
  • 2013 年,華為推出面向基站領域的自研編譯器 HCC,並正式提出編譯器框架構想;
  • 2014 年,眾多海內外專家加入華為,方舟專案正式啟動;
  • 2016 年,成立編譯器與程式語言實驗室;
  • 2017 年,方舟編譯器上第一個 Java 程式“Hello World”跑通;
  • 2018 年,方舟編譯器跑通安卓系統所有後臺服務,併成功移植到手機;
  • 2019 年,華為方舟編譯器開源。

其實原始碼目前已經開放,噴的人也開始換了一些角度。目前方舟編譯器開源的是編譯器框架部分原始碼,包括編譯器中間表示(IR,Intermediate Representation)與語言編譯實現,同時搭配編譯器其它二進位制元件,實現 Java 程式到 aarch64 彙編指令的編譯過程。

據介紹,一方面,方舟編譯器首次在 Java 領域將虛擬機器幹掉了,也是軟體史上首次將 Java/C/C++ 等混合程式碼一次編譯成機器碼直接在手機上執行,告別了 Java 的 JNI 額外開銷,也告別了虛擬機器 GC 記憶體回收帶來的應用程序掉線,使操作流暢度大幅提升。

華為沒有透露技術細節上的東西,同時官方也並未透徹說明研發方舟編譯器的核心難點在哪裡。但是根據方舟專家不閒的介紹,我們瞭解了一些東西。

首先 Java 本身是“動態語言”,如果要能夠在伺服器側做到靜態編譯,又不能動手裁剪語言的動態能力,就需要 IR、執行時、編譯器以及程式設計框架一起修改,同時還要考慮複雜的相容問題,導致技術方案選型的困難。其次要想提高流暢度,需要提升記憶體使用效率、提升 JNI 效率,需要想盡辦法控制動態繫結對效能的影響,需要 profile 上有更準確的資訊,這是系統工程上的困難。而最為關鍵是如何提升編譯後的程式碼執行效率,做出一個可以工作的工具不難,難在做出世界頂尖效能。此外,我們國內能做 IR 設計和記憶體模型的人才太少了。

按照華為的說法,方舟編譯器的開源打響了鴻蒙 OS 開源的第一槍,方舟編譯器之上,鴻蒙 OS 是“第一個適用於所有場景的基於微核心的分散式作業系統”,它可以執行在智慧手機、智慧揚聲器、計算機、智慧手錶、無線耳塞、汽車與平板電腦上,其支援的 RAM 大小從千位元組到千兆位元組不等。此外,鴻蒙最終將支援一系列應用,相容 Linux 與 Android 應用。

同時華為還介紹接下來方舟編譯器本身也會繼續增量開源。此外,根據一些開發者的分析,華為基於方舟編譯器的 IR 層設計,其實上可接入不同程式語言生態、下可接入各種作業系統與硬體平臺,而一旦 IR 層生態建成,更可直接推出自己的語言,這樣軟體王國四大明珠“作業系統、編譯器、程式語言與資料庫”中三顆都將變成華為的掌上明珠,這在國內還沒有先例。

基於這些已經引起的全球性的關注以及開源相關計劃與事實,我們認為華為今年在開源上的參與程度與影響值得記錄與繼續期待。

另外值得一提的是,最近 CNCF 釋出的 Kubernetes 歷程報告中,我們發現華為高亮出鏡:目前在參與貢獻 Kubernetes 的公司中,華為貢獻量排在第 4 位。

其它引起熱議的相關內容

微軟

微軟愛開源!

參與開源,這是近兩年來微軟在走的路線,並且在 2019 年,它甚至直接在 Windows 中安上了一顆 Linux 內臟。

微軟的這顆 Linux 內臟其實是今年 5 月份在 Windows 10 上推出的全新版本 WSL(Windows Subsystem for Linux),新版本 WSL 2 使用了全新的架構,這是一個真正的 Linux 核心,它改變了 Linux 二進位制檔案與 Windows 和計算機硬體的互動方式。

Linux 二進位制檔案使用系統呼叫來執行許多功能,例如訪問檔案、請求記憶體與建立程序等。WSL 1 建立了一個轉換層,對這些系統呼叫進行翻譯,以允許它們在 Windows NT 核心上工作。但是,實現所有這些系統呼叫很有挑戰性,導致某些應用程式無法在 WSL 1 中執行。WSL 2 包含自己的 Linux 核心,它具有完整的系統呼叫相容性。所以像 Docker 等應用都可以正常使用。

同時,微軟還開源了全新的終端 Windows Terminal,這是一個全新的、流行的、功能強大的命令列終端工具。包含很多來社群呼聲很高的特性,例如:多 Tab 支援、富文字、多語言支援、可配置、主題和樣式,支援 emoji 和基於 GPU 運算的文字渲染等。

“Windows Terminal”的图片搜索结果

微軟深情擁抱 Linux,不可思議!從此以後,人們是這樣描述閉源的 Windows 的:Windows 是世界上最好用的 Linux 桌面發行版

關於擁抱 Linux,微軟今年還做了一件事,它宣佈正在將其 exFAT 技術新增到 Linux 核心中。exFAT 檔案系統目前在整個電子行業中都得到了廣泛應用,你平時使用的 SD 卡和 USB 快閃記憶體驅動等電子產品,多半就使用到了 exFAT 技術。

但是這個專利此前是收費的。微軟開放了它的 exFAT 技術,並且把技術規範公開,這意味著,往後 Linux 社群可以放心地使用 Linux 核心中包含的 exFAT。另一方面,技術規範文件公開後,開發者可以開發符合要求、可互操作的 exFAT 實現,促進整條技術鏈的發展。

除了 Linux,微軟還把參與開源的手握向了 Chromium,這是開源界的另一個超級明星專案,基於它開發的 Chrome 也是 Web 瀏覽器的霸主。微軟去年年底宣佈要給自家的新瀏覽器 Edge 換個心臟,今年 4 月份它終於正式釋出了基於 Chromium 的 Edge 預覽版本

微軟在改造自己的 Edge 的過程中,也將其在業內出了名的瀏覽器特性帶到了 Chromium 專案中,比如順滑滾動體驗和快速便捷的 Windows Hello 身份驗證、無障礙閱讀、高對比度與視訊字幕可讀性等,儼然成為了 Chromium 的重要貢獻者。

而開源程式語言方面,微軟也著手深度參與,上一篇講程式語言的時候我們已經提到了:微軟正探索將 Rust 作為 C 和 C++ 的安全替代方案

什麼情況?那個當初把開源視為毒瘤的微軟,現在已經成為了開源界的超級巨星!?

這份開源之愛,即是正義!——?

真的是正義嗎?有些人不這麼認為

微軟想要做什麼呢?有人說他要入侵 Linux,還是走“擁抱、擴充套件再消滅”的老路。在微軟宣佈開放 exFAT 技術,參與到 Linux 核心的訊息出來後,有資深媒體人分析:“微軟並非以‘和平姿態’進入 Linux,它採用了敵對姿態。它對雅虎、諾基亞和 Novell 採取了同樣的做法。”他指出微軟現在進入 Linux 完全是為了將微軟的“標準”、API 和專有軟體推到 Linux 中,最終目的只是純粹而簡單地要剝削和榨取。

我們甚至覺得事情沒這麼簡單。關於微軟與開源,整個故事可以講得很完美,下邊來看看。

Linux 基金會專案 OpenDaylight 執行總監 Neela Jacques 在名為《The shift in open source: A new kind of platform war》(開源的轉變,新的平臺之戰)的文章中寫道:在技術主宰著世界的今天,平臺創造了市場和生態,創造出巨大的價值。此時,如果哪家公司站錯平臺,那麼不論這家公司的技術有多好,市場有多大,銷售團隊有多強,最終都會被淘汰,前車之鑑包括 Nokia、Blackberry、Windows phone、Amazon Fire、Websphere 與 Cloudstack 等。

當前開發者領域最大的平臺是什麼?開源。這是前提。

2016 年,微軟以 260 億美元收購了職業社交網站 LinkedIn。

2018 年,微軟以 75 億美元收購了全球最大原始碼託管平臺 GitHub。

2018 年,微軟開始與自由職業工作平臺 Upwork 開展合作,共同向客戶提供企業級自由職業解決方案。有訊息指出,此舉是微軟收購 Upwork 工作的第一步。

微軟在幹什麼?

LinkedIn 是全球最大的職場社交平臺,使用者數已超過 6.1 億,覆蓋全球 200 多個國家和地區,每個《財富》世界 500 強公司均有高管加入。

GitHub 是全球最大的軟體原始碼託管平臺,目前使用者 3600 萬,託管倉庫超過 1 億。

Upwork 是全球最大的自由職業網站,每年有數百萬個職位釋出在 Upwork 上,覆蓋專業技能超過 5000 種。通俗一點來說,Upwork 就是一個眾包平臺,人們在上邊接單完成任務,賺取回報。

微軟收購 LinkedIn,可以看作是對“人際關係網”的收購;收購 GitHub,外界認為微軟開始在大規模地聚集開發者人才,其實收購的是“專業開發者”;如果微軟真的收購了 Upwork,那它勢必將 Upwork 向全體 LinekdIn 與 GitHub 使用者開放,形成一整個可持續發展的開發者生態。

現在情況是微軟手上已經有了 LinkedIn 這個全球最大的職業社交網路,也有 GitHub 這個專注於軟體開發者的全球最大程式設計師聚集網路,收購 Upwork 或者類似的開發變現平臺成為了這兩大開發者資源網路的不二去向。

這很明顯,微軟在抓住當前最具創造力並且最“平價”的創新源泉——自由與熱衷開源的開發者——去建設它全新的開發者生態。那麼前邊梳理的微軟今年在開源上的動作,其實也就不言而喻了。

只要把握住了這群開源世界的核心,那麼新的開發者生態中“天下英雄皆入吾彀中矣”,到時別說自行車了,微軟可以擁有整個軟體世界。

微軟是不是這樣想的呢?我們拭目以待。

對了,最近微軟宣佈將於明年舉辦第一屆微軟 Linux 大會——WSLconf,同樣讓人大跌眼鏡。

不小心給它打了個廣告,微軟打錢。

其它引起熱議的相關內容

MongoDB

這一小節講講今年在開源界名聲似乎不怎麼樣的 MongoDB。

MongoDB 去年 10 月份宣佈將開源 License 從 GNU AGPLv3 切換到 Server Side Public License(SSPL),以此迴應 AWS 等雲廠商將 MongoDB 以服務的形式(DBaaS)提供給使用者而沒有回饋開源社群的行為。

SSPL 明確要求託管 MongoDB 例項的雲廠商要麼獲取商業許可證要麼向社群開放其服務原始碼。

但是開源社群對此有不少反對聲音,許多人認為 SSPL 是具有針對性的,對特定類別的使用者具有嚴重歧視性,這違反了開源的真諦,所以 Fedora 認定 SSPL 不是一個自由軟體許可,紅帽和 Debian 也宣佈從發行版中刪除 MongoDB,甚至 macOS 包管理器 Homebrew 也因為協議問題移除了 MongoDB

同時被點名的雲廠商中的代表 AWS 隨後推出了一個與 MongoDB API 相容的新資料庫產品 DocumentDB,並將其描述為“一個快速、可擴充套件且高度可用的文件資料庫,旨在與你現有的 MongoDB 應用和工具相容”。這擺明了是對 MongoDB 的反擊。

為什麼單拉 MongoDB 出來講呢?因為事情發展到今年,MongoDB 其實成為了跑在開源與雲廠商鬥爭最前線的一個衛士,在它的佇列中,先後出現了其它知名開源專案的身影:

  • 十分流行的圖資料庫 Neo4j 宣佈,從 Neo4j 3.5 版本開始,企業版僅在商業許可下提供,不再提供原始碼
  • Confluent 宣佈修改其平臺部分元件的開源協議,從 Apache 2.0 切換到 Confluent Community License,新的協議不允許將專案原始碼作為 SaaS 產品提供給使用者。其背後是知名的流處理平臺 Kafka 的團隊,並且此次協議修改影響到 KSQL
  • Redis Labs 的一些模組在半年內相繼從 AGPL 變更為 Commons Clause 和 Apache 2.0 組合的開源協議(Apache2 modified with Commons Clause),又變為 Redis 原始碼可用協議(Redis Source Available License,RSAL),RSAL 要求原始碼不能整合到資料庫產品、快取引擎、流處理引擎、搜尋引擎、索引引擎或者機器學習/深度學習/AI 服務引擎。
  • Cockroach 對核心原始碼的開源協議進行修改,從原本的 Apache-2.0 協議修改為 BSL(Bussiness Source License),該協議要求使用者唯一不能做的是在沒有取得授權的情況下以商業形式用 CockroachDB 提供資料庫即服務(DBaaS)。
  • ……

這些專案陸續修改開源協議甚至直接閉源,都直接把原因指向了雲廠商將其能力直接作為一種雲環境下的服務賺大錢,而不回饋開源社群。它們不願意眼睜睜看著雲廠商坐收漁翁之利。

當前站在這場開源界與雲廠商混戰中最前線的正是 MongoDB,它成了典型代表。

且不說各個 Linux 發行版與工具將它列入黑名單的“英勇就義”,也不說與 AWS 交鋒的幾個來回,就看在開源界大佬們也紛紛發聲來譴責 MongeDB 等開源專案針對雲廠商修改協議的這種行為,許多人認為它是輸家時,MongoDB 正面剛了。

MongoDB CEO Dev Ittycheria 認為不必在意這些看法,他說:“從那以後,我們的業務增長得更快。這沒有任何影響,它隻影響那些可能在考慮使用我們的免費版本,並將其作為託管服務提供給第三方的人。”這似乎就是要與雲廠商鬥到底的架勢。

同時 Dev 還直言 MongoDB 開源並不是為了獲得幫助,使產品更好,而是作為免費增值策略,以推動採用。

不管是為了什麼,開源最終還是需要有一個可持續的方式來維持,簡單來講,至少需要可以維持專案正常運營的金錢,而一旦開源專案走了商業化發展道路,那麼商場自然也有商場的規則,對於專案所賺錢財的多少則會更加看重,這是開源與雲廠商鬥爭中開源這一方的利益關切。(又或者前邊提到的開源專案其實也有利益不相關,純粹看不慣雲廠商的操作的?)

另一邊,這些被“針對”的雲廠商不願意放棄那一種從開源中得到的精妙的獲利方式,不願意放棄這筆優質的收入。

開源與雲廠商利益關切本質上不同,並且看起來目前沒有較為理想的解決方案;關於誰是誰非的觀點其實也明顯地分化成了兩派——一方面是因為對協議的理解不同,一方面似乎是協議本身不完備,沒有明確處理這種案例的內容;同時在這之間還不斷有人加入戰局,讓局勢不斷往高潮上發展。

因此我們認為開源與雲廠商的混戰還將不斷惡化下去,最終收場可能需要倒逼到“開源最上游組織”去重新修改相關約定。

注:這裡說“開源最上游組織”而不說 OSI(Open Source Initiative,開源促進會,定義“開源”與認證開源協議的組織),其實是因為本身華為的事件讓人們開始思考開源國界與本質等相關問題,那麼最終我們是否需要、會不會重頭來過,重新規劃開源的這畝田地呢?我們甚至連最終會不會存在一個“開源組織”形態都不能斷言。

其它引起熱議的相關內容

小結

不管是華為還是微軟,其實公司開源背後的想法都可能不那麼“極客”,是不是被動/主動通過開源去建設生態,是不是通過開源最終想要分到一杯什麼樣的八寶粥只有它們自己知道。MongoDB 或許只是勇於把真實想法說出來而已,這反而能讓人敬佩。

在將這幾個代表性公司今年在開源方面的情況梳理了一番之後,回過頭來看,這一篇咱們從中美貿易摩擦開始講到了華為的參與開源,而為什麼中美貿易可以影響到開源呢?這其實引發了我們很多思考:開源有沒有國界?參與開源是可取的嗎?開源的法律問題怎麼認定……“華為事件”其實代表了我們關於“開源到底該是怎樣的?”的迷思。

而勾勒“微軟的野望”則是對開源本質的探討;MongoDB 與雲廠商之間的鬥爭則讓我們看到了開源生存的困局和處於商業市場下的衝突。

這些話題全部雜湊成一鍋——關於開源的思考,這個話題