這是高性能分散式 SQL 查詢引擎 PrestoSQL(Trino)與 Meta 的故事。
在大廠工作,是很多人畢業後的理想選擇。但有人卻選擇離開,他們是出於哪些考慮呢?本文將為大家講述一群人離開 Meta、投身開放社區的歷程(以第一人稱講述)。
離開 Meta 是我們做過最輕鬆的決定之一,這聽起來可能讓人覺得驚訝。很多討論離開 FAANG(即 Meta、亞馬遜、蘋果、網飛和谷歌等五家科技巨頭的合稱)的帖子都大書特書豐厚資金或工作聲望。對於我們來說,我們在 Mata 啟動了 Presto 項目,並清楚該項目很快可以超出 Meta 的範疇,並解決分析領域的更多問題。當時,我們沒料到 Presto(用於大資料分析的分散式 SQL 查詢引擎)會被全球數千家公司和絕大多數行業採用。
我們非常感激 Meta 這個啟動平臺,激勵了其他人採用 Presto。儘管開局很和諧,但當社區與 Meta 的需求不再一致時,我們不得不選擇離開。

Presto 的創始大佬們。
人們組成了社區,而不止公司
在創建 Presto 的時候,我們很清楚它需要開源。Presto 項目開始於 2012 年,就在 Mata IPO 之前。當時,Meta 的公司文化非常有益於啟動一個開源項目。Meta 彼時正致力於開放計算項目(Open Compute Project),並最終顛覆了硬體行業。我們同樣希望通過 Presto 項目實現類似的影響。
因此,我們說服並獲得了前 Meta 基礎設施副總裁 Jay Parikh(2021 年加入 Lacework 擔任 Co-CEO),將 Presto 作為開源項目發佈。這是我們一開始就想要做的事情。我們曾經與開源項目合作,並相信最成功的項目都是開源的。

項目地址:https://github.com/prestodb/presto
讓其他人和其他公司參與進來會使項目更健康地發展。你最終創建的項目不只是滿足自身需求,還能滿足任何其他人的需求。然後反過來,你也會從中受益。我們親自聯繫了來自 Airbnb、Dropbox、Netflix 和 LinkedIn 等公司的人,讓他們參與進來,所有這些都源於我們想要構建一個真正的社區。我們讓這些公司對 Presto 進行了 beta 測試,所以當我們發佈 Presto 時,它們發現的問題已經得到了解決。
重要的是理解為什麼這樣做有助於真正抓住開源背後的理念。實際上,當我們說讓更多公司參與進來的時候,我們的確這樣做了。但更重要的是,我們讓更多的人參與了進來。技術圈子的人熱衷於解決技術問題,公司熱衷於解決有利於董事會、投資人和客戶的問題。工程師、分析師和科學家熱衷於解決的問題與公司需要解決的問題常常出現重合,但又無法永遠保證重合。
此外,公司的利益很容易受到公司成長、IPO、收購、方向轉變以及一般政治和文化變革等多因素的影響。隨著人們開始將更多的時間和精力投入到一個項目中,他們的個人身份與項目的成功聯繫在一起。對於公司而言,只需要一小部分處於適當位置的人就能決定一個項目不再與公司的發展方向或目標保持一致。
需要明確的是,我們並不是說當一家公司轉變發展方向是一件壞事。這是商業的本質,企業的參與也是開源保持健康的重要組成部分。然而,對於我們來說,使項目長久並對使用該項目的所有人有益的核心在於構建系統並對問題空間(problem space)感興趣的人。
所以,接下來講一講 Meta 發生了什麼事情並導致了我們的離開。
我們為什麼離開 Meta
隨著 Presto 成為 Meta 重要項目的核心基礎設施,它吸引了很多內部工程師和經理的注意,他們也希望參與到項目之中。這是一個項目成功的重要信號,但他們中的很多人並沒有對開源社區做出承諾。這也成了很多衝突的源頭,參與開源意味著花費大量時間和精力,並且我們奉行了嚴格的「一視同仁」策略。這意味著每個人的程式碼都需要審查,並且僅僅因為你為 Meta 工作,你仍必須獲得提交權。Meta 的工程師具有極大的動力去開展卓越的工作以在公司取得進步,但額外投身於 Presto 的開源工作減緩了他們的進步。
這些工程師的反饋最終促使經理做出決定:為所有在 Presto 項目工作的 Meta 工程師提供了自動貢獻者許可權,從而使他們更快地行動。
在這樣的情形下,你也許認為 Meta 的工程師或經理是「大灰狼」,但事實並非如此。在 Meta 等這些競爭激烈的公司中,工程師必須創造出令人難忘的工作,否則他們就無法得到晉升。如果你是一位初級工程師並且沒有獲得晉升,那麼等待你的只有被解僱。公司領導者也有權改變他們為開源項目分配資源的方式。這些在本質上都沒有錯,問題是這樣做改變了我們保持開源社區中立所做的承諾,並與我們想要建立一個健康、開放社區的願景背道而馳。
那時,我們知道如果想要始終讓社區的利益保持在前面以維持健康發展,就必須通過開源項目分支的方式發展新項目,即 PrestoSQL。然而,我們在當時犯了一個最大的錯誤,沒有將項目名稱脫離 Presto。
2018 年,我們最終離開了 Meta。2019 年 1 月,我們成立了 Presto 軟體基金會,它是一個非盈利性組織,致力於推動 PrestoSQL 查詢引擎的開源工作。該基金會由我們三位創作者 Martin Traverso、Dain Sundstrom 和 David Phillips 領導。
這時,Meta 維護的 PrestoDB 和我們維護的 PrestoSQL 並行發展。然而,令我們意想不到的是,Meta 後來竟然申請了 Presto 的商標,並於 2019 年 9 月將 PrestoDB 捐贈給了 Linux 基金會,並聯合Twitter、Uber 等成立了 Presto 基金會。
我們不得不面臨為 PrestoSQL 更名的事實,並於 2020 年 12 月底正式將 PrestoSQL 更名為 Trino。

Trino 官網:https://trino.io/
構建 Trino 社區
一個新項目想要獲得成功,最難的部分在於使用者的使用。由於 Presto 在 Meta 時就獲得了不錯的人氣,因此我們最開始不需要特別努力地開發社區。但離開之後,我們不得不以經典的「草根」方式構建新的社區。
我們走出去並開始與人交談,讓人們建立聯繫,做更多的推廣和活動。可以說,離開 Meta 讓我們充滿動力。這些對我們不多的人手來說的確有點繁重。雖然看到人們對自己的工作有反饋是很棒的事情,但你必須付出很多。不過,這也為提升成員的參與度提供了條件。
當我們將 PrestoSQL 更名為 Trino 後,再次加倍發展社區,並加速社區的參與。正因為如此,我們相信 Trino 社區會比以往任何時候都更強大。

PrestoDB 與 Trino 的 GitHub 標星增長曲線。
Trino 的版本發佈週期更短,遠遠超過了我們運行 Presto 時的速度。我們在 Trino 中推出了很多新的社區驅動的功能,比如支持容錯執行模式,改進時間戳支持、動態分區剪枝、多型表函數、高級窗口函數等。

從長遠看,個人驅動的開源項目往往要比公司驅動更能構建更健康的社區和生態系統。我們相信並踐行了這一理念。當我們從 Presto 這一發展 10 年之久的項目中走出來時,也獲益很多。我們將繼續努力工作,始終致力於顛覆分析行業並改善人們的生活。
原文連結:https://trino.io/blog/2022/08/02/leaving-facebook-meta-best-for-trino.html