如何做好企業(yè)級開源?紅帽的研發(fā)方式值得學習
原創(chuàng)軟件正在改變世界,而軟件研發(fā)的方式也在悄然發(fā)生變化。近年來,全球開發(fā)呈現(xiàn)出了爆炸性的增長勢頭,軟件數(shù)量一直在以1.5倍的速度增長。據(jù)IDC的數(shù)據(jù)顯示,全世界的軟件代碼總數(shù)在2020年的時候是100萬行,其中有40%的研發(fā)成果是復(fù)用第三方代碼來實現(xiàn)的。當然,第三方代碼絕大多數(shù)就是開源社區(qū)的代碼。
同時,IDC預(yù)測,到2024年,將有80%的軟件研發(fā)成果都是復(fù)用第三方代碼的。原因很簡單:站在巨人的肩膀上,不重復(fù)造輪子。在這種效率提升的驅(qū)動下,以及全球一體化趨勢的影響下,復(fù)用代碼越來越開放。
然而,復(fù)用第三方代碼或者開源代碼就一勞永逸么?答案是否定的。
復(fù)用開源代碼面臨的難題
首先,開源代碼千千萬萬,如何在海量開源組件和代碼中,發(fā)掘和甄選可以長期留存的代碼是第一大難題。
第二,開源社區(qū)的軟件都是“活”的,是不斷演進發(fā)展的,如何讓社區(qū)不斷更新的代碼,和不斷演進的新技術(shù)以及及時修復(fù)的bug,能讓自己獲利,就是一大難點。同時,企業(yè)自研部分的代碼也在不斷演進中,如何與開源部分的演進整合在一起,形成一個統(tǒng)一的企業(yè)級軟件,是另外一大難點。
第三,有代碼的地方就有漏洞,如何解決這些漏洞,避免安全性、穩(wěn)定性問題出現(xiàn),也是在選擇開源軟件過程中面臨的一大難題。
由此可見,復(fù)用別人的成果也并非易事。在這種情況下,紅帽的軟件開發(fā)方式對任何一個需要寫代碼的企業(yè)來說都很重要。
眾所周知,紅帽自成立開始,30年來一直都依托于開源組件和代碼,實現(xiàn)企業(yè)級軟件的研發(fā),積累了非常豐富的經(jīng)驗?!拔磥懋斈銓?00萬行代碼的時候,平均約有80萬行都要以類似紅帽的開發(fā)方式寫出來?!奔t帽戰(zhàn)略產(chǎn)品推廣經(jīng)理佟一舟表示。
紅帽研發(fā)準則之上游優(yōu)先
“上游優(yōu)先”一直以來都是紅帽秉承的商業(yè)信條。對于紅帽來說,“上游優(yōu)先”的原則不僅是在開發(fā)之初就要想到對上游社區(qū)的貢獻,實踐之后的成果同樣要回饋到社區(qū)中。這種互惠互利的方式既成就了開源社區(qū),更成就了紅帽。據(jù)悉,企業(yè)Linux只有三分之一的代碼是紅帽付費讓開發(fā)者寫出來的,有70%的代碼都來自社區(qū),這就是上游的創(chuàng)新經(jīng)過改變之后再反饋給社區(qū)的實例。
紅帽研發(fā)準則之百分百開源
紅帽的成功離不開其始終堅定不移的致力于開源,紅帽相信開源的開發(fā)模式是更快速促進創(chuàng)新的最佳模式。
佟一舟表示,從狹義的角度來說,Linux內(nèi)核是在GPL開源許可下研發(fā)的,也就是說只要用了GPL協(xié)議之下的代碼,開發(fā)出來的成果也要開源。作為一個嚴格遵守國際規(guī)則和開源準則的公司,紅帽的Linux一定會是開源的。
當然,紅帽不僅僅有Linux、K8S、OpenShift,并且,K8S以及各種各樣的云原生的很多組件所遵循的Apache開源許可是比較寬松的,所以紅帽會不會將之閉源?答案是否定的。
因為從廣義的角度來說,紅帽已經(jīng)從開源的模式中走出了一條成功的商業(yè)之路。30年來,紅帽堅持訂閱的收費模式,賣純開源的產(chǎn)品,并堅持在上游社區(qū)持續(xù)投入。紅帽積極參與開源技術(shù)的貢獻,提取開源社區(qū)中的上游技術(shù)產(chǎn)品,并對這些產(chǎn)品進行檢驗、測試、打包成產(chǎn)品組合,附加廣泛、豐富的客戶支持、相關(guān)資源,以及合作伙伴服務(wù),來提升產(chǎn)品的總體價值,之后向企業(yè)和政府銷售企業(yè)級的技術(shù)產(chǎn)品組合,形成了紅帽成功的商業(yè)模式。
好奇心+自主性,紅帽最看重的精神
要想成為一個紅帽開源社區(qū)的開發(fā)者,可以從解決一個小的bug開始。如果想加入紅帽,則需要開發(fā)者要有好奇心和自主性。
紅帽首席架構(gòu)師張家駒表示,好奇心是紅帽文化的一個部分,需要開發(fā)者具有研究的精神,如果開發(fā)者在社區(qū)有一定的貢獻,當然也就獲得了加分項。
紅帽的工程師大多具有非常強烈的自主性,主動的去做很多事情,而不是簡單的聽從領(lǐng)導安排,工作完成之后去匯報,這種工作模式欠缺一些自主性。紅帽鼓勵失敗,因為不可能所有的項目都會成功。
擁有了好奇心和自主性,才能更快的融入到紅帽的企業(yè)文化中?!叭绻汴P(guān)注開源,喜歡開源,想邁出第一步的話,需要勇敢一些。不用擔心你發(fā)的patch出錯,因為上游社區(qū)是可以接受的。無論是一次內(nèi)核或是紅帽維護的其他的開源項目,要想?yún)⑴c進來,或者想加入紅帽,都只需勇敢的邁出第一步?!奔t帽Kernel開發(fā)經(jīng)理楊瑞瑞表示。