創(chuàng)造一個讓每個人的夢想都能實現(xiàn)的智能世界,可能是每個開發(fā)者心中都有的夢想。
可是開發(fā)者們的第一步該從何入手呢?
選擇一種語言語法,用幾十行代碼來實現(xiàn)一個小小的功能?
還是通過數(shù)百行的數(shù)據(jù)結(jié)構(gòu),或是上千行的算法和優(yōu)化,甚至高達幾萬行代碼的架構(gòu)來構(gòu)建一個具體事項的解決方案?
如果開發(fā)者有足夠的“野心”,他一定會選擇數(shù)十萬甚至上百萬行代碼的操作系統(tǒng),作為一切軟件開發(fā)的基礎(chǔ),創(chuàng)造出一個龐大且紛繁的生態(tài)。
那么問題來了,開發(fā)者如何才能參與到操作系統(tǒng)級別基礎(chǔ)軟件的開發(fā)工作當中去呢?
不久前,openEuler對外發(fā)布了openEuler 20.09版本,打開了一扇讓我們看到多樣計算未來的窗口,同時也給所有的開發(fā)者們提供了一個與偉大同行的機會。
一、Linus老矣,Linux的未來在哪?
每個開發(fā)者都想?yún)⑴c系統(tǒng)內(nèi)核的開發(fā),真正控制所有將在計算機中發(fā)生的事情,在接受這項挑戰(zhàn)之前,開發(fā)者對這項工作的難度有多大的心理預(yù)期?
我們可以一起來看看Linux的內(nèi)核維護項目。
作為當前世界上最為流行的操作系統(tǒng),Linux在超過20億的設(shè)備上運行。
十九年前初代Linux系統(tǒng)內(nèi)核開源時,代碼總量約11萬行,經(jīng)過了近百萬次的提交,無數(shù)個版本迭代,目前源代碼已經(jīng)超過了2780萬行。Linux也成為人類技術(shù)發(fā)展中不可或缺的一部分。
可就是這樣一個在行業(yè)內(nèi)極具影響和分量的項目也面臨著后繼乏人的窘境。
在今年7月的線上開源峰會與嵌入式Linux大會上,Linux締造者Linus Torvalds談到了為開源操作系統(tǒng)尋找未來維護者時的種種挑戰(zhàn)。
目前,Linux內(nèi)核維護者主要還是即將年滿51歲的Linus和一些50或60后的老程序員,當Linux社區(qū)開始考慮交接變革時,并沒有合適的年輕開發(fā)者可以接棒。
之所以會如此,除了Linus過于嚴厲,讓年輕人望而卻步之外,還有兩個原因。
其一是如何獲得社區(qū)的信任需要一個長時間的過程。
作為內(nèi)核維護者,則意味著你必須長期存在,每天都要在電腦前閱讀來自全球各地的電子郵件,對郵件做出反應(yīng),Linus堅持這項工作整整30年了。
當然,也并不是說你有時間,愿意為項目付出,就能成為合格的內(nèi)核維護者。因為隨著Linux系統(tǒng)不斷進化,越來越多的人和智能化的開發(fā)都依賴于Linux內(nèi)核,相應(yīng)的,代碼貢獻者們對內(nèi)核維護者的要求和期望也越來越高。
內(nèi)核維護者必須“德高望重”,具有領(lǐng)導(dǎo)者的氣質(zhì)才能獲得代碼貢獻者乃至整個社區(qū)的信任,而這都是需要時間的。
其二是這項工作確實很難。
由于學(xué)習(xí)門檻太高,缺乏曲線平滑的學(xué)習(xí)資料,一些資深的程序員,用各種不同的語言編寫了20多年代碼,在面對Linux內(nèi)核開發(fā)時,仍然不知道該從哪里開始才能對項目作出有用的貢獻。
事實上,Linux社區(qū)并不是沒有意識到建立一個由淺及深、完善的學(xué)習(xí)文檔和示例對于整個項目吸引新人才的意義,但根據(jù)Linux內(nèi)核項目當今的體量,要做出一份完美的文檔是一件非常艱難的工作。
與十幾年前相比,Linux內(nèi)核項目的上手難度已呈指數(shù)倍增長,一個新人開發(fā)者幾乎要花費幾個月甚至1年多的時間才能有可能掌握Linux內(nèi)核的全貌,這是一個巨大的、艱難的過程。
二、華為啃下硬骨頭, 窺視多樣計算的未來
世上無難事,只怕有心人。
在過去的十九年時間內(nèi),為Linux系統(tǒng)貢獻過代碼的開發(fā)者不計其數(shù),目前仍在參與開發(fā)的還有21000多人。
如果說處理器是硬件的核心,那操作系統(tǒng)就是整個軟件生態(tài)的根基,從上文提到的Linux內(nèi)核維護項目的現(xiàn)狀來看,建立一個屬于自己的操作系統(tǒng)和軟件生態(tài),僅僅走出第一步,肩上就已經(jīng)有數(shù)不清的枷鎖。
在多樣性計算時代大門悄然打開之際,華為站了出來,嘗試著與那些桎梏行動的枷鎖進行搏擊,華為深知,這是自身脫離技術(shù)封鎖困境的機會,也是作為開發(fā)者的目標和使命。
于是,我們看到了在最新發(fā)布的Linux Kernel 5.8版本中,華為一躍成為內(nèi)核代碼貢獻排名第二。
從公司貢獻角度來說,華為提交的補丁數(shù)量位列第二名,占比8.6%,代碼修改行位列第一,占比27.8%。
或許會有疑問,這么難的一件事情,華為是怎么做到的?
對照著Linux內(nèi)核維護項目,我們一起來看看華為是如何將問題逐一排除的。
首先,華為就像Linus所說所做的那樣,做到了長時間的堅持。
10年前,華為在Linux社區(qū)合入了第一個patch,整整10年,華為始終堅持在社區(qū)貢獻代碼,在自身獲得成長的同時,也贏得了社區(qū)和開發(fā)者們的尊重與認可。
社區(qū)和開發(fā)者們的認可來自于華為這10年來在基礎(chǔ)軟件上所體現(xiàn)出的全面實力。
目前,華為在社區(qū)已經(jīng)擁有20+Maintainer,在容器所使用的核心功能Cgroup,軟硬件解耦A(yù)CPI on ARM64,文件系F2FS/EROFS,RAS EDAC框架,Media子系統(tǒng),IIO子系統(tǒng),以及Perf on ARM64等子系統(tǒng)上,華為都為社區(qū)貢獻了代碼。
Linux Kernel 5.8版本中,華為貢獻了1399個補丁,除了前文中提及的系統(tǒng)特性外,還有包括網(wǎng)絡(luò)、文件系統(tǒng)、perf調(diào)測、安全等關(guān)鍵子系統(tǒng)的200+ 的bugfix補丁,這些都是Linux能夠正常運行所需的基礎(chǔ)軟件系統(tǒng),對于Linux是非常重要的。
其次,為降低開發(fā)門檻和提升開發(fā)效率,華為開發(fā)了自動內(nèi)核缺陷發(fā)現(xiàn)機器人HULK Robot(Huawei Unified Linux Kernel Robot)來輔助開發(fā)。
開源模式下除了帶來業(yè)務(wù)生態(tài)快速催熟等各種紅利外,也引入了越來越多的挑戰(zhàn):海量頻繁的補丁合入、成千上萬的開發(fā)人員、一行修改百倍測試等等。
HULK Robot融合了大數(shù)據(jù)機器學(xué)習(xí)和語義分析技術(shù),集成基于場景語意的模糊測試技術(shù)、全系統(tǒng)函數(shù)級故障注入配合精準的單元測試,使HULK Robot成為一個高效、精準的可擴展測試系統(tǒng),大幅提高測試效率和問題檢出效率。
最后,華為在融入開源生態(tài)的同時,也將自身的生態(tài)資源帶入到開源社區(qū)。
在開源項目中,為了打通ARM全棧的能力,華為已經(jīng)在40+ 主流技術(shù)社區(qū)做出代碼貢獻,目前包括但不限于:Kubernetes、OpenStack、Hadoop、TensorFlow、httpd、MySQL、X265等都已經(jīng)支持ARM架構(gòu)。
2019年年底,華為宣布基于Linux內(nèi)核開發(fā)的服務(wù)器操作系統(tǒng)EulerOS正式開源,命名為openEuler。
華為和眾多背后默默貢獻的合作伙伴,開始逐漸開放他們在ICT基礎(chǔ)軟件領(lǐng)域的技術(shù)積累,其目標是將openEuler打造成最具活力的開源社區(qū)。
截至目前國內(nèi)有6 家合作伙伴發(fā)行了基于openEuler的商業(yè)發(fā)行版,分別是:麒麟軟件、統(tǒng)信軟件、中科院軟件所、普華軟件、湖南麒麟、萬里開源。
三、openEuler, 一枚讓開發(fā)者進入新時代的鑰匙
openEuler打開了一扇讓我們看到多樣計算未來的窗口,同時也是一枚讓開發(fā)者參與到多樣計算未來建設(shè),讓開發(fā)者進入到多樣計算新時代的鑰匙。
openEuler包含了華為在操作系統(tǒng)、編譯器、JDK等領(lǐng)域多年基礎(chǔ)平臺的開發(fā)經(jīng)驗,同時作為企業(yè)級的通用服務(wù)器架構(gòu)平臺,openEuler希望能從實踐出發(fā),推動國內(nèi)操作系統(tǒng)真正走出第一步。
通過這次開源,openEuler與全球的開發(fā)者構(gòu)建的是一個開放、多元的社區(qū),更是一個架構(gòu)包容的軟件生態(tài)體系。
一個問題,中國的開發(fā)者們準備好了嗎?
根據(jù)CSDN發(fā)布的《2019-2020中國開發(fā)者調(diào)查報告》顯示,目前全國30歲以下開發(fā)者人數(shù)占比超8成,達到82%,這個數(shù)據(jù)在2018年還只有77%。
此外66%開發(fā)者擁有本科學(xué)歷,12%開發(fā)者擁有碩士或以上學(xué)歷。
根據(jù)開發(fā)者群體年輕化的趨勢,30歲及以下開發(fā)者比例超過80%且有所提升,這意味著,越來越多的新鮮血液補充到開發(fā)者這個群體中,同時也對計算產(chǎn)業(yè)注入了源源不斷的新動能。
讓人可喜的是,數(shù)量如此龐大的開發(fā)者隊伍中,大家的學(xué)習(xí)熱情高漲,5成開發(fā)者通過自學(xué),31%接受了軟件開發(fā)的在職培訓(xùn)。其中37%的開發(fā)者愿意付費學(xué)習(xí),近6成開發(fā)者每周學(xué)習(xí)6小時以上,7成開發(fā)者參加培訓(xùn)的預(yù)算來自個人。
不過其中也有困境,開發(fā)者的關(guān)注熱點更多集中在大數(shù)據(jù)、區(qū)塊鏈、人工智能和物聯(lián)網(wǎng)等方面的應(yīng)用層,在開源項目上,半數(shù)開發(fā)者很少參與開源項目的開發(fā)、維護、運營和社區(qū)發(fā)展等,全職參與的僅7%;超過6成的開發(fā)者從未在開源項目中獲得收入;77%開發(fā)者每周在開源上投入不超過5小時。
可以確定的是,國內(nèi)的開發(fā)者幾乎100%都在使用一種或以上的開源技術(shù),但如此少的開發(fā)者參與到開源項目中,實在讓人遺憾。
openEuler 20.09版本是一道光,也是一柄劍,它撥開了籠罩在開發(fā)者四周的迷霧,斬碎了開發(fā)者欲破而不得的瓶頸,窺視到的是多樣計算的美好未來。
openEuler 20.09版本的各種新特性充分體現(xiàn)了社區(qū)大協(xié)同所帶來的優(yōu)勢:
中科院軟件所貢獻了RISC-V新指令集架構(gòu)支持;
麒麟軟件為社區(qū)共享了賞心悅目的桌面UKUI系統(tǒng);
云原生虛擬化平臺StratoVirt和 iSula容器升級版,兩者的結(jié)合重構(gòu)了輕量級云原生基礎(chǔ)架構(gòu);
BiSheng JDK為 Java應(yīng)用帶來更強的性能;
IMA完整性度量架構(gòu)和secGear機密計算框架,給開發(fā)者在多平臺安全應(yīng)用的開發(fā)效率帶來倍級提升;
此外,20.09版本里面也包含Compass CI測試平臺、A-Tune智能調(diào)優(yōu)工具。
更低的門檻,越來越多的同行者,置身于多樣計算的變革中,開發(fā)者在openEuler開源社區(qū)中必定能感受到更強大的力量。
雖然openEuler的背后有華為和眾多合作伙伴的貢獻和支撐,但無論從建立軟件生態(tài)的角度,還是僅談開源這件事,更重要的,都是之后要走的每一步。
1752年歐拉創(chuàng)造出了歐拉公式,它將數(shù)學(xué)最重要的幾個數(shù)字,超數(shù)、自然對數(shù)、圓周率、虛數(shù)、自然數(shù)聯(lián)系到了一起,當時的數(shù)學(xué)家們評論它是“上帝創(chuàng)造的公式”。
很多時候,我們只能看它,但不能理解它。
而包括openEuler在內(nèi)的整個開源領(lǐng)域,需要的不僅僅是對開源這件事的理解,更需要每一位開發(fā)者在當前嚴峻環(huán)境下面對未來的視野,這其中的參與感與使命感尤為重要。
從0到1并不難,真正難的是能形成良性生態(tài)的1之后的每一個0。
參與其中的每一位開發(fā)者是最關(guān)鍵的要素,他們獨一無二,他們要忍受孤獨與寂寞,他們也要承擔(dān)質(zhì)疑與壓力。
在1024程序員節(jié)來臨之際,openEuler社區(qū)用一種特殊的方式向開發(fā)者們致敬,特意做了這樣一個程序,用最迷人的數(shù)學(xué)公式經(jīng)過最復(fù)雜的演變,生成獨一無二的圖像,送給每一個從事基礎(chǔ)軟件開發(fā)和整個開源領(lǐng)域里堅定、堅持且獨特的開發(fā)者。openEuler社區(qū)特意做了這樣一個程序,用最迷人的數(shù)學(xué)公式經(jīng)過最復(fù)雜的演變,生成獨一無二的圖像,送給每一個從事基礎(chǔ)軟件開發(fā)和整個開源領(lǐng)域里堅定、堅持且獨特的開發(fā)者。
加入openEuler,開始構(gòu)建中國基礎(chǔ)軟件生態(tài)未來。
*此內(nèi)容為【科技向令說】原創(chuàng),未經(jīng)授權(quán),任何人不得以任何方式使用,包括轉(zhuǎn)載、摘編、復(fù)制或建立鏡像。
文 | 曾響鈴
來源 | 科技向令說
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!