關於小米在開源上的五大原則,一位20年開源老兵的思辯
從1995年至今,從美國到中國,從自由軟體到開源軟體,小米首席架構師崔寶秋一直在參與開源軟體的開發等工作,親歷中美兩國開源的變遷與發展。如今,開源是互聯網的大勢所趨,個人與企業都紛紛擁抱開源。
回顧過去,開源這些年,有哪些值得銘記的瞬間、有哪些影響深遠的事件、有哪些極具代表的人物?放眼未來,開源到底該怎麼玩,怎樣的思路與打法是值得國內互聯網公司借鑒的?在3月27日舉行的技術社群大會上,崔寶秋與大家分享這些年的一點感觸。本文根據崔寶秋在大會上的演講整理而成,關注『聊聊架構』微信號,回復關鍵字『開源』,獲取演講PPT。
-----------------------------------------
大家好,我是小米首席架構師、小米雲平台負責人崔寶秋,今天我分享的主題是《我看開源這些年》。本次分享中,我會介紹下過去二十多年我對開源的一些看法和理解,重點是我認為在國內我們應該怎麼玩開源的方法。
我和開源
首先,我先介紹下我和開源的緣分,或者什麼時候和開源結緣的。我是1995年出國的,那會國內都停留在DOS和Windows編程。1995年去美國讀書,在那裡我大開眼界。我看到了Linux,被它龐大的功能,後面所有的軟體、能力、水平所震撼,當時真有驚艷的感覺。我在學校的幾個老師也對在開源上對我有很大的啟發作用。之後我的四年研究成果,五年博士四年我們都在做XSB,簡單來講就是增強版的Prolog語言。當時我基於GPL把它開源,再到後來很多工業界也在用這個編程語言。從1995年開始到2010年,這中間我參與了很多Emacs社區討論,也直接貢獻了一些代碼。在LinkedIn我們也開放了一個搜索系統SenseiDB,後來小米也把它用到了搜索技術里。
2012年回到中國,我就開始推進小米的開源戰略,比如在有限的人力的情況下,如何站在開源巨人肩膀上快速推出一些雲存儲計算和大數據處理能力。
在這個過程大家可以看到,我是從早期的一個自由軟體的信仰者,慢慢的轉化到一個開源的倡導者,中間也經歷過學校、公司,從個人的愛好到公司的推動,從項目貢獻者到項目管理者。
開源關鍵人物、關鍵事件和基金會
說到開源,講開源過去的這些年,我覺得應該講一下重要的人物。在我看來在開源史上,在開源界這幾個人是至關重要的:第一個是,Richard M. Stallman,他創建了自由軟體基金,為後來的Linux發芽等等奠定了紮實的基礎。第二個,Linus Torvalds,Linux的創造者。最後一個是Eric S. Raymond,他創造了Open Source這個詞,並發起了開源運動。我覺得如果沒有Eric,只憑著自由軟體,開源做不到今天。這三個人在開源史上未來都很難有人取代的。
下面是開源歷史上一些重要的里程碑事件和重要基金會,以及重要的開源軟體時間表。
版本控制系統(VCS)的演進
對於開源來說,代碼管理平台非常重要。我記得在我讀書的時候,我們的系統都是在系裡自己維護的,整體來看,並不安全,版本管理也不方便。開源軟體,勢必要有很多人參與,所以最重要的代碼一定要放在安全可靠的地方。相對的來講,2008年有了GitHub出現,它所管理的開源項目數量就不是線性增長,早期可能有點線性,但是後來的曲線可能更加陡峭一些。
開源軟體 VS 自由軟體
自由軟體我覺得過於理想主義,過於強調人的自由。開源軟體更加實用一些,較少涉及政治和道德,強調「使?和提供開源軟體對你和你的?意有好處」 。確實,早期GPL推動了自由軟體的萌芽或者早期發展,但是後期開源也一定程度上限制了自由軟體的發展。所以我覺得開源軟體屬於工業界,我現在參加了中國很多的開源社區活動,大家對開源的熱情都很高。雖然早期我對他有負面的認識,但是他對開源的貢獻是不可替代的。
開源的三種力量
開源有三種力量,這是我總結的。第一,屬於個人愛好者。這些人是狂熱的技術愛好者。我很早以前,我的一個目標,就是等我財務自由或者退休以後,我去寫自由軟體,享受那個成就感,為大家創造價值的成就感。其實這第一類力量就代表了一大幫技術愛好者。
其中我合作過的一個作者,他是一位天文學的教授,叫Prof. Carsten Dominik,有一天他寫了一個非常好的文本管理器Emacs Org Mode,可以幫你管理時間,記事等。而編寫這個管理器的時間幾乎都是在上下班兩個小時的地鐵上或者輕軌上完成的。我看他的有些代碼寫的不太優雅,演算法性能不夠好,我以為他是很高的計算機高手,後來我發現他是學天文學的,後來我就理解了。但是他的一些演算法不是特別美妙,但是對事情的推進還是有貢獻的。
第二種我叫無開源商業模式,這裡包括組織和學校,這些是以互聯網服務或者以某種東西來盈利的,它不是通過開源的軟體,或者解決方案來賺錢的。
第三種是有開源商業模式組織,包括IBM,也中國的華為,它們有一種商業模式在後面,利用網路硬體,設備,開源,有一整套的解決方案,對大的企業,通過整套的東西來盈利。所以三種的貢獻者,三種的力量,對開源看法不同,貢獻不同,投入也不同。
國內開源的幾個階段
中國的Linux在過去的二十年發展的非常迅猛,早期可能很多人不知道這件事情,因為這是我在1999年10月份的一天早上在網站上看到Eric寫的一篇文章,我當時看了覺得不對。他就是表達了對Linux進入中國的反對或者不相信的態度。他說Linux被中國政府採購不可能的,我們不應該,我們不歡迎,就是表達了他的一些政治偏見。我後來跟Eric和Richard也進行了電子郵件交流。那次讓我認識到Richard確實把自由軟體當成政治的東西來看待的,所以不是資本主義,社會主義的政治,而是其他的政治觀點,他覺得是自由的。
國內開發者幾個階段:第一,我認為1995年是與世隔絕的,這是加了引號的,我們確實落後了,國外玩了很久了,國內也沒有互聯網,後來十年是初級階段,2005-2010年初步成熟了,現在有了Git,也開始了快速發展。
開源的玩法我簡單介紹下,重點可以看演講稿,個人的就是熱愛,就像剛才講的天文學家一樣,個人玩開源的也有盈利的,成為暴發戶的都有可能的,因為你可以接受贊助等等的。像大公司,有商業模式的公司的開源是另外一種玩兒法,我沒有直接參与,就不講了。我講的是中間這個無開源模式,公司或組織的一些玩法,以小米為代表,可以看一下小米大數據做了哪些開源,這是一個簡單的全貌。為什麼擁抱開源?我們首先要站在巨人肩膀上,快速推出產品,快速佔領市場,快速為公司創造價值。
所以對很多創業公司,甚至對很多大公司而言,不擁抱開源就一下子輸在了起跑線上。當然吸引人才,吸引貢獻,提升內部軟體質量,我認為也是開源非常重要的幾個好處,所以擁抱開源已經是大家公認的。
在小米我一直推行這幾個原則:一,快。快速選型,快速定位,快速掌握,快速推出產品。二,絕不重造輪子。寧願學習掌握,化為己有而不要自己重寫,這個投入遠遠大與前者。三,不用則已,要用則精。四,永遠抱著開放與共享的態度。如果講自由主義,講政治上的一些東西的話,道德層面的,這個是反映的一塊。五,與其他公司所不同的,小米會儘力退出自己的Committer。
想解決國內很多公司所犯的一個很粗淺的錯誤,最根本的原因就是它們拿了一個版本,完了以後就把這個給割斷了,然後自己用起來很爽,然後自己改動,改動又不回報到社區,不管什麼原因,這個版本就被這個公司維護的越來越重,越來越遠,和社區的版本差別很大,最終這個版本就沒用了。社區是後面一個龐大的力量在推動,BAT我認為都是小的,比不過社區後面力量的推動。不然的話公司最終會被維護成本所拖垮。最後一點很重要,在座的各位如果在公司想推開源的話,這點一定要注意。我們推出的版本也是要投入的,雖然永遠開源第一,投入第二。
如何回報社區
怎麼有效回報社區?參與交流,這個主要是針對國內開源愛好者或者參與者、貢獻者。第一,要勇於參與;第二,描述清楚想法和演算法;第三,還有就是自信,堅定自己的觀點,不要被社區中某些貌似大牛的人所嚇到了,沒必要的;第四,一定負責任,不要打一槍換一個地方,就是寫了代碼一定要維護,要做QA,要做測試,要做自己的用戶,要做客服,你的問題有人提問要及時回答。小米為什麼這麼快讓社區接受了我們,就是我給他們展示了,小米為什麼會在某些領域大力投入等等的,所以這個時候社區願意跟你合作。
我想總結一點結束今天的分享,一句話,我認為開源是軟體的未來。
推薦閱讀:
※做與不做都是戰略
※有哪些科學計算的開源庫?
※【資源】攝影相關的開源軟體
※如何從參與開源項目的過程中獲取自信
※從第一開源系統Linux之父的一生我們能學到什麼?