圖片來(lái)源@視覺(jué)中國(guó)
文 | 顯微股市,作者|小北,編輯 | 蔡玉
2021年,“鼓勵(lì)企業(yè)開(kāi)放源代碼”、“完善開(kāi)源知識(shí)產(chǎn)權(quán)和法律體系”被寫(xiě)入了國(guó)家“十四五”規(guī)劃。
開(kāi)源,這一刻被真正意義上被提到了“國(guó)家戰(zhàn)略”的高度,成為未來(lái)科技發(fā)展不可忽略的一環(huán)。
所謂開(kāi)源,是指在開(kāi)發(fā)軟件后,將它的源代碼公開(kāi)分享的一種行為,任何人都可以查看、修改、分發(fā)開(kāi)源代碼。
它是一種“集市文化”,任何處于這個(gè)“集市”中的人都可以對(duì)代碼提出自己的見(jiàn)解,共同進(jìn)入到軟件開(kāi)發(fā)的過(guò)程中。在中國(guó)互聯(lián)網(wǎng)發(fā)展的早期階段,開(kāi)源快速補(bǔ)齊了中國(guó)在技術(shù)上和國(guó)際的差距,促進(jìn)了互聯(lián)網(wǎng)的蓬勃發(fā)展。
從開(kāi)源的歷史里也不難發(fā)現(xiàn),那些獲得認(rèn)可、掌握最流行的開(kāi)源項(xiàng)目的人,后來(lái)大多成了新標(biāo)準(zhǔn)的制定者,能在未來(lái)技術(shù)標(biāo)準(zhǔn)、系統(tǒng)框架的入口,品牌效應(yīng)上具有優(yōu)勢(shì)。
如今,各個(gè)頂級(jí)互聯(lián)網(wǎng)企業(yè)都在積極擁抱開(kāi)源。
阿里有超過(guò)2萬(wàn)人在為開(kāi)源添磚加瓦,開(kāi)源項(xiàng)目超過(guò)1700個(gè),在GitHub的企業(yè)貢獻(xiàn)總榜中排行第12名;騰訊的首個(gè)AI開(kāi)源項(xiàng)目Angel則在2019年12月底從LF AI基金會(huì)順利畢業(yè),那是linux基金會(huì)旗下面向AI領(lǐng)域的頂級(jí)基金會(huì)。此次順利畢業(yè)意味著它得到了全球技術(shù)專家的認(rèn)可,成為世界最頂級(jí)的AI開(kāi)源項(xiàng)目之一。
螞蟻在云原生、數(shù)據(jù)庫(kù)、前端和移動(dòng)端等領(lǐng)域開(kāi)源了800個(gè)項(xiàng)目,成長(zhǎng)起來(lái)20個(gè)國(guó)際范圍內(nèi)頂級(jí)社區(qū)明星項(xiàng)目。
百家爭(zhēng)鳴,共同繁榮,中國(guó)已逐漸生長(zhǎng)出越來(lái)越亮眼的開(kāi)源項(xiàng)目。
近年來(lái),中國(guó)開(kāi)發(fā)者已經(jīng)成為全球開(kāi)源體系中的重要力量。公開(kāi)信息統(tǒng)計(jì)顯示,中國(guó)的代碼在全球開(kāi)源社區(qū)的比重已占40%左右,目前全球6000多萬(wàn)開(kāi)發(fā)者中,至少有2000多萬(wàn)來(lái)自中國(guó)。
但我們也好奇,相比國(guó)外,中國(guó)的開(kāi)源歷史也只有短短三十年時(shí)間,這三十年,到底是哪些人在默默推動(dòng)開(kāi)源環(huán)境的變化?
而從“一無(wú)所有”到“繁花似錦”,中國(guó)又是如何逐漸走出自己技術(shù)自主的道路的?
本期顯微故事找到了那些在中國(guó)開(kāi)源進(jìn)程中默默貢獻(xiàn)的程序員們,希望從他們身上,看到中國(guó)開(kāi)源的跌宕三十年。
以下是關(guān)于他們的真實(shí)故事:
為了打造中國(guó)自己的數(shù)據(jù)庫(kù),我賭上了最寶貴的十年
讓我們把時(shí)間撥回到21世紀(jì)的前十年。
2010年,中國(guó)互聯(lián)網(wǎng)迎來(lái)蓬勃發(fā)展,團(tuán)購(gòu)網(wǎng)站大行其道,網(wǎng)絡(luò)游戲方興未艾,中國(guó)的網(wǎng)民數(shù)首次突破4億大關(guān)。
也就是在那一年,國(guó)務(wù)院新聞辦公室首次發(fā)表了《中國(guó)互聯(lián)網(wǎng)狀況》白皮書(shū),互聯(lián)網(wǎng)從那時(shí)起越來(lái)越多地進(jìn)入大眾的視野。
從這一年往前看,開(kāi)源及開(kāi)源所帶來(lái)的開(kāi)放、共建的“集市文化”,很大程度上幫助了中國(guó)互聯(lián)網(wǎng)的建立;往后看,數(shù)量越來(lái)越多的網(wǎng)民,十三億中國(guó)人所帶來(lái)的有別于西方互聯(lián)網(wǎng)的各類需求,都在暗中推動(dòng)著技術(shù)自主的訴求的產(chǎn)生。
快捷地拿來(lái)別人的代碼直接使用,和耗費(fèi)心力、創(chuàng)造屬于自己的代碼,這兩種傾向的暗流涌動(dòng),在2010年這看似平靜的水面下,已初現(xiàn)端倪。
最先讓人感知到的是“數(shù)據(jù)庫(kù)”自建的必要性。
在計(jì)算機(jī)領(lǐng)域,數(shù)據(jù)庫(kù)是最基礎(chǔ)的設(shè)施之一,任何軟件的運(yùn)行、用戶的訪問(wèn)操作,都會(huì)涉及到數(shù)據(jù)庫(kù)的信息存儲(chǔ)和操作功能。
它就像地基,為計(jì)算機(jī)上的軟件使用提供最基本的底層架構(gòu)。但當(dāng)時(shí),頂尖的數(shù)據(jù)庫(kù)都來(lái)自美國(guó),其中又以甲骨文的Oracle數(shù)據(jù)庫(kù)的使用最為廣泛。
在那一年,線上購(gòu)物平臺(tái)淘寶的同時(shí)訪問(wèn)量已達(dá)到百萬(wàn)量級(jí),龐大的數(shù)據(jù)量就需要購(gòu)買(mǎi)Oracle龐大的數(shù)據(jù)庫(kù),而這筆支出是驚人的。
時(shí)任阿里首席技術(shù)官的王堅(jiān)算了一筆賬,把1萬(wàn)億元GMV折算成數(shù)據(jù)量,再折算成需要的IBM小型機(jī)數(shù)量、Oracle數(shù)據(jù)庫(kù)量、EMC存儲(chǔ)數(shù)量,再換算成具體價(jià)格相加,得到他們每年需要給IOE的采購(gòu)費(fèi)200億元。
這筆錢(qián)甚至超過(guò)他們每年所賺的利潤(rùn)。
從那個(gè)時(shí)刻開(kāi)始,數(shù)據(jù)庫(kù)的自建被提上了議程。陽(yáng)振坤授命開(kāi)啟了自建數(shù)據(jù)庫(kù)OceanBase項(xiàng)目的道路。
圖 | 陽(yáng)振坤和OceanBase早期團(tuán)隊(duì)在一起
當(dāng)時(shí),業(yè)內(nèi)領(lǐng)先的五大數(shù)據(jù)庫(kù)里,有兩個(gè)數(shù)據(jù)庫(kù)是開(kāi)源的。較為簡(jiǎn)便的方法是直接把開(kāi)源數(shù)據(jù)庫(kù)的代碼拿來(lái)修改和使用。但作為OceanBase的創(chuàng)始人,陽(yáng)振坤拒絕這樣做。
加入阿里前,陽(yáng)振坤從事分布式系統(tǒng)研發(fā),加入阿里后,擺在他面前的有兩條路:一是加入正在快速發(fā)展的淘寶業(yè)務(wù)團(tuán)隊(duì),主管技術(shù),這是一條已經(jīng)能看到很大的發(fā)展機(jī)會(huì)、相對(duì)清晰的道路;但陽(yáng)振坤選擇了另外一條道路:從頭組建團(tuán)隊(duì)做一個(gè)技術(shù)平臺(tái),把OceanBase數(shù)據(jù)庫(kù)做出來(lái)。
一方面,當(dāng)時(shí)主流的數(shù)據(jù)庫(kù)都是集中式分布數(shù)據(jù)庫(kù),根本無(wú)法適應(yīng)大規(guī)模、同時(shí)性的數(shù)據(jù)訪問(wèn),但當(dāng)時(shí)淘寶的同時(shí)使用人數(shù)已達(dá)數(shù)百萬(wàn),繼續(xù)用集中式分布數(shù)據(jù)庫(kù),承載困難,且造價(jià)很高(集中式分布的數(shù)據(jù)處理和存儲(chǔ)通常設(shè)在高端服務(wù)器和高端存儲(chǔ)設(shè)備上,成本很高);另一方面,陽(yáng)振坤也想做出中國(guó)自己的數(shù)據(jù)庫(kù)。
他提出了分布式數(shù)據(jù)庫(kù)的理念:在數(shù)據(jù)庫(kù)內(nèi)把數(shù)據(jù)切小,放到多臺(tái)計(jì)算機(jī)上。只要大多數(shù)計(jì)算機(jī)運(yùn)轉(zhuǎn)正常,數(shù)據(jù)就能夠得到保障。
同時(shí),因?yàn)橛布捎玫腜C機(jī),成本也會(huì)降低。另一方面,他把數(shù)據(jù)庫(kù)的兩大功能:記賬和數(shù)據(jù)分析,組合在了一起,以往需要用到兩個(gè)不同的數(shù)據(jù)庫(kù)系統(tǒng)來(lái)滿足的功能,在陽(yáng)振坤的構(gòu)建里成為了一個(gè)一站式解決方案。
這個(gè)構(gòu)想當(dāng)然很好,但要真正建立,卻需要至少好幾年的時(shí)間,業(yè)務(wù)不等人。
陽(yáng)振坤只能在這個(gè)體系構(gòu)想之下,每次逐步迭代一點(diǎn)點(diǎn)的功能,小步快跑地把整個(gè)體系構(gòu)建起來(lái)。
他一個(gè)一個(gè)地跑業(yè)務(wù)部門(mén),終于找到收藏夾有一個(gè)數(shù)據(jù)庫(kù)的需求。
用戶在淘寶進(jìn)入收藏夾后,都會(huì)調(diào)取數(shù)據(jù)庫(kù)。收藏夾是用戶常用的功能,基于淘寶當(dāng)時(shí)的使用人數(shù),收藏夾所涉及到的數(shù)據(jù)十分龐大,用Oracle非常昂貴,因此成為業(yè)務(wù)部門(mén)的一個(gè)燙手山芋,也成了陽(yáng)振坤能證明OceanBase的開(kāi)始。
陽(yáng)振坤接下了這個(gè)需求,用2個(gè)月做了模型,6個(gè)月投入使用。
從這時(shí)開(kāi)始,陽(yáng)振坤的OceanBase逐漸證明著自己。從一個(gè)基礎(chǔ)的收藏夾需求,到2014年雙十一Oracle崩潰,OceanBase臨危受命承擔(dān)支付寶10%的交易流水,再到承擔(dān)支付寶100%的交易。陽(yáng)振坤用十年的時(shí)間,終于搭建起了中國(guó)人自己研發(fā)的數(shù)據(jù)庫(kù)。
這個(gè)數(shù)據(jù)的地基,才算真的被夯實(shí)了起來(lái)。
“主流的五大數(shù)據(jù)庫(kù)里,最晚出現(xiàn)的是MySQL,1996年,此后這么多年,數(shù)據(jù)庫(kù)領(lǐng)域一直沒(méi)有大的更新。因?yàn)閿?shù)據(jù)庫(kù)做起來(lái)本身非常復(fù)雜、耗時(shí)很久,需要一些很優(yōu)秀的人,一直持續(xù)不斷地投入,十年才能見(jiàn)成效。”
2012年,陽(yáng)振坤來(lái)到螞蟻集團(tuán),在支付寶海量數(shù)據(jù)的應(yīng)用場(chǎng)景的錘煉環(huán)境下,正式開(kāi)始了OceanBase分布式數(shù)據(jù)庫(kù)研發(fā)和替換Oracle的長(zhǎng)征之路。
但做出來(lái)并不是全部,數(shù)據(jù)庫(kù)的一切都要拿到數(shù)據(jù)去驗(yàn)證,而只有越來(lái)越多的業(yè)務(wù)場(chǎng)景驗(yàn)證,才能讓大家了解和接受這個(gè)新生的數(shù)據(jù)庫(kù)。
研發(fā)十年,要被市場(chǎng)接受,至少也需要十年。
2021年,OceanBase開(kāi)源,釋放出了它的內(nèi)核。對(duì)OceanBase來(lái)說(shuō),開(kāi)源帶來(lái)的越來(lái)越多的使用者、越來(lái)越多的業(yè)務(wù)場(chǎng)景能幫助它迭代得更穩(wěn)健,也能讓它更為大眾接受。
對(duì)陽(yáng)振坤而言,他還有一點(diǎn)自己的“私心”:希望中國(guó)的開(kāi)源能更加自主。
“開(kāi)源是大家有來(lái)有往才能構(gòu)建一個(gè)社區(qū),如果我們只是拿別人的東西來(lái)用,形成慣性,可能就不會(huì)想自己去研發(fā)東西了,這就會(huì)導(dǎo)致我們沒(méi)有自己的技術(shù),成了我們‘被別人開(kāi)源’。
現(xiàn)在我們?cè)谲浖I(lǐng)域用的很多核心的東西,如數(shù)據(jù)庫(kù)、操作系統(tǒng),都來(lái)自美國(guó),底層基礎(chǔ)設(shè)施部分我們研究得還比較少,開(kāi)源也大多在上層的應(yīng)用系統(tǒng)上。這是不平衡的。我希望我們的開(kāi)源可以逐步往產(chǎn)業(yè)鏈上游走,走一條更難、但價(jià)值更大、可持續(xù)的路。”
在開(kāi)源的集市里,完善一個(gè)新領(lǐng)域的底層設(shè)計(jì)
陽(yáng)振坤搭建起了原生分布式的數(shù)據(jù)庫(kù),為數(shù)據(jù)庫(kù)這類基礎(chǔ)軟件能承載中國(guó)十億網(wǎng)民吃了一顆定心丸。
但互聯(lián)網(wǎng)的繁榮,需要的不僅是地基,還有合適的土壤,以及土壤上能長(zhǎng)出的姹紫嫣紅、爭(zhēng)妍斗艷的花園。
一個(gè)合適的土壤,這正是Kata Containers的創(chuàng)始人、螞蟻集團(tuán)資深技術(shù)專家王旭想要做的事。
王旭接觸開(kāi)源很早,他學(xué)生時(shí)代正值Linux傳入中國(guó),自由軟件運(yùn)動(dòng)也為這些學(xué)生所了解,開(kāi)源領(lǐng)域領(lǐng)袖級(jí)的人物Richard Stallman針對(duì)以UNIX進(jìn)行商業(yè)發(fā)布而不再提供源代碼的“閉源”,提出自由軟件的概念,后來(lái)逐漸演化出“開(kāi)源”的概念。
Richard Stallman(RMS)創(chuàng)立了自由軟件基金會(huì)FSF,提倡軟件是人類共同的精神財(cái)富,和牛頓定律一樣,不應(yīng)該被公司圈起來(lái)。
如今我們擔(dān)心“傳染性”的GPL,正是RMS精心設(shè)計(jì)的保護(hù)源代碼萬(wàn)世開(kāi)放的法律基礎(chǔ),正是在這種保護(hù)之下,開(kāi)源社區(qū)逐漸發(fā)展壯大。
可以說(shuō),開(kāi)源從最初興起時(shí),就充滿了理想主義色彩。而對(duì)王旭來(lái)說(shuō),他的第一印象就是“好玩”,一臺(tái)裸機(jī),網(wǎng)絡(luò)還沒(méi)連上,他就能玩上好幾天,反復(fù)嘗試各種代碼,在代碼的廣闊天地里遨游。
隨著越來(lái)越多地接觸開(kāi)源,王旭發(fā)現(xiàn),開(kāi)源本身自由、開(kāi)放、共建的特質(zhì),能讓軟件迭代得更好。
在開(kāi)源著作《大教堂和集市》里,作者Eric Raymond指出:世界上的建筑可以分為兩種,一種是集市,天天開(kāi)放在那里,從無(wú)到有,從小到大;還有一種是大教堂,幾代人嘔心瀝血,幾十年才能建成,投入使用。
毫無(wú)疑問(wèn),開(kāi)源就是一種“集市”,當(dāng)更多的用戶參與其中,不斷review后,開(kāi)源軟件反而能因有了更多的用戶反饋,而獲得更好的迭代。
王旭喜歡開(kāi)源所代表的這種“集市文化”,他寫(xiě)過(guò)玩Linux的電子書(shū),翻譯了很多文章,并在那時(shí)候就在心里埋下一顆種子,想做一個(gè)自己的開(kāi)源軟件。
這個(gè)機(jī)會(huì)在2015年出現(xiàn)了。
在2014年,Docker(容器技術(shù))已經(jīng)逐漸被人們所認(rèn)識(shí)。從前計(jì)算機(jī)上運(yùn)行應(yīng)用,不同機(jī)器環(huán)境的差異性總是一個(gè)非常棘手的問(wèn)題,會(huì)發(fā)現(xiàn)程序會(huì)出現(xiàn)一些或大或小的行為差異。
對(duì)于大規(guī)模系統(tǒng)的運(yùn)維來(lái)說(shuō),保持環(huán)境的一致性、確保應(yīng)用行為的可預(yù)測(cè)性,就成為了一個(gè)非常復(fù)雜而有技術(shù)含量的問(wèn)題,自然也是個(gè)有價(jià)值的課題。
但Docker一口氣從源頭上解決了這一問(wèn)題。它用了一個(gè)容器,把代碼、運(yùn)行環(huán)境、系統(tǒng)工具、系統(tǒng)庫(kù)、設(shè)置包了進(jìn)去,像一個(gè)罐子一樣,拿著這個(gè)罐子,程序在任何操作系統(tǒng)都能暢通地運(yùn)行。
當(dāng)時(shí)Docker喊出了一句口號(hào):“Build once,RunAnyWhere。”完全無(wú)視開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境不一致的干擾。
程序?qū)懲曛蟠虬社R像,就可以隨處部署和運(yùn)行。這對(duì)當(dāng)時(shí)總要考慮運(yùn)行環(huán)境、總要修bug的程序員來(lái)說(shuō),實(shí)在是天大的誘惑。
毫無(wú)疑問(wèn),Docker技術(shù)在當(dāng)時(shí)的代碼圈和程序圈非常轟動(dòng),而王旭瞄準(zhǔn)了這個(gè)機(jī)會(huì)。
同樣是2010年代,隨著互聯(lián)網(wǎng)的發(fā)展,大量的程序都在往云上走。當(dāng)大家都在嘗試在云上部署應(yīng)用,為云開(kāi)發(fā)代碼時(shí),一個(gè)無(wú)視運(yùn)行環(huán)境影響,直接能讓軟件運(yùn)行的容器化環(huán)境,無(wú)疑能讓軟件開(kāi)發(fā)如虎添翼。
如果容器化與云結(jié)合起來(lái),那么后來(lái)的應(yīng)用開(kāi)發(fā)者和使用者,就不用再思考從集群硬件管理到維護(hù)操作系統(tǒng)環(huán)境這一系列的煩心事,他們只需要確定需要什么服務(wù),如何定義應(yīng)用,就可以了。
所有應(yīng)用底層抽象的事情被全部剝離了出來(lái),變成了花園底層適合所有植被生長(zhǎng)的土壤,后來(lái)者不用再考慮土壤問(wèn)題,只需要考慮想要什么花、什么樹(shù),就能直接種下去,這就是所謂“云原生”的原始動(dòng)機(jī)。
雖然這在未來(lái)必然是一個(gè)趨勢(shì),但容器化和云要完美結(jié)合,天然會(huì)產(chǎn)生一個(gè)矛盾:容器這個(gè)技術(shù)的安全隔離性不夠,和云的結(jié)合需要大量的額外保障,來(lái)破壞這之中的簡(jiǎn)潔之美。
傳統(tǒng)的操作系統(tǒng)容器技術(shù)的隔離指的是管理上的隔離,并不是指它運(yùn)行起來(lái)就互相不干擾、沒(méi)有安全風(fēng)險(xiǎn),相反,因?yàn)橥粋€(gè)操作系統(tǒng)上的容器之間共享了很多狀態(tài),安全風(fēng)險(xiǎn)是很難消除的。
而云上又特別講究用戶之間的隔離性,它會(huì)假設(shè)每個(gè)人都是陌生人,不同的用戶之間要隔離住,要互相不能侵犯,同時(shí)互相之間的干擾也要盡可能小。
它既是趨勢(shì),又因隔離性而面臨困難,王旭他們因此想到,可以做一個(gè)軟件增強(qiáng)容器的安全隔離性,做一個(gè)「安全容器」。
但實(shí)際上,要增強(qiáng)操作系統(tǒng)容器的安全性是比較困難的,學(xué)界也有一些研究證明容器和安全之間有不易解決的死結(jié)存在。
當(dāng)然正如David Wheeler所說(shuō),“在計(jì)算機(jī)科學(xué)中,所有問(wèn)題都可以通過(guò)增加一個(gè)間接層來(lái)解決”,容器安全性也不例外。
但David Wheeler也說(shuō),“這解決不了間接層過(guò)多的問(wèn)題”,多增加一個(gè)間接層會(huì)帶來(lái)復(fù)雜,不僅影響美感,也帶來(lái)滋生Bug的土壤。
后來(lái),王旭他們想到了主流云主機(jī)里都會(huì)使用、早已被證明安全的虛擬機(jī)技術(shù),于是反向思考能否將虛擬機(jī)技術(shù)剪裁到容器這種輕量快速結(jié)構(gòu),并基于這個(gè)思路推出了runV。
圖 | 王旭和Kata Containers團(tuán)隊(duì)
這和英特爾的clear containers是同一個(gè)思路,二者用完全不同的代碼實(shí)現(xiàn)了同一種方式解決容器上云的安全問(wèn)題,兩個(gè)項(xiàng)目的發(fā)布時(shí)間同是2015年5月。
2017年9月,王旭他們團(tuán)隊(duì)和Intel開(kāi)源技術(shù)中心共同決定,將這兩個(gè)容器合并,并放入OSF基金會(huì)進(jìn)行管理。
2017年12月,Kata Containers項(xiàng)目正式發(fā)布,并成為OSF基金會(huì)2012年以來(lái)的第一個(gè)新頂級(jí)項(xiàng)目,王旭作為聯(lián)合創(chuàng)立者之一,成為項(xiàng)目Kata架構(gòu)委員會(huì)的創(chuàng)始成員。Kata容器和半年后發(fā)布的來(lái)自谷歌的gVisor并稱為目前兩大開(kāi)源安全容器技術(shù)。
開(kāi)源,對(duì)王旭來(lái)說(shuō),是一件愉快的事。這代表著他在開(kāi)源這個(gè)集市里,不僅是基于別人的代碼進(jìn)行迭代,也做出了自己的原創(chuàng)性貢獻(xiàn)。并且,因?yàn)榘踩萜魇且粋€(gè)新的方向,所以更需要被人關(guān)注,需要更多的人參與進(jìn)來(lái)。
“開(kāi)源對(duì)我們來(lái)說(shuō),帶來(lái)的裨益遠(yuǎn)大于挑戰(zhàn)。安全容器并不是一個(gè)強(qiáng)勢(shì)品類,有越來(lái)越多的競(jìng)爭(zhēng)者參與進(jìn)來(lái)、被人看到,也才能讓大家知道這個(gè)方向確實(shí)是可行的,在我們開(kāi)源后半年,google開(kāi)發(fā)了gVisor,又過(guò)了半年,AWS(亞馬遜云)也開(kāi)源了新的安全容器相關(guān)的firecracker項(xiàng)目,這些“競(jìng)品”對(duì)我們來(lái)說(shuō)更多的不是競(jìng)爭(zhēng)的壓力,而是在云原生生態(tài)系統(tǒng)里更容易得到上下游的支持了。”
對(duì)王旭來(lái)說(shuō),開(kāi)源代表的不僅是軟件的共建,還具備一些文化屬性,它是一個(gè)關(guān)于“人”的活動(dòng)。
如今我們開(kāi)源的產(chǎn)品越來(lái)越多,但在開(kāi)源文化上還處于比較初期的階段,王旭也在和其他單位的開(kāi)源工作者一起,作為T(mén)OC成員,共建中國(guó)自己的開(kāi)源社區(qū)——木蘭開(kāi)源社區(qū),這里除了開(kāi)源項(xiàng)目的參與者們,也包括開(kāi)源研究者,比如木蘭開(kāi)源許可證的作者北大的周明輝老師等,木蘭社區(qū)通過(guò)導(dǎo)師輔導(dǎo)、項(xiàng)目孵化等各種方式幫助國(guó)內(nèi)開(kāi)源人成長(zhǎng)。
他希望通過(guò)自己的一點(diǎn)努力,讓中國(guó)的開(kāi)源做得越來(lái)越好。
2021年,世界頂尖開(kāi)源基金會(huì)CNCF中國(guó)區(qū)TOP10的貢獻(xiàn)者中,有4位來(lái)自螞蟻集團(tuán),都是王旭團(tuán)隊(duì)的成員。這四位技術(shù)同學(xué)主要參與了Dragonfly和Nydus這兩個(gè)互相關(guān)聯(lián)的開(kāi)源項(xiàng)目。
從第一行代碼就開(kāi)源,讓中后臺(tái)也能擁有良好體驗(yàn)
當(dāng)?shù)鼗⑼寥蓝家褱?zhǔn)備就緒,再往上走,便是花園里的花花草草,這些植被對(duì)應(yīng)在計(jì)算機(jī)領(lǐng)域,則是上層的應(yīng)用系統(tǒng)。
應(yīng)用系統(tǒng)千姿百態(tài),但如何讓?xiě)?yīng)用系統(tǒng)的體驗(yàn)性更好,則是一個(gè)共通性問(wèn)題。
螞蟻集團(tuán)的前端工程師偏右(花名)想要解決的就是這個(gè)問(wèn)題,他聚焦的是中后臺(tái)體驗(yàn)領(lǐng)域。
2015年,開(kāi)源社區(qū)里出現(xiàn)了關(guān)于中后臺(tái)設(shè)計(jì)系統(tǒng)的開(kāi)源編碼,這是一個(gè)“寫(xiě)下第一行代碼就開(kāi)源”的項(xiàng)目,后來(lái)它成為設(shè)計(jì)交互領(lǐng)域名列前茅的開(kāi)源軟件——Ant Design。
偏右印象很深的是,前端開(kāi)源界舉足輕重的人物,Sea.js項(xiàng)目的核心開(kāi)發(fā)者玉伯(花名)來(lái)到支付寶時(shí),他不僅帶來(lái)了前端模塊化開(kāi)發(fā)框架SeaJS,還開(kāi)啟了以開(kāi)源項(xiàng)目運(yùn)作的研發(fā)模式。
從Sea.js開(kāi)始,所有的代碼、項(xiàng)目管理、問(wèn)題追蹤、發(fā)布,甚至文檔的所有內(nèi)容,全都是在GitHub的流程下完成的。這給偏右?guī)?lái)很新鮮的體驗(yàn)。
當(dāng)一個(gè)軟件完全開(kāi)源,吸引了很多開(kāi)源社區(qū)的同學(xué)一起討論、共建后,偏右發(fā)現(xiàn),他對(duì)整個(gè)項(xiàng)目的理解通過(guò)群策群力的討論而拓展了。
漸漸地,除了完善整套Sea.js項(xiàng)目之外,他們也基于Sea.js生態(tài)而延展出了一整套開(kāi)源的項(xiàng)目,嘗試自建自己的前端生態(tài)體系,也落地在了支付寶的早期內(nèi)部業(yè)務(wù)中。
開(kāi)源,從那時(shí)開(kāi)始就印在了支付寶前端團(tuán)隊(duì)的DNA里。
到了2014年,支付寶業(yè)務(wù)全面all in無(wú)線,前端團(tuán)隊(duì)解體,當(dāng)時(shí)整個(gè)團(tuán)隊(duì)的人都面臨一個(gè)選擇:轉(zhuǎn)崗去做移動(dòng)端開(kāi)發(fā),或者留下來(lái)做PC端的前端開(kāi)發(fā)。偏右選擇了后者。
中后臺(tái)的前端,這在當(dāng)時(shí)是一個(gè)「不在聚光燈下」的概念。大部分前端關(guān)注的仍是To C業(yè)務(wù),且前端在大部分時(shí)候是美工、實(shí)現(xiàn)工,當(dāng)前端放入中后臺(tái),它的機(jī)會(huì)在哪里?
正是在那個(gè)自我反問(wèn)與思辨的時(shí)刻,作為支付寶中后臺(tái)前端負(fù)責(zé)人的玉伯,找到了前端與中后臺(tái)結(jié)合、面向To B業(yè)務(wù)的方向。而中后臺(tái)龐大的業(yè)務(wù)量,也迫使玉伯從將前端的重點(diǎn)從單點(diǎn)的展示,向系統(tǒng)化的建構(gòu)演進(jìn)。
事實(shí)上,當(dāng)時(shí)從整個(gè)行業(yè)大環(huán)境來(lái)看,前端也正處于單點(diǎn)化向工業(yè)化演進(jìn)的項(xiàng)目中。
此前的前端多是一些小的、零星的項(xiàng)目,而到了2014年左右,一些前端技術(shù)框架開(kāi)始出現(xiàn)或者流行,比如現(xiàn)在的三大框架Angular.js、React、Vue。當(dāng)時(shí)大家都在討論,前端會(huì)往什么方向走。
內(nèi)部需求和外部訴求的結(jié)合,讓玉伯、偏右等人重新審視前端的價(jià)值,他們找到了“體驗(yàn)”這個(gè)方向,系統(tǒng)地對(duì)整個(gè)前端的呈現(xiàn)予以梳理。
FaceBook的React框架出來(lái)后,他們押寶React,基于它做前端組件庫(kù)的研發(fā),這成為了后來(lái)Ant Design項(xiàng)目的核心內(nèi)容。
從這時(shí)起,偏右他們所做的內(nèi)容從工具,過(guò)渡到整個(gè)前端的體驗(yàn)與實(shí)踐上。
在此之前,前端通常做的是組件庫(kù)、UI等實(shí)現(xiàn)功能的內(nèi)容,但從Ant Design開(kāi)始,他們?cè)谠O(shè)計(jì)軟件時(shí)將整個(gè)設(shè)計(jì)規(guī)范給融了進(jìn)去,并將之提到了很高的位置,這樣做出來(lái)的設(shè)計(jì),至少能保證體驗(yàn)下限。
融入設(shè)計(jì)規(guī)范,這直接改變了中后臺(tái)整個(gè)的設(shè)計(jì)邏輯。
以前支付寶沒(méi)有統(tǒng)一的設(shè)計(jì)規(guī)范,都是根據(jù)要實(shí)現(xiàn)的功能去做功能組件,把組件放入頁(yè)面設(shè)計(jì)稿里去,這使得這些組件通常情況下都不會(huì)再二次運(yùn)用。
Ant Design出現(xiàn)后,使用者不用需要從零開(kāi)始造技術(shù)套件,用套件就能有這些基礎(chǔ)體驗(yàn),能滿足使用者的基本要求。
Ant Design設(shè)計(jì)時(shí)提出了幾個(gè)關(guān)鍵詞:默認(rèn)可用、默認(rèn)好看、默認(rèn)好用。功能好用、界面好看,才能讓用戶的體驗(yàn)感提升上去。
“很少有人關(guān)注中后臺(tái)的體驗(yàn),但中后臺(tái)的體驗(yàn)同樣重要,有設(shè)計(jì)規(guī)范在,不說(shuō)達(dá)到樣樣90分,但能在省時(shí)、省力的情況下,達(dá)到60、70分。”
構(gòu)想很好,但要落地,卻發(fā)現(xiàn)有很多挑戰(zhàn):
當(dāng)時(shí)偏右他們是前端工程師團(tuán)隊(duì),沒(méi)有設(shè)計(jì)師,玉伯為此專門(mén)組建了設(shè)計(jì)團(tuán)隊(duì)。
他們押寶的React生態(tài)還不完善,工程鏈路也不完善,但業(yè)務(wù)下個(gè)月就要上,沒(méi)有太多時(shí)間,Ant Design 團(tuán)隊(duì)就深入業(yè)務(wù),貼身服務(wù)和下場(chǎng)寫(xiě)業(yè)務(wù)代碼,終于把這塊硬骨頭啃了下來(lái);而中后臺(tái)設(shè)計(jì)的大量需求進(jìn)來(lái)后,也會(huì)涉及到設(shè)計(jì)需求的邊界在哪里的問(wèn)題,偏右定了很多設(shè)計(jì)規(guī)范,將設(shè)計(jì)行為系統(tǒng)化、標(biāo)準(zhǔn)化。
圖 | Ant Design 團(tuán)隊(duì)(攝于2021年5月21日)
就這樣逐步迭代,Ant Design才最終成型,而在它被開(kāi)源到網(wǎng)絡(luò)上后,也在一定程度上引領(lǐng)了業(yè)界關(guān)注中后臺(tái)體驗(yàn)的風(fēng)潮。
偏右印象很深的是有一次See Conf 大會(huì),有一位德國(guó)小哥郵件他想來(lái)現(xiàn)場(chǎng)看一看。他在德國(guó)時(shí)看到了Ant Design的開(kāi)源項(xiàng)目,對(duì)其很感興趣,還幫忙翻譯和提出BUG。后來(lái)他了解到偏右他們?cè)诤贾荩€特意跑來(lái)杭州留學(xué)。他甚至不會(huì)中文,但對(duì)技術(shù)的熱愛(ài),讓他來(lái)到這個(gè)國(guó)家,來(lái)到杭州。
就是那個(gè)時(shí)刻,偏右感受到了開(kāi)源的力量。
“做開(kāi)源的過(guò)程中,確實(shí)會(huì)感覺(jué)到地球是平的這件事。Ant Design背后有一兩千個(gè)貢獻(xiàn)者,這些ID背后可能是一個(gè)完全不同文化、不同公司、不同種族、不同國(guó)家的人。我們的小眾語(yǔ)言、鍵盤(pán)交互,以及殘疾人使用友好的內(nèi)容都是由這些個(gè)體補(bǔ)足,是他們的存在,才讓Ant Design能適用于這個(gè)世界更多的人,給更多人提供幫助。”
“開(kāi)源的過(guò)程中,感覺(jué)到地球是平的”
從Richard Stallman提出開(kāi)源概念開(kāi)始,開(kāi)源就具備了一種反抗權(quán)威的特質(zhì),與中國(guó)傳統(tǒng)的俠義文化相互映照,成為開(kāi)源能在中國(guó)生根發(fā)芽的根基。
到了2010年左右,開(kāi)源本身,又成為可以幫助商業(yè)化的一個(gè)渠道,一個(gè)大家認(rèn)可的、做得好的產(chǎn)品、積累了一定程度的用戶和市場(chǎng)份額,向商業(yè)化轉(zhuǎn)型就會(huì)更容易。
開(kāi)放自由的氛圍、反權(quán)威的俠義精神,以及能走向商業(yè)化的道路,使得越來(lái)越多的人樂(lè)于把自己的產(chǎn)品開(kāi)源出來(lái),開(kāi)源也越來(lái)越蓬勃地發(fā)展起來(lái)。
從1995年清華大學(xué)建立的“水木清華BBS”,到1999年創(chuàng)辦的CSDN論壇,再到從討論逐漸興起的各種項(xiàng)目,MiniGui、SmartBoot Manager、LVS,再到大廠開(kāi)源蓬勃發(fā)展繁衍而出的各種程序:
從陽(yáng)振坤所做的底層基礎(chǔ)設(shè)施的數(shù)據(jù)庫(kù),到王旭把握時(shí)代趨勢(shì)而解決硬性問(wèn)題的安全容器,再到玉伯團(tuán)隊(duì)所做的上層的體驗(yàn)創(chuàng)新,每個(gè)時(shí)代的開(kāi)源人都各自拿出了亮眼的表現(xiàn)。
在中國(guó)開(kāi)源的二十余年里,我們從“別人那里拿來(lái)”,到“自己創(chuàng)造”,正是這一個(gè)又一個(gè)技術(shù)人的默默付出,使得我們國(guó)家往技術(shù)逐漸自主的路上走去。
當(dāng)下,開(kāi)源被提到了國(guó)家戰(zhàn)略的高度,科技改變世界,而開(kāi)源在其中必不可少。
中國(guó)的開(kāi)源,有像陽(yáng)振坤這樣的科學(xué)家,王旭玉伯這樣的開(kāi)源前輩,也需要無(wú)數(shù)像偏右這樣的后來(lái)者,大家集思廣益,在開(kāi)源這個(gè)集市里共建,才能讓中國(guó)開(kāi)源生態(tài)百家爭(zhēng)鳴。
更多精彩內(nèi)容,關(guān)注鈦媒體微信號(hào)(ID:taimeiti),或者下載鈦媒體App