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