軟件正在慢條斯理地吞噬世界,開源正在慢條斯理地吞噬軟件業。
軟件正在吞噬世界?是的,對于購物、吃飯、健身、交停車費都需要使用軟件的年代,對于平均每人每天都要花費5到6個小時使用手機軟件的年代,有什么理由不相信軟件正在吞噬整個世界呢。
開源正在吞噬軟件業?是的,因為在軟件越來越富裕的年代,不開源的軟件,最終是沒法和開源軟件競爭的。舉個簡單例子,如果有人要在很多個文件加密軟件中選擇一個使用,在功能和價格都差不多的情況下,選擇開源的還是閉源的?當然要選擇開源的,因為誰知道閉源的軟件中,會不會有后門?
開源的成功程度,或者說開源的滲透程度,從中國銀行業的廣泛采用就可以看出來,銀行作為一個在IT方面相當謹慎和保守的行業,在2012年之前對開源基本上不屑一顧,使用的基本上全是商業軟件,他們認為商業軟件更專業、質量更高、更可信賴、更有保障,他們中不少人視開源軟件為異類,對其功能、性能、安全性表示擔憂,最重要的是,他們擔心開源軟件出問題后找不到“原廠”解決問題和“承擔責任”。
然而就在2012年以后,銀行業逐漸增加了開源的使用比例,這里面有很多原因,最重要的一個原因是,在Linux面世20年后,很多開源軟件已經成為比商業軟件更好的存在,以至于咨詢商、集成商、開發商們在為銀行提供解決方案時,所拿出的最佳方案已經是基于開源的方案,銀行已經無力拒絕。比如,如今當一個銀行要建設其自用的云平臺時,在咨詢和調研一大圈下來,他幾乎一定會選擇基于openstack的方案,如果想使用容器技術,就幾乎一定會選擇容器編排軟件kubernetes,這時,已經顧不上有沒有“原廠”了,因為沒有太多更好的選擇了。
銀行雖然還在使用Vmware、Oracle、Websphere、Weblogic,但是KVM、Mysql、Apache、nginx的滲透已經越來越嚴重,多數銀行的Linux主機數量早已超過了Windows服務器,因為Linux早已成為整個世界的主流的服務器操作系統,而且還有像Redhat這樣的商業支持,為什么不使用呢?
據調查,各家銀行的IT部門,在最近5年內,已經不得不正面開源這種“新事物”給他們帶來的“問題”,因為對開源的引入、使用和運維,顯然和以往閉源軟件有明顯不同,他們開始寫出開源軟件使用管理辦法,并指定專門處室來負責管理。
而那些有先見之明的企業,早已組建了開源辦公室,早已把自己的整個系統建立在開源軟件之上,并且早已在開源世界投入了大量的資金和人員,毫無疑問,他們也早已從開源中獲得了巨大的收益。
那么,開源到底依靠什么,讓自己大獲成功?
本文分析了開源的7大理念,有助于讀者更好理解開源的本質要素,這些理念為“完全自主”、“高度開放”、“自發自治”、“自下而上”、“自由競爭”、“贏在聲譽”以及“社區賦能”。
完全自主
開源之所以能夠大行其道,是因為所有程序員都喜歡源碼。
這就是開源的原生動力。
黑客希望自己有完全自主和完全可控的世界,這和其他人沒有兩樣,但黑客有可能在計算機軟件領域實現這一點。
沒有源代碼就無法掌控世界嗎?是的,如果一個操作系統是閉源的,黑客在使用操作系統時遇到bug而無法修改,遇到需求而不被采納,試圖研究而無從下手,遇到壟斷、高價、霸王條款而無可奈何,哪里還談得上掌控世界。
再如,黑客寫程序,他希望有一個自己能夠控制或者是能讓自己放心的編輯器,不僅僅需要這個編輯器足夠好用,而且最好不會有后續的麻煩,比如不會有license的麻煩,不會有廠商停止服務的麻煩。黑客希望這個編輯器能盡在掌握之中,遇到bug,自己或者有人能將其修復,一些想要的功能,自己或者有人能將其實現,而且最好是,自己怎么折騰這個軟件,也不會陷入法律方面的麻煩。
也就是說,黑客喜歡在一個無拘無束的、自由自在的環境下,干自己喜歡做的事,這是多么美妙!
黑客想要開源的操作系統,想要開源的編輯器,還想要開源的編譯器、開源的瀏覽器、開源的數據庫、開源的webserver、開源的云環境、開源的虛擬機軟件、開源的大數據工具、開源的人工智能軟件。。。總之,如果一切都開源了,這就是黑客感覺最自由和最自主的環境,這就是黑客的理想。
如果很多人都有這樣的需求,而又有人能把它實現,那這件事就必然會發生。
人類社會是很有意思的,一些人的需求,會成為另一些人的動力,當程序員們渴望源碼的時候,自然就會有黑客奉上自己精心打造的源碼,不管他們是否意識到,在所有的需求滿足背后,都暗藏著豐厚的回報。
當黑客們想要開源操作系統的時候,Tanenbaum帶著MINIX出現了,當人們希望它有更多的特性時,Linus拿出了Linux,當人們需要webserver時,NCSA拿出了Apache,作者一開始開源自己的代碼時,并沒有想太多,可能僅僅就是想說:“兄弟們,看看我寫的這個東西怎么樣?你們試試用一下?有啥問題,或者有什么新想法,歡迎給我發郵件!”時至今日,在企業越來越多主導開源的年代里,這種原始的動機仍然存在,前段時間開源的TDengine,其主要作者陶建輝在文章中寫道:
450萬枚LINK從未知錢包轉移到Binance:金色財經報道,據Whale Alert監測,4,499,999枚LINK(23,925,538 美元)從未知錢包轉移到Binance。[2023/6/17 21:43:16]
“要是有程序員仔細研究我們源碼,看我們是怎么做到的,我會特別的開心。要是有程序員能把我這套方法借鑒過去,把他現在臃腫的系統大幅裁剪,把性能大幅提升,那我更會心花怒放。昨天有人在微信群里告訴我,說RPC模塊寫的高效簡潔,準備采納,真讓我有點得意忘形。”
“兩年多的時間,近二十萬行代碼,放在了GitHub上。好多朋友關切的問我,開源怎么贏利?拋開開源的商業模式不提,我想,只要我們開源的代碼真正創造了價值,有人用,那我和團隊就是最大的贏家。如果30年后,還有人在用TDengine,哪怕只是其中一個模塊,其中一個函數,那就是對我們兩年多日夜奮戰的最大肯定,就是給我這個程序員的最大回報。”
“如果你發現什么問題,我只會高興,不睡覺都想盡快去解決它。如果喜歡,更歡迎參與到我們這個項目中來。五年之內,世界上90%以上的數據都將是物聯網采集的數據,如果我們一起開發出一個極為高效的數據處理引擎來處理這些數據,而且為全球開發者所使用,你是貢獻者之一,那是一個多么自豪的事情。”
就這樣,在需求和供應的動力下,開源從底層的操作系統開始,充滿了整個開發環境和中間件,一直到最上層應用,只要是人們想要的東西,黑客就會把它們實現,如果有一樣東西還沒有開源,那一定還不是黑客很想要的東西,或者是,他們認為這個東西沒有必要開源。
所以,我們看到,操作系統Linux、Android;編輯器Vim、Emacs、Atom、Brackets、VScode,版本管理系統SVN、Git;數據庫MySQL、MongoDB、Redis、Postgres;大數據平臺Hadoop、Elasticsearch、Hbase、Spark;Web服務器Apache、Nginx、Node.js、Tomcat;DevOps工具Jenkins、Maven、Ansible、Chef;虛擬化軟件KVM、Xen、Docker、Kubernetes,如雨后春筍般應運而生,這些列出的和沒有列出的開源軟件,形成了一個完整的軟件生態環境,黑客們已經生活在一個很幸福的時代,他幾乎是想要什么就有什么,而幾乎在所有的IT企業和大型非IT企業里,你都能看到這些開源軟件的身影。
看到這里,你可能會有所明白,開源,其實是程序員送給程序員的禮物。
因為真正需要源碼的人,是程序員,真正能寫出源碼的人,也是程序員。
高度開放
對軟件而言,源碼都開放了,還有什么不能開放?
這要看情況,軟件開放到什么程度,完全取決于其許可證。
最開放的情況莫過于“任何人能干任何事”,也即沒有任何事情可以阻止人們運行該產品,獲取其源碼、復制其源碼、修改其源碼,推進其向不同方向演進,并聲稱是該產品。
這可是太過開放了,以至于拿到他人源碼后,“克隆”或者“山寨”出一個產品將沒有任何法律層面的壓力,為什么開源會開放到如此地步?
一方面,在源碼已經開放的前提下,你事實上很難阻止別人克隆、修改你的代碼并換個名字發布。雖然程序員通常不會這么做,但他們不愿意有限制,在一個普遍寬松的環境下,如果你限制太多,程序員就不太會參與你的項目。
另一方面,這是一個鼓勵充分競爭的世界,如果黑客們就項目的方向產生分歧,而又無法達成一致,異見者就可以分叉出來自立門戶。比如,EGCS分叉自GCC,OpenSSH脫胎于走向商業化前的SSH,Veracrypt派生自Truecrypt,再如近年來比較著名的事件:一些人不認可BTC的方向,分叉出來BCH,然后又有人不認可BCH,分叉出來BSV,雖然這個過程中有很多爭吵,但沒有人可以阻止這些。
為了更好地理解開源所給予用戶的高度開放,下面我們看看自由軟件是如何定義它所賦予用戶的自由:,并去理解其背后的初衷。)
如果一個軟件是自由軟件,那么它必須為用戶提供以下四項基本自由:自由度0:用戶可以按照自己的意愿,自由地運行該軟件,而不論出自何種目的。自由度1:用戶可以自由地學習該軟件,可以按照自己的意愿修改該軟件,所以,用戶首先要能得到源碼。自由度2:用戶可以自由地分發該軟件的拷貝,這樣就可以幫助他人。自由度3:用戶可以自由地分發該軟件修改后的拷貝,借此,用戶可以將其修改分享給整個社區,令他人也從中受益。
“自由軟件”不等于“非商業軟件”。一個自由軟件必須允許商業用戶、商業開發和商業發布。商業開發自由軟件早就司空見慣了,這樣的自由軟件非常重要。你可能需要花錢購買自由軟件,也可能免費拿到。但是無論你如何獲得你的拷貝,作為用戶,你的四大自由都會被保證,你可以自由地運行、修改、發布,甚至出售自由軟件。
以太坊開發者大會EDCON 2024將在日本舉辦:金色財經報道,以太坊開發者大會EDCON 2024將在日本舉辦。據悉,EDCON是一個非營利組織,致力于為以太坊生態系統服務,促進全球以太坊社區的交流和互動。[2023/5/29 9:47:45]
你可以把軟件原版或修改版再發布給其他用戶。你可以免費發布,也可以收取費用。軟件可以發布給任何地方的任何人。所謂“自由”,意味著你的這些行為不必事先征得任何人的許可,也不必為此額外支付任何費用。
從以上對自由度的定義可以看出,FOSS的初心是讓人們能夠更好地學習他人代碼、復用他人代碼,完善他人代碼、并可以將軟件分發給需要的人,從而盡可能讓更多的人從軟件和源碼中受益。
但開源的這種自由開放精神,會不會受到國家的限制?比如受到美國出口管理條例的管制?這個問題曾經成為今年的關注焦點,參考有關專家解讀,這里匯總解釋如下。
依EAR,美國人、美國公司將軟件出口至美國境外,或在美國境內提供給外國人作為出口的預備行為,必須申請取得許可。
但符合“公開可獲取(Publiclyavailable)”定義的軟件,不在EAR管制范圍,也就是說,多數開源軟件,出口上不需要申請許可。
但EAR734.7(b)同時說明,公開可獲取軟件雖不需許可,但若涉及加解密技術,仍然必須申請許可,除非是這個加解密技術本身也是公開可獲取的,那就可以采用EAR742.15(b)款提供源代碼或揭露源代碼來源的方式,來登錄備查。
Apache基金會在2019年5月22日通過官博發表聲明,稱:
經美國商務部工業和安全局重新分類,開源公開可獲取的加密軟件源代碼,因已是“公開可獲取”和“已發布”,不再受EAR約束。
涉及加密軟件源代碼的開源項目,仍然需要向BIS和NSA發送項目URL的通知,以滿足EAR742.15(b)中的“公開可獲取”通知要求。
ASF繼續與Apache項目及其社區合作,以確保他們的通知是最新的,并在未來得到維護。
所以,開源軟件是否會被美國出口管制,這個問題基本上不用多慮,源碼已經在你的手里,許可證又給予了你如此高度的自由,你還擔心什么呢,你最需要擔心的問題可能只是:能否讀懂源碼?
自發自治
所謂開源社區,指的是所有關心、參與、支持、幫助某個開源項目的人的集合。
社區里的人,是自發組織在一起的。“其中90%是用戶,他們只是搭順風車或是湊湊熱鬧,9%的人積極參與、提交bug、回答問題,這是‘貢獻者’,1%的人指導并控制項目的走向,委派任務和做決策,這是‘維護者’,或者簡單的說,他們是領導者。”
EricRaymond在著名的《大教堂與集市》一文中說:“誰能想到,幾千名散布在全球各地的程序員,利用業余時間,僅僅通過Internet,就鬼斧神工般地造就一個世界級的操作系統?”
他接著說:“多年以來。。。我相信大多數重要軟件需要像建造大教堂那樣,在與世隔絕的環境下,由天才式專家或幾個行家里手精心打造,。。。而LinusTorvalds委托所有能委托的事、開放到幾乎混亂的程度,這實在令人驚訝不已,在Linux社區,沒有建筑大教堂那樣的安靜和虔誠,倒更像是一個亂糟糟的大集市,充滿了各種不同的計劃和方法。”
Eric提出的問題是,一個大的項目里,大家平時連面都見不上,那么,如何把社區里的人們組織起來,尤其是把編寫代碼的黑客們組織起來?一個“亂糟糟的大集市”,真的能搭建起一個宏大而精妙的軟件嗎?書中并沒有給出明確答案。
在一個傳統的軟件公司里,“組織”并不是問題:確定立項,設立項目組,明確角色和分工,明確需求、目標和計劃,給程序員們分配任務,想方設法調動他們的積極性,分配資源、保障進度,檢查質量。在一個理性的公司里面,有大把的流程和制度在做這些事情,即便在開發中采取了敏捷方法,也是在命令體系下按照既定方法開展的。
但是,在一個完全基于興趣而結合的開源社區里,你所面對的都是自由人,你只能通過他的自愿來獲取合作,如果他愿意,他就可以貢獻代碼,不愿意,完全可以不寫任何代碼,如果他有能力,他的代碼就可以被采納,如果能力不足,他的代碼大約就不會采納。
這完全基于個人的意愿和能力,一個開源項目的領導者,他所需要組織的,就是發現有能力的志愿者,并予以相應的代碼提交權力。
在一個大型的社區,通常會有以下幾種不同的角色:
1、領導者:比如LinusTorvalds,作為內核的創始人,毫無疑問是該項目的最高領導者,在理論上,對Linux內核的任何事務都擁有最終話語權。在另外的一些項目中,可能有一個或多個人共同負責,如Node.js項目采用的是核心技術委員會機制。
2、維護者:領導者會將一些決策和模塊直接委托給維護者,維護者還可以將其中部分工作再委托給下一個層級的維護者。例如,LinusTorvalds手下就有若干位內核的維護者,負責不同的模塊。
富國銀行支付10億美元的股東訴訟和解費:5月18日消息,富國銀行已就集體訴訟達成和解,同意向股東支付10億美元。該訴訟稱,該銀行在解決2016年虛假賬戶丑聞方面誤導了股東。
早在去年12月,美國消費者金融保護局責令富國銀行支付約37億美元,就其廣泛管理不善導致不當房屋止贖和非法收回車輛的行為向消費者提供賠償與支付罰款。(Cointelegraph)[2023/5/18 15:11:42]
3、提交者:有些開源項目會設置一組可以直接提交代碼到主干的人,他們已經證明了自己可以勝任工作并且靠譜,而且不再需要提交維護者去進行審核。但提交者對代碼沒有最終的決定權,維護者或項目的領導者如果發現了什么,可以將提交的內容打回去。
4、貢獻者:貢獻者可以做很多事,比如幫助解答用戶的問題,貢獻代碼或文檔,在郵件列表中參與討論,也可以提交代碼committer。與前面的角色相比,貢獻者對于代碼的權力要小一些。
5、使用者:用戶為項目提供了目標,并幫助項目持續進化,作為社區成員,他們最有價值的部分是提出需求、報告缺陷、提出建議。
雖然Eric用“集市”一詞來描述開源模式,但社區里的程序員可絕不是烏合之眾,黑客可絕不會讓自己的代碼失控,代碼永遠要清晰、干凈、簡潔、優美。只有能做到這些的程序員才可以被賦予維護代碼的權限,所以,這是一個典型的能力帶來權力的社會,或者說的更直白一些,這是一個精英引領的社會。
那么,集市模式和大教堂模式有相通之處?
是的,這二者并不是截然對立的。
Linux內核在第一次發布之前,必然凝結著Linus的精心設計,雖然它是自下而上寫出來的,雖然它只是一個大學生的暑期作品,雖然它只有大約10000行代碼。
然后,Linux走向了開源并吸引了大量程序員參與,開發進入了集市模式。如今,參與Linux內核開發的已經有100多家企業和接近4000名開發人員,內核源文件達到5.3萬個、源代碼達到2100萬行,Linux每天會新增1萬行代碼,刪除5000行代碼,修改1800行代碼,Linux每一小時就會發生8次變化。在外人看來,這的確像是一個亂糟糟的集市,但這并不代表項目失控。
Linus對接十余名核心維護者,每個人都有自己負責的具體領域和項目內容,每次有新的開發任務時,Linus會將它分配給對應的人,而這十余位核心貢獻者又有各自的熟知并信賴的高手小團隊。
Linus不會也不可能親自審核每個設計和變更,而是按照這樣層級化的結構,最終由數百名維護人員負責代碼審查和整合。在Linus看來,一切都在有條不紊的控制之中。
這很像是一大群能工巧匠,不管出自何種利益考慮,為了一個共同的目標,從世界各地自發參加一個大教堂群的設計和建設,Linux內核就是這樣一個大教堂群,每個子系統都是一個大教堂,每個大教堂都有著負責設計和建造的領導人,其下有有著數百名建造高手,他們在共識和規則之下,使用著像git、gcc、郵件列表這樣的設計、建造和協同工具,利用集體的力量,把這些美輪美奐的大教堂建造出來。Linus作為最高領導人,不會強制他們,更不會發薪水,一切都是這些高手自發自愿自帶干糧,不管是個人還是公司。
集市模式和大教堂模式的本質區別只是在于:前者是自發的,也是自治的。
自下而上
自下而上是大自然最普遍的法則,開源作為一個從草根社會發展起來的事物,必然會遵循這個法則。
在開源世界里,至少可以從技術、生態、成就三個層面來觀察這一現象。
從技術上看,縱觀開源歷史,那些非常富有創意的軟件,一開始都是作者腦海中一個不太清晰、朦朦朧朧的想法,然后在作者能力和經驗的基礎上,通過代碼一步步明晰起來的,中間經過了若干次大大小小的架構調整,經歷過兩三次重寫,然后才終于成型。開源項目在第一次露面時,大多數情況下只是初步可以運行,然后通過其富有創意的特性和前景,吸引更多的程序員關注和貢獻。
一開始,Linus只是在Minix上編寫一個閱讀學校網絡上Usenet新聞組的終端仿真器,他把自己之前寫的用于測試任務切換能力的兩個進程加以修改,一個進程從鍵盤讀入信息并發給調制解調器,另一個進程從調制解調器讀取數據,然后發送到屏幕上;為了實現這些功能,他又寫下了鍵盤和顯示器的驅動程序;為了從學校網絡下載文件,他寫出了磁盤驅動程序,然后又在Minix文件系統的基礎上寫了一個自己的新的文件系統;也就是說,他使用Minix作為腳手架,逐步構建了自己的Linux。芬蘭學校的暑假有點長,1991年的暑假更是從5月中旬放到了10月中旬,Linus完全將時間投入到了編程之中,一周7天,一天10個小時,全都在寫代碼。1991年9月,Linux的0.01版就這么一點一點地做出來了。
從生態上看,開源軟件之間形成的關系,也是自下而上的,先有了語言、編譯器、操作系統,然后在操作系統提供的各種功能的基礎上,黑客做出了實用工具,做出外殼,做出了代碼管理工具、集成開發環境,做出了數據庫、Webserver、瀏覽器,做出了虛擬機,做出了javascript,做出了包管理工具,做出各種應用開發框架和組件,做出了大數據、云技術,做出了各種面向最終用戶的應用。黑客總是先做出底層的東西,然后才做出上層的東西,而且總是先有實踐,才有了理論,總是先有代碼,才有了設計模式、架構體系、軟件工程這些東西。
報告:日本因朝鮮加密黑客攻擊而遭受的損失占全球的30%:金色財經報道,根據區塊鏈分析公司Elliptic的一項研究,日本因朝鮮加密貨幣黑客攻擊而造成的損失居世界首位,占總數的30%。根據 2022 年估計損失的 6.4 億美元加密貨幣,日本在這些攻擊中遭受了 7.21 億美元的損失,占全球總損失 23 億美元的 30%。
根據該報告,越南是第二大受攻擊的國家,在此期間損失了 5.4 億美元。美國以 4.97 億美元的損失位居第三,香港以 2.81 億美元的損失位居第四。[2023/5/16 15:04:39]
從成就上看,絕大多數黑客,一開始都是小打小鬧,從簡陋的程序開始起家,并沒有什么宏大的想法,Linus一開始也只是自己玩玩看,并沒有想著要怎么改變世界,說自己“如果當時真的知道從頭建立一個操作系統的難度,肯定是不會有勇氣去做的”。而到了1999年,Linus在"TheLinuxEdge"一文中提到:“Linux現在有數百萬用戶、數千名開發者和正在增長的市場,Linux被用在嵌入式系統中,用在機器人系統中,用在航天飛機上,我想說我知道這些都會發生,這些都是統領世界計劃的一部分”,雖然,這也許只是一種詼諧的表達。
扎克伯格一開始做的僅僅是一個讓學生們可以在一堆照片中選擇最佳外貌的程序,他做這個也只是因為好玩,后來才開始做了一個用于哈佛大學學生交流的網站:Facebook,隨著Facebook的壯大,在收購WhatsApp、Instagram之后,扎克伯格的成就和抱負也逐漸升級,2017年2月,扎克伯格在一篇宣言中稱“過去10年中,Facebook一直專注于幫用戶連接家人和朋友。下一步我們要成為新的社會基礎設施,保證社群安全、提升每個人在社會事務中的參與度并提高社會的包容性。”,2019年6月,Facebook提出Libra計劃,要“重新創造貨幣,重塑全球經濟,讓世界各地的人們過上更美好的生活”。誰能想象,一個程序員,居然就這樣自下而上,做出如此的成就。
順便提一下,開源軟件進入財富500強的方式,并不是Eric所倡導的自頂而下方式,開源并不是因為CEO和CTO的倡導和命令而進入企業,開源仍然以其一貫的方式,以其不慌不忙的態度,以其不可抵擋的實力,自下而上地推入了財富500強。
自由競爭
開源,是一個靠實力說話的世界。
開源軟件在競爭什么?競爭的是誰的軟件好使,誰的評價更高,以及,最終,是誰獲得了更多的市場份額。
“Talkischeap,showmethecode”,大約是這一點的經典詮釋。1992年1月,有一場著名的論戰,Tanenbaum作為Minix的作者,發帖批評Linux是一個龐大而一體化的操作系統,而非早已被證明更先進的微內核設計,并稱“Linux簡直像是大踏步回到了20世紀70年代,就像拿來一個C語言的程序,再用Basic重寫一遍,在1991年還寫monolithic式的操作系統,真是太糟糕了。”,Linus則回懟“Linux在絕大多數方面都完勝Minix。。。如果微內核是判斷操作系統內核的唯一標準,那你可能是對的,但你為什么不提Minix并沒有把微內核做的很好,并且在真正的多任務方面還有很多問題呢!”。
Linus怎么會有底氣向一個多年研究操作系統的計算機系教授開火?那是因為他真的做出了比MINIX要好用更實用的內核,而且真的得到了更多的歡迎,所以他才可以這么說,在理論上,Tanenbaum大約是對的,但在實踐中,Linus勝出了。
競爭比比皆是。
2004年,在Apache占據最大Webserver份額的年代,俄羅斯人IgorSysoev開源發布了Nginx。Nginx的一個明確目標就是超越ApacheWeb服務器的性能,它使用異步技術,成功解決了C10K問題,以其占用內存少、并發能力強、配置靈活簡單等驚人性能,很快得到了廣泛采用。截止2019年6月,在全球流量最大的前100萬個網站中,Nginx占有率已經從10年前的3%上升到如今的27%,而Apache的市場份額從66%下滑至32%,微軟的IIS則從19%下滑到9%。在流量最大的前1萬個網站中,Nginx的使用率已經超過了Apache。
2015年,Google開源了Kubernetes,它基于Google自2003年起就在內部使用的集群管理工具Borg,很快,微軟,紅帽,IBM和Docker加入,Google更是與Linux基金會合作組建了CNCF基金會(CloudNativeComputingFoundation),將Kubernetes作為種子技術來提供。現在,Kubernetes有380家企業和2500多名開發者參與開發,在和同類項目Swarm以及Mesos的競爭中,Kubernetes很快占領了容器調度編排領域的絕對領先地位。
軟件在競爭,個人也在競爭。
個人競爭的法則很簡單,如果你的貢獻——當然主要是指代碼的貢獻——得到了同儕認可,你就會獲得聲譽和權力。
2019年6月,ASF官方博客宣布全球新增40位ApacheMember,阿里的張乎興有幸成為其中一位,此時,全球共有771位ASFMember,中國僅13位。他是怎么做到的呢,張乎興記錄了這個過程,以下是節選。
金融科技支付公司 Tribal Credit 將加入加密行業游說團體:金色財經消息,金融科技支付公司 Tribal Credit 計劃加入加密行業游說團體“Blockchain Association”,它將貢獻其在新興市場區塊鏈用例方面的專業知識,并與監管機構和其他利益相關者進行對話。(CoinDesk)[2022/6/28 1:35:33]
2014年我加入阿里巴巴中間件團隊,開始接手阿里巴巴集團應用容器的維護工作。當時中間件團隊維護了Tomcat的一個私有分支,最大的目標就是要統一所有集團的應用容器為Tomcat。
Tomcat自1999年發布第一版以來,一直是開源界和Apache基金會的明星項目,至今仍然在應用容器領域市場占有率保持第一,歷經20年發展,依舊熱度不減。Tomcat歷經這么多年的發展,卻從未出現過一位來自中國的committer。
我從修復bug開始。第一個patch是修復一個Websocket測試用例失敗的問題,修復該問題涉及到了對代碼的一些重構。還記得當時提交之前我非常謹慎,和leader一起反復討論了很多次,終于形成了一個比較滿意的方案。提交給Tomcat社區之后,很快,社區便有了響應,并合并了我提交的補丁。看到Tomcat的releasenote里面出現了自己的名字,真的非常開心。
嘗到了貢獻的甜頭后,團隊的目標也有所調整。內部版本的Tomcat和開源版本的結構要保持完全一致:使得合并開源ApacheTomcat變得非常容易;內部做的增強也更加方便合并到社區。
后續向社區的貢獻,主要來源于三個方面:第一:阿里內使用Tomcat,在大規模、高并發場景下遇到的問題修復。比較典型的是當時無線網關應用采用的是TomcatNIO+AsyncServlet的架構,作為一個入口應用,曾經因為Tomcat在高并發下的異常出現過一個比較大的故障,后來排查這個問題花了非常多的精力,最終徹底修復了這個問題。第二,Tomcat大面積在阿里鋪開時遇到的問題修復。例如,發現了一些不符合Servlet規范的行為等。第三,主動參與開源社區,針對一些一直存在的問題的修復。
2016年8月23日,在一個平常工作日的上午,我打開郵箱,看到一封來自Tomcat社區核心開發、JavaEE規范專家組成員、時任Apache基金會董事會成員MarkThomas的來信,邀請我成為TomcatCommitter。打開郵件的那一刻,感覺自己的心都在顫抖,激動之情有點不能自已。
2017年,阿里重啟了Dubbo的開源維護工作,并決定把Dubbo捐獻給Apache軟件基金會。已經有過幾年Apache社區參與經驗的我,自然地承擔起幫助Dubbo進入Apache基金會孵化的工作,從聯系導師到修改提案,終于,Dubbo通過了Apache孵化器的社區投票,正式開始孵化。
第一次的release,是孵化過程中很重要的一個里程碑。在我看來,release的意義遠大于代碼層面的工作,還包括了準確的License和版權聲明、符合規范的代碼及依賴、準確一致的簽名等。Dubbo花了很多的時間去準備,也把整個過程完全的文檔化,孵化過程中,由7位不同的ReleaseManger輪流負責,確保不同的人都可以完成發布。
在Dubbo即將畢業的前夕,突然有一天,我按慣例打開郵箱,突然發現躺了一封InvitationtojoinTheApacheSoftwareFoundationMembership。我心中一陣驚喜,點開之后,發現是邀請我成為ASFMember的郵件,這讓我非常的出乎意料。
在ASF基金會里,一名新的member,是現有其他member提名和選舉出來的,張乎興獲取如此地位,依靠的是他的能力、貢獻以及同儕對他的認可。
贏在聲譽
黑客將自己的代碼貢獻出來,能得到什么?
除了項目發展、能力增長、回饋社會、自我實現之外,最大的好處莫過于聲譽。
這也是很多黑客貢獻代碼的初衷,TDengine的作者陶建輝很直接地說出這一點:
“錢再多,也難讓人在歷史上留下痕跡,但一幅好的作品卻可以傳承,讓后人好好的品味。愿我領頭開發的TDengine成為傳世之作,Leaveadentintheworld!”
聲譽會帶來直接的好處:一旦某人在開源社區建立起自己的聲譽,基本上他就不再會為職業生涯發愁,他們會非常搶手,盡管他們往往是分布在全球各地,但這不妨礙企業爭著雇傭他們。
正如Autodesk開放總監GuyMartin所言:“如果你打算雇傭一名維護者,或是想雇一名厲害的貢獻者,請時刻牢記,這些人被很多公司盯著,而且他們是這個世界做著足夠靈活的工作的人,這也就意味著,他們雖然從一家公司換到另外一家公司,但是卻在同一個項目中工作,唯一改變的是簽署薪水的公司名稱。”
聲譽帶來的更多是無形的好處:你說的話會有人聽,你要做的事會有人支持,會有人更多的人愿意和你合作。
現在,開源貢獻的主流力量已經轉變為公司,各類大型企業尤其是互聯網企業,開始以各種方式發布自己的開源項目,企業為什么要把自己項目開源出來?
道理是一樣的,如果得法,企業不僅可以獲得聲譽,還會獲得更多好處。
37signals是一家非常小的公司,員工很少,但在業內卻非常出名。它的出名,很大程度上得益于員工大衛·海納梅爾·韓森在工作的時候,用Ruby寫了一個劃時代的web快速開發框架——RubyonRails,其革命性的設計理念,大大的提升了WEB網站的開發效率。37signals選擇了將此項目以開源的方式發布,在業內引發了轟動效應。在37signals出版的暢銷書《Rework》里,有一段這樣的文字:最好的大廚都樂于在公共頻道上教授自己的廚藝,這不僅無損大廚的商業利益,反而大大增加了大廚的知名度,對大廚來說這是非常棒的舉措。
具體會有些什么好處?
首先,項目會因開源而獲得成長
Google對其人工智能系統TensorFlow的開源決定就是基于這種考慮做出的,Google首席科學家JeffDean指出,傳統的軟件研發實在是太慢了,通常是一個程序員花上幾個月寫完代碼,然后上會討論,再根據其他人的意見進行相應的修改。相比之下,如果采用開源的協作開發形式,Google開發人員能夠實時與外界進行協作,Google之外的人也能參與TensorFlow的編寫和完善,TensorFlow的開發進度就大大加快了。
濤思公司在將TDengine的核心部分開源之前,也經歷了反復的討論和思考,最終在深思熟慮之后,決定開源,其官網上寫道:“濤思數據將盡最大努力打造開發者社區,維護這個開源的商業模式,相信不將最核心的代碼開源,任何軟件都將無法贏得市場。濤思數據希望通過開源,快速獲得市場反饋,完善產品,完善生態,而且吸引更多的開發者加入到這個項目中。”,如果你去github上看一下,就會發現,開源僅僅兩周內,TDengine就收到十多個修改建議,其中不乏一些修復內存泄漏、防范段錯誤之類的高質量patch。
其次,開源產品可能會獲得大量用戶使用,占據份額優勢,然后再通過其他方式賺錢
2007年,Google開源了花幾億美金買來的Android,希望直接和Apple、Nokia、BlackBerry展開競爭。在此之前,塞班系統曾一度占據了手機操作系統的榜首,而蘋果的iOS系統也風頭正勁。然而,在安卓出現之后,只用了很短時間就奪下了手機操作系統市場第一的位置。根據Gartner發布的數據,2018年安卓在智能手機系統中占有的份額高達85.9%,位居第二的iOS系統占據份額14%,其他各種系統的市場份額加在一起只占0.1%。Google并不對andriod收取任何費用,但對于系統搭載的Google搜索、Google地圖等各類應用,卻可以收費獲利,這和互聯網企業通過免費贏得用戶然后通過會員收費有異曲同工之妙。
Kafka由LinkedIn公司于2011年開源,并在2012年底從ASF孵化器畢業,正式成為ASF的頂級項目。2014年,Kafka的三個主要開發人員從LinkedIn出來創業,開了一家叫作Confluent的公司。Confluent的產品基于Kafka,其中Confluntopensource是Kafka的增強版本,仍然開源免費,但企業版ConfluentEnterprise則是收費的,主要是里面增加了一個非開源的ConfluentControlCenter,實現對整個產品的管理和控制,可以對Kafka里面各個生產者和消費者的性能進行監控。
由于開源,Kafka已經在很多企業里被作為關鍵組件部署,但社區版kafaka自身并不自帶性能監控平臺,雖然也有公司自己開發了這樣的系統,但無疑Confluent開發的東西應該是最可靠的,畢竟沒有人比Kafka的開發者更了解自己的產品。如今,Confluent公司的年預訂量已超過1億美元17,之所以可以大賣,其基礎就在于Kafka已經得到了廣泛使用。
這是自Redhat創立以來,許多開源創業公司采用的商業盈利模式:將“社區版”開源,然后售賣該產品的“企業版”,售賣云服務版,售賣對產品的支持和服務。所以說,企業開源自己的項目,并非不能賺錢,只要能積累起大量用戶,就可以通過更誘人的功能,吸引用戶花錢購買更高級的產品,而且,開源創業公司還可以“原廠”的身份,為企業提供技術服務,為企業解決后顧之憂。
吸引人才
將產品開源,如果能建立良好的聲譽,會讓開源開發者對公司產生興趣,而公司則可以從開源貢獻者中選取人才,這提供了一種互相發現對方的機會,招聘到這種人才是非常劃算的,因為該程序員的能力早已在項目的貢獻中得到檢驗,而且入職后無需磨合就能夠直接上手工作。
現在再回頭看,公司能從開源獲得什么?至少有這么幾點:獲得聲譽,獲得合作,獲得用戶,獲得客戶,獲得員工。當然,公司不會同時獲得這么多,公司也未必想要這么多。
雖然有這么多好處,企業在開源項目前仍須三思,要綜合權衡利弊再做決定。微軟近年來以實際行動大力擁抱開源,也開源了不少項目,但顯然還不會把最新版的Windows和Office開源。
社區賦能
Apache有一句格言叫”社區重于代碼",它強調的是:一個健康的社區遠比良好的代碼重要。如果代碼消失,一個強大的社區可以重寫它;但是,如果一個社區不健康,代碼最終也會失敗。
背后的邏輯是明顯的,與代碼相比,人是最重要的。開源軟件的生命來自于人,一個軟件還活著,體現為它還在被運行,還在被維護,如果沒有人關注和維護,這個軟件也就走到了盡頭。
“眾人拾柴火焰高”,社區越強大,項目繁榮的可能性就越大。近年來,公司作為一股強大的社區力量,不僅把自己的項目開源出來,還會在使用他人開源項目的同時,對上游社區作貢獻。
有人會問,如果說公司將自己的項目開源會有利可圖,那么,雇傭全職員工參與上游開發這件事,會有什么好處呢?為什么一定要給上游做貢獻,fork代碼過來直接自己搞難道不行嗎?
這句話值得好好思考一下:“如果某個開源項目對你公司的產品起著非常致命的作用,而你的公司又只有一人在為上游做貢獻,你就處于單點故障風險之中,你必須要有連續性計劃,你需要有一打以上的人做這件事。”
公司將開源代碼下載然后自己搞,當然可以,但這是一種遠離社區的做法,隨著時間推移,想要從社區的下一個版本中引入修復bug或新的功能,付出的代價就會越大。所以,最簡單的方式就是讓自己的員工花時間甚至是全職的時間參與到開源項目中,花這個錢是值得的。前面所述的阿里對Tomcat做貢獻的例子中,就很明白地說明了這個問題。
阿里、騰訊、百度、華為、中國移動、招商銀行等國內企業近年來已經將開源作為戰略行為,不斷將自己的項目開源,并積極參與上游項目,通過其貢獻,已分別被Apache基金會、Linux基金會、OpenStack社區、MariaDB基金會等接受為白金、黃金或白銀會員,這意味著中國公司在開源社區開始有更多的話語權和影響力。
最后,有必要略微介紹一下基金會,它為什么會存在,它主要起什么作用?
首先看看由純粹程序員組成的社區,可能會有什么問題。
1、可能缺乏管理。一個健康的社區需要及時處理issue和PR,需要有健康的討論,需要有正常的發布頻率,這樣才會聚攏人氣,才會吸引更多的關注和貢獻。而黑客幾乎完全是由興趣驅動的,他們有時候也會犯懶,項目有時會沉睡,一些取悅用戶的功能會遲遲不被實現,項目會失去其所需的活躍度。
2、可能缺乏運營。想促進項目更好發展,有些非編碼性質的工作是必要的,比如品牌建立、推廣、運營、捐贈獲取、法律訴訟、培訓、認證等等,但對于醉心于技術的黑客,他們即便認識到重要性,即便有能力,可能也缺乏主動性去做這些,這些事情需要有專門的人士來做,也需要專門的經費。Linus曾說:“如果你是一名工程師,很有可能你只想處理自己感興趣的技術問題,其他一切事情你都想移交給別人來處理。。。很慶幸自己不需要擔心商業和管理的問題,只要能領到工資不擔心養孩子上學的問題就很好”。
3、可能缺乏治理。開源項目大到一定程度,在多個公司捐贈和參與貢獻之后,企業之間、企業和社區之間的沖突如何處理和調和?這屬于治理層面的問題,也是頗讓人費腦筋的問題,黑客可不一定喜歡這個。
所以,基金會應運而生,在非盈利和良好愿望的前提下,搞定這些在黑客看來略顯無趣的事。
Apache軟件基金會成立于1999年,是全球目前最大的開源軟件基金會。20年來,它發展和孵化了350多個開源項目,像ApacheHTTPserver、Ant、Hadoop、Kafka、Maven、Struts、Tomcat、Zookeeper等,都是它的項目。ASF依美國非營利慈善組織條例501(c)(3)設立,其成立宗旨是:“為公眾利益創造免費的軟件”。基金會由董事會(Board)來管理,董事會目前由九名成員組成,每年由所有ASFmember投票選出。
Linux基金會也是非營利組織,其宗旨為:“促進、保護和規范Linux,圍繞開源項目創建可持續的開源生態系統,促進技術發展和商業采用”。像Linux、Hyperledger、Jenkins、Let’sEncrypt、Node.js、Kubernetes、Opendaylight、Xen這些都是Linux基金會旗下的項目,和ASF不同,通常是頂級企業會員有機會進入董事會或是各種技術決策委員會,其董事席位主要是由企業會員選出的。Linux基金會明確指出,基金會所獲資金,主要用于基礎設施和從事開源開發的人,包括LinusTorvalds。
后記
七大理念就說到這里了,如果要細究的話,其實還可以再整出幾條的,比如什么“樂于共享”、“重在用戶”、“共識驅動”,“高度透明”、“精英引領”、“協作增效”之類的,但是我覺得有這七條也就基本能說明問題了,而且所有這些理念都是相互關聯的,關鍵是理解開源背后的動力結構和其所不可抵擋的優勢。
總的來說,從需求上講,人們需要源碼實現高度自主和安全可控,從供應上講,提供源碼有利于贏取更多的關注、聲譽、用戶和市場;開源的高度開放和自由使人類智慧得到更好的共享和發展,降低了學習成本、復用成本、改進成本,打破了技術封鎖;開源提供了更自由的競爭機會,使那些能力強的人和軟件脫穎而出;開源,最終造福整個軟件業和整個社會。
時至今日,80%以上的智能手機使用開源,90%的公有云負載使用開源,60%的嵌入式系統使用開源,連微軟都在windows10中內嵌Linux,那么,有什么理由不相信,開源正在慢條斯理地吞噬整個世界?
來源:微月人話
七部委聯手監管風暴來襲,ico力度不斷加大,眾籌的平臺一個接一個倒下,或許十九大之前會還幣市一個清靜,又或者回歸到13年情形,暴跌80%,全面崩盤.
1900/1/1 0:00:00加密貨幣市場紛紛擾擾從未間斷,該領域發生的種種議題常令人霧里看花,就連身在市場的參與者也常常面臨同樣的情況,此外,加密貨幣世界正走向傳統世界的進程,但相對應的產業關系與知識并未有充分的了解.
1900/1/1 0:00:00正值農歷新年到來之際,看看國外知名加密貨幣分析師如何預測比特幣近期的走勢。彼得·布蘭特是Twitter上最受歡迎的比特幣分析師之一.
1900/1/1 0:00:00在最近一輪上周末的波動之后,比特幣有望連續第四天上漲。重要的是,加密目前陷入了大約3,700美元到4,200美元之間的交易,BTC可能會在很長一段時間內陷入困境.
1900/1/1 0:00:00根據CoinDesk的數據,2020年3月比特幣價格在階段性高位震蕩調整一段時間后,在3月12日跳水并快速下跌,釀成了近期著名的“3.12暴跌”,由于近一年合約交易規模的增長.
1900/1/1 0:00:0051%攻擊是對由控制超過一半計算能力的一組礦工組織的區塊鏈的攻擊。現在,V神已經提出了一種阻止它們的方法!51%攻擊對區塊鏈可能非常有害,因為這種攻擊可以完全阻止新交易獲得確認,并可能阻止部分或.
1900/1/1 0:00:00