FreeBSD大败局
文?| 肖瀅&lola
策劃 | lola
出品 | OSC開源社區(ID:oschina2013)
看過上一篇文章《還有人記得 Linux 之前,那個理想又驕傲的 BSD 嗎?》的讀者都知道, BSD 是 Unix 最重要的一個開源分支,這一本該坐上“開源頭把交椅”的操作系統家族承受了一場足以記載史冊的浩劫。
時間倒回三十年前。1993 年,那時候 BSD 正處于水深火熱,Linux 剛誕生沒多久,Meta 雜志?問 Linus Torvalds:能不能推測一下 Linux 在市場上對 Unix 的影響?當時,Linus 的回答是:
I have gotten various mails and seen some newsgroup messages about persons who have switched over already or would like to switch over once Linux is able to run commercial binaries, but at least so far, I doubt Linux has dented the real Unix market very much.
盡管我已經看到一些人已經或者想要切換到 Linux,用于運行商業二進制文件。但目前為止,我不認為 Linux 已經嚴重削弱了 Unix 的市場。
彼時,Linux 初出茅廬,盡管鋒芒畢露,但誰也不知道以后到底會發生什么。須臾三十年,形勢調轉,Linux 現在的地位有目共睹。
另一邊,BSD “災后重建”且大受歡迎的 386BSD 因為內部意見不同出現問題,其中三個補丁包協調員 Nate Williams、Rod Grimes 和 Jordan Hubbard 另起爐灶,于 1993 年創建了 FreeBSD。盡管還有 NetBSD 和 OpenBSD,但后來的事實證明,FreeBSD 發展最好、走得最遠,是 BSD 世界里的“扛把子”。
在之后的日子里,FreeBSD 沒能重現 BSD 的往日榮光,反而一直生活在 Linux 的陰影之下。“Linuxism”?成為 FreeBSD 內部常常掛在嘴邊的一個詞,其中透露出酸酸的比較之味。
一方面,FreeBSD 堅定地沿襲 Unix 的一些傳統,堅決地想要與 GNU/Linux 保持距離;另一方面,FreeBSD 也在積極地尋求更長足的發展,想要至少在某些方面保持優勢。
?世事如棋局,得勢者得天下。以勢定奪,怎么看 FreeBSD 領到的劇本都是一個“大敗局”。
01、成也 BSDL,敗也 BSDL
正是我們的許可證,使得我們獨一無二。與 GPL 尤其是 GPLv3 相比,BSDL(BSD 許可證)對很多廠商來說是非常重要的。
2021 年 3 月,FreeBSD 13.0 版本最新發布。在一場采訪中,FreeBSD 內核開發者 John Baldwin 如是說。
他說得沒錯。許可證是 BSD 一族與 GNU/Linux 最顯著的不同,它彰顯了 FreeBSD 所繼承的、與 RMS 提倡的?“Free”?完全不同的?“Libre”?哲學態度,使得以 FreeBSD 為代表的這些開源軟件自成一派。
在 GNU 理念里,軟件本該自由,專有軟件不應該存在。因此,GPL 被設計得具有傳染性,并且要求所有修改后的代碼都要返回上游,當初 Linus 選擇 GPL 正是看重后面這一點。而 BSDL 則更接近于“公共領域”(公共領域的作品屬于公有文化遺產,任何人可以不受限制地使用和加工它們),幾乎給了使用者最大權限的自由,不但可以自由地使用、修改源代碼,不需要返回任何修改,還可以將修改后的代碼作為開源或者專有軟件再發布。
我們并不認可 GPL,它是一種政治宣言。我們想要將我們的許可證與政治分開。GPL 會嚇跑很多潛在用戶,這只會適得其反。
—— FreeBSD 創建者之一 Jordan Hubbard
因此,在之后的實踐中 FreeBSD 也在竭力與 GPL 劃清界限。多年來,FreeBSD 一直致力于刪除基礎設施中的 GPL 軟件,以便“遷移到現代的、CopyFree 以及許可更寬松的組件”。比如:用 LLVM 的 LLDB 替代 GDB 調試器、使用 BSDgrep 替代 GNUgrep,以及刪除 libgnuregex 等等。(其中,FreeBSD 為了完成向 LLVM 的遷移,花費了十年左右的時間,因為 LLVM 是在 Apache 2.0 下獲得許可,限制比 GPL 更少。)
FreeBSD 的這種身份主張無可厚非,但從現實層面來考量這兩個許可證,就是另一碼事了。
阮一峰老師在《為什么 GPL 是更好的開源許可證?》一文中作了邏輯闡述:
當程序員放棄代碼的版權,或者選擇 BSD 許可證,他可能認為自己做出了世界上最無私的行為。很大程度上,事實確實如此。但是,我們要知道,這個世界是一個商業利益占主導的世界。一旦發生像甲骨文擁有 MySQL 這一類的事情,你的代碼的價值將大大削弱,大公司先是免費利用它們,然后再設法推出取代它們的私有產品。你以為自己奉獻了愛心,但是實質上變成了為大公司無償打工。
從這個角度看,GPL是更好的開源許可證。它保證了自由始終是自由,既無法被剝奪,也不是一種圈套或陷阱。?
FreeBSD 的貢獻者就常常被調侃為 Apple 公司的無薪員工。Apple 將社區工作都納入了 FreeBSD,在其基礎上進行了一些更改,就變成了一個專有的、非自由的操作系統。
糟糕的是,Apple 還對內核和其他部分進行了分叉,并將其命名為 Darwin,這一系統基本就遠離了 FreeBSD 的傳統。而且,由于 Apple 支付了版稅,他們可以合法地將其稱為 Unix,但這筆錢也沒有流向 FreeBSD。
更過分的是,相較于 Netflix 等,同樣是 FreeBSD 受益者,Apple 為上游做貢獻的積極性也不足(因為 BSDL,貢獻上游這事就全憑自覺了)。但 FreeBSD 的人對此倒也看得開:“我不會因此而責怪他們。FreeBSD 是一個 BSD 許可的項目,而不是 GPL。”John Baldwin 表示。
BSD 許可證就是一個復制中心,可以為所欲為,但我們不在乎。
—— Marshall Kirk McKusick?,他親身參與了 4.3BSD 和 4.4BSD 的開發和發行,后來又深度參與了 FreeBSD
因為 GPL,這種事永遠不會發生在 Linux 身上。在 GPL 許可下,任何人都可以使用 Linux,但是有一個強制要求,如果修改后的版本要出售或者提供給他人,則必須根據相同的 GPL 許可把完整源代碼對外發布。如此一來,GPL 可以確保 Linux 永遠不會成為專有產品,所有開發者做出的貢獻最終會回到社區,Linux 可以得到更好的發展。
在 Linus 眼里,GPL 就是他想要的,而不是 BSDL。
許可證是 Linux 成功的決定性因素之一,因為它強制你必須回饋。如果你真的想創造更大的東西,如果你想圍繞它創建一個社區,BSD 許可證不一定是很好的許可證。它(BSDL)會讓開發人員覺得大公司在利用他們的工作。
02、 “好東西都給 Linux 了”
Linux 趕上了好時候。
Internet 開始風行之際,Linux 的開發者及愛好者正好能透過 Internet 實時地發布新聞、想法、提問、討論、遞送程序代碼及進行錯誤回報。這種由 Internet 連接起來的分布式合作方式帶給了 Linux 驚人的活力。這種生命力直接將 Linux 送上了可以與 BSD 分庭抗禮的位置。
與此同時,在 Linux 現身之時,剛好是人們開始買得起個人計算機時。那是還沒從訴訟中緩過勁的 BSD 對于當時的個人計算機所使用的 80386 硬件的支持度非常不好,Linux 幾乎成為當時大眾的第一選擇。這一波路人緣,Linux 收割得很漂亮。
BSD 缺位,Linux 趁機發展,剛從灰燼里重生的 FreeBSD 碰上的局面就很殘酷:Linux 占據主導地位之后,已經形成馬太效應,之后的態勢呈現出強者愈強、弱者愈弱的趨勢。?
硬件方面,Linux 可以在許多不同的平臺上運行,而 FreeBSD 則不行。硬件設備制造商更愿意為 Windows、Linux 等主流的操作系統提供驅動程序,IBM、戴爾和惠普直接支持在其服務器上運行 Linux,但處于主流之外的 FreeBSD 可能不在它們的考慮范圍內。
此外,Linux 的開發者數量比 FreeBSD 多出數倍,這意味著 Linux 擁有更多的貢獻者和測試新硬件的機會。長期下來,最終導致 FreeBSD 的兼容性和硬件支持遠遠不如 Linux。比如,用戶需要定期更新圖形驅動程序,Linux 可以更早、更快地提供支持。
軟件上,Linux 軟件包存儲庫的數量遠超過 FreeBSD ,具有更大的靈活性和可用性,雖然 FreeBSD 也提供了預編譯的軟件包,但它仍然無法與 Linux 可用的資源進行比較。其實,這都是互為因果關系的 —— 因為 FreeBSD 市占率比 Linux 低多了,開發者少,很多軟件對其的支持度就不如 Linux,這又反過來加劇了其市占率的下降 —— 一個死循環。
有人評論很是貼切:“所有的好東西都給了 Linux”。
看著 FreeBSD 如今的現狀,用戶都著急了。2020 年 3 月,一些用戶開始在推特上催促 FreeBSD 基金會盡快贊助 FreeBSD,以推進對 802.11ac 支持的開發工作。要知道這個時候, Windows 和 Linux 都提供了對 802.11ac("WiFi 5")的良好支持,并且已經開始將重心放在 802.11ax ("WiFi 6")上了。
當時面對呼吁, FreeBSD 基金會進行回復的截圖
03、FreeBSD 沒有商業布局
Linux 內核是個操作系統“半成品”,企業支持的重要性不言而喻。支持 Linux 的著名企業有 RedHat 、SUSE、IBM 、Canonical 等等,它們不僅貢獻了許多實用性很強的發行版,如 Fedora、Ubuntu、Arch Linux、Debian、Linux Mint 等,同時確保操作系統實現快速更新。
有人認為,?RedHat 是 Linux 快速進入商用市場的關鍵性因素之一。因為對于大型企業而言,或許授權費用的多寡并不是重點,他們要的是能夠說服上司及股東的解決方案。透過 RedHat 所提供的技術支持,信息部門有了底氣將 Linux 列入解決方案之中。
這項優勢幾乎是 FreeBSD 所難以匹敵的,因為 FreeBSD 幾乎沒有商業支持。
開箱即用的 FreeBSD 提供了用于強化系統的選項
因為缺乏商業公司運作的商業版本,為 FreeBSD 提供支持的企業屈指可數,沒有大量企業為終端用戶提供大規模的技術和服務支持。
在 FreeBSD 13 發行之后的那場采訪中,當被問及商業模式問題時,John Baldwin 這樣回答:
有很多來自像 Netflix 這樣的公司,內部會有FreeBSD 專家團隊開發功能,這些工作直接進入上游 FreeBSD。還有一些資源來自學術和業余愛好者。最近越來越多的工作由 FreeBSD 基金會承擔,基金會接受捐贈資助。
可以看出,一些接受了 FreeBSD 恩惠的企業的確在以某種方式去推動 FreeBSD 的生態發展,但與 Linux 所得到的商業支持,完全不能相提并論。
就像有人說得那樣:“盡管 Netflix、Apple 和 Juniper Networks 等公司都在支持 FreeBSD,但它們并沒有像 Canonical 和 RedHat 等公司那樣投資它,共榮共生的傳奇只發生在了 Linux 上?。”
04、 “大獨裁者”未必是壞事
One of the major problems with 386BSD seems to be the lack of co-ordination: that may sound weird coming from the Linux background, but in fact the 386BSD project seems to suffer from a lot of people working on the same thing due to the long release cycle.
The NetBSD project may be a step in the right direction, but I think 386BSD has been hurt by the way it has been developed.
386BSD 的主要問題之一似乎是缺乏協調管理:盡管我以 Linux 的角度和身份來看很奇怪,但事實就是這樣,因為較長的發布周期,386BSD 里大量的人都在做同一件事情。
NetBSD 可能走對了方向,但是 386BSD 已經因為這種開發方式受到了傷害。
1993 年,Linus 一語成讖。很快,386BSD 分裂成為 FreeBSD 和 NetBSD。
當時有人總結到:“BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神。” Linus 是著名的獨裁,而 BSD 對“獨裁者模式”的嗤之以鼻是一以貫之的。
有一個古老的笑話是這樣的:如果你把 10 個 BSD 開發人員鎖在一個房間里,當你打開門時,你會發現比薩餅不見了,BSD 開發人員死了,還有 11 個 BSD 的新變種。
雖然有點自負,但我認為只要我愿意充當傀儡,我本可以阻止社區分裂。當時我在那個位置上已經 10 多年了,我覺得是時候將衣缽傳給他人了。老實說,我沒想到會這樣(指分裂),我以為會出現很多不同發行版而已。
McKusick 曾這樣表示。在他看來,Linux 的獨裁者模式一樣不可取,一旦 Linus Torvalds 離開,就會釀成災難,Linus 在試圖創造超越他自身的一些東西,而“如果我被公共汽車撞了, BSD 不會真正受到太大影響。”
這樣左派又帶點傲氣的觀點,真是典型的 BSD 的啊。而 FreeBSD 之后出現的管理和開發方式問題,多多少少也帶了一些遺傳在身上。
?
從開發過程上看,FreeBSD 與 Linux 最大的不同就是 ——?沒有一個大獨裁者。
FreeBSD 有一個核心團隊,相當于公司里的董事會,他們通過授予、撤銷修改、提交新代碼到代碼庫等權利來控制訪問,其首要任務是確保整個項目處于良好狀態并朝著正確的方向前進,并每 2 年選舉一次。
“我們主要用郵件列表進行協作,這與 Linux 內核郵件列表相同。但是,FreeBSD 基礎系統是一個單一的存儲庫,內核、C 庫以及工具鏈,所有基礎系統實用程序,如 ls 和 shell,都在一個單一的存儲庫中,一起構建和發布。” FreeBSD 基金會項目開發總監 Ed Maste 在 2021 年表示。
這種“核心小組”型的模式最大的缺點就是很難達成共識,從而延誤時機。FreeBSD 核心團隊成員 Benno Rice 就曾探討過這個問題:
開發項目的源代碼是其核心資產,必須妥善保管。所以項目需要一個源代碼管理系統。最初,FreeBSD 使用 CVS,這在當時是一個合理的選擇,但直到 2008 年 FreeBSD 還在使用 CVS。為什么呢?因為大家對于應該用什么來代替它沒有達成共識。考慮過BitKeeper、Git 和 Mercurial,最后都無疾而終了。
很多社區都會反復出現長期的爭論,FreeBSD 也不例外。2008 年,經過八年的爭論,Peter Wemm 強行推進了向 Subversion 的轉換;從那以后,抱怨聲相對較少了。
相比之下,Python 從 CVS 開始,2004 年轉移到 Subversion,2009 年轉移到 Mercurial,現在又轉移到 GitHub。在 Python 社區中,一旦 PEP 獲得批準,就可以繼續進行了,而 FreeBSD 沒有這樣的機制。
而 Python 社區,又是另一個以獨裁者領導而著稱的項目。
其實,“核心小組”模式并非只有 FreeBSD 一家,GNU 項目 、Apache Web 等也都采用這種模式。但很明顯,FreeBSD 的這個核心團隊,并沒有做好這份工作。
比如著名的“ Matthew Dillon 事件”(下文會詳細說),他們不但沒有及時引進相應的行為準則來規范大家的行為,更是對開發者互相掐架、成員參與“Gamergate”在線騷擾活動等惡劣行為無能為力。又比如,因為缺少保證質量代碼的審查流程,他們還差點讓 4 萬行有缺陷的代碼混入 FreeBSD 內核里。
05、 “FreeBSD 不會再年輕了”
LWN 是這么評價 FreeBSD 的:
這是一個偉大的項目,但它確實存在一些問題,特別是三點:FreeBSD 很大,它很舊,而且它行動遲緩。FreeBSD 不會變得更年輕了,它難以改變一些根深蒂固的態度。
的確,從 1993 年 11 月開始,FreeBSD 出生就自帶故事,而且它基于的代碼非常古老。Benno Rice 說,直到 2017 年 FreeBSD 開發人員才發現自動化測試,而要進行自動化測試,軟件必須具有正確的結構,但 FreeBSD 這個“老家伙”并不具備。因此,當他在一場活動中看到 Rust 社區有關自動化的演講時,他就在想:為什么 FreeBSD 不能有這么好的東西?
不光是古老,FreeBSD 還失去了活力。
FreeBSD 聯合創始人 Jordan Hubbard 曾經是社區最為活躍的核心人物之一,2001 年他離開了 FreeBSD 社區,去了 Apple 公司,幫 Apple 搗鼓 Darwin。在他的辭職信中,他這么說:
Another reason, and I hate to say this but it probably needs saying, is that being in core is honestly not what it once was. For a old-timer like myself, who was used to a core team that was far more cohesive and generally on the same page, it's simply a painful experience a lot of the time.
Perhaps this is due to overly rose-colored recollections of the old core on my part, and I do certainly recall us having more than our share of disagreement and inefficiency in the past, but on the balance core still feels too much like the pre-WWII Polish Parliment sometimes, where we're fully capable of arguing some issue right up to the point where tanks are rolling through the front door and rendering the whole debate somewhat moot.
還有一些原因,我本不想但不得不說,老實說核心團隊已經不像從前了。作為一個老前輩,我習慣了那樣的核心團隊:更加團結且大家都是一條心,一起經歷了許多艱難的日子。
或許是我對舊時光的濾鏡太重了,在回憶里我們過去的確有更多的分歧和低效,我們的核心團隊實在太“反應遲鈍”了(這里用了一個典故,二戰時德國都已進入波蘭,而波蘭國會還在商討對策)。我們完全有能力解決問題,但就是這樣:坦克都已經在門前了,一切辯論都毫無意義了。
?
Jordan Hubbard?
在這副古老的身軀上,當我們掀開 FreeBSD 那襲表面華麗的裘衣,又會赫然發現上面還爬有一些不那么體面的虱子和臭蟲。在圈子里,總是會有一些有關 FreeBSD 的“小差評”:
FreeBSD 是一個很棒的操作系統,但 FreeBSD 論壇是我見過的最刻薄的論壇之一。有人在里面尋求幫助卻被貶低,并讓其滾回到 Linux 社區。
FreeBSD 論壇成員都是 FreeBSD 的狂熱分子,當話題涉及到在 FreeBSD 作用不大的組件時,就會被攻擊為“Linuxism”。
BSD 論壇一點也不友好。不要在那里問,他們只會讓你去閱讀手冊。你只能靠自己。
在 FreeBSD 論壇尋求幫助,得到的回復往往都是:一定是你做錯了,因為 FreeBSD 永遠不會錯。
當然,人無完人,每個社區都會有這樣那樣的差評,這些差評或許并不能說明些什么,但是當一些群體性事件爆發出來,FreeBSD 在文化和風氣上的短板就暴露無疑了。
其中最著名的就是前文曾提及的“Matthew Dillon 事件”。Matthew Dillon 是 1994 年就加入 FreeBSD 的明星成員。之所以說他是明星,是因為這哥們確實實力過硬,但不合適團隊合作,不怎么在乎別人的辛苦成果,是個“Rock-star”式的人物。
當初還在更新 FreeBSD 5 (現在都已經 13 了)的時候,Dillon 想打破 FreeBSD 里一個很大的內核鎖,John Baldwin 也想過,于是倆人就一起干了。不出意料,兩人在關鍵部分出現了分歧,Dillon 一意孤行地提交了更改。這引發了非常激烈的爭論,在長達一個月的爭吵之后,Dillon 退步了,核心團隊取消了他的提交權限,他最終也離開了 FreeBSD。
這不是 FreeBSD 里的孤例,還有很多類似的事件發生過。而這件事直接引起了 FreeBSD 核心團隊的反思:如果 FreeBSD 當時有既定的行為準則,會不會得到更好地處理呢?
Dillon 走后,Gamergate 事件直接促成了 FreeBSD 的行動。簡單來說,Gamergate 是一個與性別政治有關的運動,最開始是一個已經離開的 FreeBSD 成員寫了一個 Perl 腳本來阻止 Gamergate 參與者的活動,并惹怒了那批人,使得 FreeBSD 惹火上身;再后來又有 FreeBSD 成員加入 Gamergate 并開始在 Twitter 上攻擊那個前成員,這下完全把 FreeBSD 拖下了水。
這一事件不僅引起了激烈的討論,攻擊者隨后還將對話日志泄露給了 Breitbart,核心團隊別無選擇,只能參與進來。
2018 年, FreeBSD 確立了社區行為準則(Code of Conduct,CoC),這一準則從 LLVM 衍生而來,要求社區開發者友好耐心、熱情好客、體貼、相互尊敬、對他人友善、注意不要亂說話、持不同見解時多換位思考。
這是一項“修補的緊急工作”,我們最初仍然誠實地認為“精英”意味著“包容”。從那以后,我們學到了很多其他東西。
—— Benno Rice
06、結語
2022 年 1 月,FreeBSD ?基金會制定了一份時間跨度近 5 年的技術路線圖,決定從面向終端用戶的改進(特指筆記本和臺式機)、商用服務器、工具和應用和虛擬化和容器 4 個方面為重點,以擴大和增強技術團隊的實力。
這份藍圖代表 FreeBSD 仍在努力朝更好的方向進發,正如 Jordan Hubbard 所說的那樣,現在的 FreeBSD 應該是年輕人的天下,這樣才會更具活力。
早在 1990 年代我就用過 FreeBSD,當時我沒什么錢,住在政府為低收入者提供的房子里,是 FreeBSD 幫助我擺脫了貧困 —— 在雅虎找到工作是因為我會用 FreeBSD,而 WhatsApp 也是用 FreeBSD 服務器為數以億計的用戶提供服務。? ??
—— WhatsApp 聯合創始人兼 CEO Jan Koum
不管 FreeBSD 這盤棋下得多么艱難、多么不得勢,但它給世界帶來的一切是如此精彩。
覺得不錯,請點個在看呀
總結
以上是生活随笔為你收集整理的FreeBSD大败局的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#导入导出.CSV文件
- 下一篇: .NET遗留应用改造——性能优化篇