開源和授權(quán)——在不絕對可靠和絕對不可靠之間搖擺
近幾年發(fā)生的各種事件,以及不斷升級的制裁規(guī)格,其實(shí)已經(jīng)說明了一個問題——不絕對可靠等于絕對不可靠!
IT行業(yè)近期又發(fā)生了兩件“卡脖子”的事兒,兩件事都與我國沒有直接關(guān)系,我們卻難免物傷其類。一是ARM取消了對高通的指令集架構(gòu)授權(quán),說明在經(jīng)濟(jì)利益面前,商業(yè)信譽(yù)不名一文。二是Linux內(nèi)核移出了11名俄羅斯開發(fā)者的貢獻(xiàn)條目,說明在政治爭端面前,開源精神也難以為繼。
兩件事都發(fā)生在國外,但是國內(nèi)的芯片和軟件廠商也應(yīng)該設(shè)身處地地加以警惕。已經(jīng)發(fā)生的事情就是歷史,我們先回顧歷史,然后以史為鑒,探討國產(chǎn)CPU和國產(chǎn)軟件的興替。
事件一:ARM撤銷對高通的指令集架構(gòu)許可協(xié)議 (ALA)
高通是ARM公司重要的合作伙伴,以往高通是購買ARM公司設(shè)計的各種性能層次的IP核(CPU核心等模塊化的芯片功能單元),然后集成各種功能模塊,成為面向不同應(yīng)用領(lǐng)域的SoC產(chǎn)品。
ARM提供核心技術(shù),高通實(shí)現(xiàn)芯片產(chǎn)品。雖然高通的利潤水平遠(yuǎn)遠(yuǎn)超過了ARM,但多年來兩者一向相安無事,轉(zhuǎn)折出現(xiàn)在高通購了一家名叫Nuvia的芯片設(shè)計公司之后。
Nuvia的設(shè)計團(tuán)隊(duì)有設(shè)計高性能CPU核心的能力,這意味著高通對ARM的依賴程度降低,至少不必繼續(xù)購買ARM的高性能IP核。每顆ARM芯片都必須支付版稅,IP核授權(quán)和指令集架構(gòu)授權(quán)的版稅要分別計算,高通如果自己設(shè)計CPU核心,就能大幅度降低版稅支出,也意味著削減了ARM的收入。
Nuvia和高通都有ARM指令集架構(gòu)的授權(quán),都有資格基于ARM指令集自己設(shè)計CPU。但以前高通沒有能力自主設(shè)計高性能的IP核,現(xiàn)在通過收購Nuvia得到了這種能力。面對脫出掌控的高通,ARM公司釜底抽薪的方法就是——撤銷對高通的指令集架構(gòu)許可協(xié)議,不允許其自主設(shè)計基于ARM指令集的CPU核心,只允許它修改購買自ARM公司的IP核。
事件二:Linux kernel踢出了11名俄羅斯開發(fā)者
Linux kernel是所有Linux系統(tǒng)的核心,是開源世界最根本的支柱之一,它和其它開源項(xiàng)目一樣開放全部源代碼。開源項(xiàng)目有一份源頭的代碼,稱為主線,由項(xiàng)目的創(chuàng)建者和指定的管理者負(fù)責(zé)維護(hù)。其他人從主線復(fù)制代碼,進(jìn)行修改和二次開源,稱為分支。也可以從分支復(fù)制代碼,成為分支的分支。主線源代碼大多存放在美國的服務(wù)器上,分支可能直接依附于主線,也可能被存放在任何地方。
任何人對代碼的任何修改都可以向上游提交,源頭的管理人員負(fù)責(zé)審核提交的內(nèi)容,然后合并或拒絕提交的更改。根據(jù)提交代碼的數(shù)量和質(zhì)量,以及撰寫文檔、提交bug等其它貢獻(xiàn),開發(fā)者會獲得不同的身份和權(quán)限。
被除名的那些俄羅斯開發(fā)者是Maintainer的級別,Maintainer在開源社區(qū)中是負(fù)責(zé)管理和推動社區(qū)發(fā)展的高級別貢獻(xiàn)者。Maintainer不僅僅是簡單的代碼貢獻(xiàn)者,更是社區(qū)的領(lǐng)導(dǎo)者和管理者。但他們沒有因?yàn)榫薮蟮呢暙I(xiàn)得到豁免,而是被用完就扔。
開源項(xiàng)目的參與者通常沒有報酬,但任何一次提交都有記錄,人們可以查看是誰解決了什么問題、新增了什么功能。就像功德簿一樣,上面記錄著大家的貢獻(xiàn),使開發(fā)者獲得愉悅的心情——情緒價值是大多數(shù)開源項(xiàng)目貢獻(xiàn)者唯一的收獲。
然而俄羅斯的開發(fā)者被更高級別的管理人員剝奪了所有的榮譽(yù),他們的名字和貢獻(xiàn)被從功德簿上抹除,他們的工作成果卻不會被返還。而這么做的理由,最初可能只是因?yàn)樗麄兪嵌砹_斯人。后來給出的官方解釋,則是說因?yàn)槟切╅_發(fā)者就職的公司在美國OFAC(美國財政部海外資產(chǎn)控制辦公室)制裁計劃的名單上。
我國的HW也同樣在OFAC的制裁名單上,因此有內(nèi)核開發(fā)者建議把HW的貢獻(xiàn)條目也全部抹除。顯然,除名HW會引起更大的振蕩,因此這條建議被駁回,理由是HW符合某些豁免規(guī)則。
表面上開源社區(qū)是在按規(guī)則辦事,但是我們要明白那些規(guī)則是誰的規(guī)則。由此可見,雖然開源項(xiàng)目名義上屬于全人類,但大多數(shù)項(xiàng)目的主導(dǎo)者卻接受著美國政府的管轄。從開源社區(qū)的輿論導(dǎo)向和開源領(lǐng)袖Linus Torvalds對此事的明確支持,可以看到美國對開源世界的影響。
事件起到的示范作用,鼓勵了更多的政治因素介入開源。目前,無論是開發(fā)者個人還是就職的公司在OFAC制裁計劃的名單上,只要未被豁免,就都被禁止繼續(xù)參與Linux kernel主線開發(fā)。
授權(quán)和開源與國產(chǎn)軟硬件主導(dǎo)權(quán)的取舍
兩件事情有個共同點(diǎn),就是被制裁的一方都是在他人的地皮上搞建設(shè)。不管你的建設(shè)成果使地皮的價值提高了多少,都不影響地主把你趕走并吞下你的建設(shè)成果,然后換別人來繼續(xù)建設(shè)。因此,避免被卡脖子的唯一方式,只能是在自己的地皮上搞建設(shè)。
只有從CPU指令集、IP核設(shè)計到芯片生產(chǎn)都完全自主,從操作系統(tǒng)到應(yīng)用軟件都完全可控,才能獲得主導(dǎo)權(quán)。然而這種理想化的程度極難達(dá)到,Intel、ARM、Windows、Linux達(dá)到現(xiàn)在的技術(shù)水平和市場規(guī)模都花了三、四十年。在它們的應(yīng)用和市場都已經(jīng)成熟的情況下,新生的同類產(chǎn)品從零開始,想要短時間取代它們不啻于天方夜譚。
抱著打不過就加入的想法,我國的國產(chǎn)CPU大多基于指令集架構(gòu)或IP核授權(quán),國產(chǎn)操作系統(tǒng)基本上都基于開源軟件二次開發(fā)和整合。我們曾經(jīng)天真地以為只要自己發(fā)展起來了,就能獲得主導(dǎo)權(quán)。只是現(xiàn)實(shí)的世界不講邏輯,也不講規(guī)矩,更沒有道德底線。
龍芯的CPU雖然都是自主設(shè)計,但以前的CPU兼容MIPS指令集。隨著MIPS本體的沒落,龍芯替代MIPS公司為MIPS指令集的演化、軟件生態(tài)發(fā)展、MIPS指令集市場拓展等付出了無數(shù)的努力。很多人都堅(jiān)信龍芯已經(jīng)獲得了MIPS指令集和軟件生態(tài)的主導(dǎo)權(quán),然而后續(xù)的發(fā)展讓大家明白只要用別人的架構(gòu),就一定受制于人。
于是龍芯從2020年起徹底拋棄了MIPS,把全線產(chǎn)品都基于自主設(shè)計的LoongArch指令集重新設(shè)計。龍芯完成了真正的解放,無論是軟件生態(tài)的發(fā)展,還是CPU技術(shù)的演進(jìn),都不再被束縛,在主導(dǎo)權(quán)方面已經(jīng)是與Intel和ARM相同層次的存在——龍芯已經(jīng)開展了對其他公司授權(quán)指令集架構(gòu)和IP核的業(yè)務(wù)。
ARM和高通、MIPS和龍芯,發(fā)生爭端的主要原因都是經(jīng)濟(jì)利益,但現(xiàn)在對于基于指令集架構(gòu)或IP核授權(quán)的國產(chǎn)CPU、基于開源指令集的CPU,以及基于開源軟件的自主軟件生態(tài)來說,源自政治因素的危險已經(jīng)更甚于經(jīng)濟(jì)糾紛。
ARM中止與俄羅斯芯片企業(yè)的一切合作,微軟和Google等軟件公司中止對俄羅斯的軟件使用許可,都完全是政治的原因。我國受到的威脅并不比俄羅斯更少,因?yàn)槲覈钱?dāng)前最有可能挑戰(zhàn)美國地位的國家。只是因?yàn)閲覐?qiáng)大,美國對我國的打壓才更加警慎,控制制裁的程度和規(guī)模,一點(diǎn)一點(diǎn)地試探和加碼。
我國的企業(yè)也已經(jīng)不同程度地被ARM拒絕合作,例如NeoverseV系列IP核就不會向中國企業(yè)出售,也沒有任何中國企業(yè)公開聲明獲得ARMv9指令集架構(gòu)的授權(quán)。雖有部分企業(yè)獲得了基于ARMv9的IP核授權(quán),但這與指令集架構(gòu)授權(quán)完全不同。所以國產(chǎn)ARM和x86指令集架構(gòu)的CPU都相當(dāng)危險,我們卻無法改變。我們的境遇不如高通,因?yàn)槿绻鸄RM與高通和解,不會有來自美國的政治風(fēng)險。
指令集架構(gòu)和IP核不是有形的商品,而是知識產(chǎn)權(quán)。對知識產(chǎn)權(quán)的授權(quán),是獲得基于這種知識產(chǎn)權(quán)設(shè)計、生產(chǎn)、宣傳、銷售產(chǎn)品的資格。只要授權(quán)被ARM或美國政府宣布撤銷,那么就一定能成為事實(shí)。因?yàn)閺脑O(shè)計到生產(chǎn),再到銷售和使用,是無數(shù)環(huán)節(jié)構(gòu)成的鏈條,每個環(huán)節(jié)同時也是其它鏈條的一部分。設(shè)計CPU需要用EDA軟件和各種仿真驗(yàn)證工具,生產(chǎn)CPU需要代工廠,代工廠又依賴設(shè)備和原料,板卡廠商要采購元件和材料,整機(jī)廠商不但要生產(chǎn)還要宣傳……無法保證所有環(huán)節(jié)都能無視美國的態(tài)度度。
基于開源指令集設(shè)計CPU,以及基于開源軟件建設(shè)自主軟件生態(tài),具有較高的自主性,能在一定程度上規(guī)避美國政策的影響。但只要沒有主導(dǎo)權(quán),就仍然不會有絕對的安全。
開源項(xiàng)目通常根據(jù)貢獻(xiàn)度給予開發(fā)者不同的級別,國內(nèi)軟件開發(fā)者對各種開源項(xiàng)目的貢獻(xiàn)不弱于世界同仁。國內(nèi)很多軟件和硬件公司也都積極投入開源軟件開發(fā),有的公司甚至把員工的開源貢獻(xiàn)度做為績效加分。
例如Linux kernel、OpenJDK、.net core、FFMpeg、OpenCV、GCC、LLVM等重要的開源項(xiàng)目,HW、龍芯、阿里、騰訊等公司都曾在年度貢獻(xiàn)統(tǒng)計中名列前茅。以公司身份投入開源的,主要是為了使開源軟件滿足自己的需求,同時也是為是爭得一定的話語權(quán)。然而以貢獻(xiàn)度換話語權(quán)只是一個謊言,被除名的俄羅斯籍Maintainer就是明證。
甚至于以HW的貢獻(xiàn)度,也同樣被Linux kernel的核心開發(fā)者建議除名。HW已經(jīng)多次經(jīng)歷被國際組織開除的事件,更是早已證明:只要沒有主導(dǎo)權(quán)就不會有真正的話語權(quán)。
那些重要的開源項(xiàng)目,主導(dǎo)者都不會把權(quán)力拱手相讓,因?yàn)樗麄兇淼牟恢皇撬麄冏约海菚艿蕉喾矫娴募s束,包括來自美國政府的干涉。我們可以想象一下,如果微軟公司打算把github的服務(wù)器轉(zhuǎn)移到中國,讓中國成為開源大本營的數(shù)據(jù)中心,美國政府會有什么反應(yīng)?
可能由于類似的原因,RISC-V基金會也從未考慮站隊(duì)中國。它把總部從美國遷到瑞士以示中立,更像是掩耳盜鈴的把戲——瑞士沒有能力阻止美國插手RISC-V基金會。不過這種遠(yuǎn)離政治的姿態(tài),確實(shí)成為了很多中國公司加盟RISC-V基金會的理由。
RISC-V是一種起始于2010年的CPU指令集架構(gòu),2014年正式成立RISC-V基金會,開始商業(yè)化推廣。RISC-V 指令集采用寬松的BSD 開源協(xié)議,企業(yè)可以完全自由使用并允許添加自有指令集,而不必開放共享。
RISC-V基金會目前有25個高級會員單位,其中有9個來自中國。它的董事會中也有6名成員是來自中國大陸。
RISC-V開源的僅僅是指令集,不包含開源的IP核,也不包含共享的專利池,但仍然吸引了眾多知名企業(yè)加盟。除了指令集本身具有一定的商業(yè)價值之外,也與近幾年國際形勢的變化不無關(guān)系。特別是中國的公司和科研單位加盟,在很大程度上是因?yàn)檎J(rèn)可開源具有自主特征。
例如HW、飛騰、中興,都受到ARM的狹制,需要有一些后備的路線。雖然RISC-V目前還不夠成熟,但多一種選擇說不定什么時候就會用上。
中國企業(yè)對RISC-V的投入相對積極,但要說憑借投入和貢獻(xiàn)就能主導(dǎo)RISC-V的發(fā)展還為時過早。因?yàn)镽ISC-V開源的僅僅是指令集,不包含開源的IP核,也不包含共享的專利池。而獲得主導(dǎo)權(quán)的關(guān)鍵在于CPU產(chǎn)品的性能、性價比、專利壁壘,以及廠商自身的號召力,在這些方面中國企業(yè)沒有優(yōu)勢。
相對而言,中國公司在這樣的國際組織中處于弱勢地位。無論政治因素還是技術(shù)儲備,都很難與歐美企業(yè)抗衡。RISC-V基金會的主要成員中還有Intel、Nvidia、高通等頭部企業(yè),它們穩(wěn)坐釣魚臺,又能不受限制地使用最先進(jìn)的芯片生產(chǎn)工藝,它們都有在時機(jī)成熟時收割市場的能力。
國內(nèi)企業(yè)幾乎不可能掌控RISC-V的主導(dǎo)權(quán)。對于國內(nèi)企業(yè)來說,支持RISC-V與支持開源軟件是一樣的性質(zhì),就是在被踢出開源主線的團(tuán)隊(duì)之后,仍然可以基于已獲得的代碼和資料獨(dú)自發(fā)展,這一點(diǎn)遠(yuǎn)遠(yuǎn)優(yōu)于商業(yè)性質(zhì)的指令集架構(gòu)或IP核授權(quán)。
參與開源建設(shè)要注意投入和回報
我們的自主軟件生態(tài)建設(shè)必須基于開源軟件,但自主CPU大可不必基于開源的指令集架構(gòu)。
同樣是開源,區(qū)別對待的原因主要是兩者的難度和投入差距不可同日而語。
一、開源軟件是成熟的體系,RISC-V只是CPU的開端
開源軟件包含主板固件、操作系統(tǒng)、硬件驅(qū)動、開發(fā)工具、數(shù)據(jù)庫……以及面向各種應(yīng)用場景的功能庫、應(yīng)用軟件、運(yùn)行環(huán)境等。開源世界擁有全世界開發(fā)者數(shù)十年積累的成果,存在較高價值的開源軟件和庫多達(dá)數(shù)萬,是拿來就能派上用場的軟件生態(tài)。
而開源指令集僅僅就是指令集,它只是CPU設(shè)計過程中的第一個產(chǎn)物,后續(xù)還有大量的工作。其中工程量最大、技術(shù)含量最高的部分是邏輯設(shè)計,這直接決定了CPU的性能上限。如果有完成主流層次CPU邏輯設(shè)計的能力,那么設(shè)計一套全新的先進(jìn)指令集也不是難題。
我們基于開源軟件建設(shè)軟件生態(tài),而不是從零開始,有兩個主要原因:一是不必要把開源世界已經(jīng)積累了數(shù)十年的軟件成果重復(fù)開發(fā)一遍,這樣既浪費(fèi)資源也沒有意義;二是因?yàn)閺念^開發(fā)操作系統(tǒng)就必須為各種硬件重新開發(fā)驅(qū)動程序,這幾乎是無法解決的難題。
Linux的硬件驅(qū)動來自于數(shù)十年的積累,很多硬件廠商都已經(jīng)消逝了,但還有硬件存世。在不同的系統(tǒng)間移植應(yīng)用軟件相對容易,但移植驅(qū)動程序就相當(dāng)于重新開發(fā)。驅(qū)動程序因?yàn)樯婕暗叫枰C艿挠布?xì)節(jié),一般是廠商自己開發(fā)。也有廠商會提供支持一系列硬件共有特性的開源驅(qū)動,但一般不能發(fā)揮硬件的全部能力。
但沒有廠商愿意免費(fèi)給市場占有率幾乎為零的新型操作系統(tǒng)開發(fā)驅(qū)動程序,全部定制開發(fā)所需的資金是天文數(shù)字。即使所有廠商都愿意配合,也能收集到數(shù)十年來所有型號的硬件用于調(diào)試,但一款一款地重新適配也仍然是浩大的工程,只是想象就已經(jīng)令人不寒而栗。
蘋果的PC操作系統(tǒng)之所以只能匹配特定的硬件,就是因?yàn)闆]有其它硬件的驅(qū)動程序。Windows On ARM只能在特定的機(jī)型上正常運(yùn)行,也是因?yàn)闆]有其它硬件的驅(qū)動程序。如果我們開發(fā)一種操作系統(tǒng),也沒有理由違背客觀規(guī)律!
因?yàn)閼?yīng)用軟件和驅(qū)動程序數(shù)量龐大,所以只有基于Linux以及各種開源軟件,才是發(fā)展自主軟件生態(tài)最有效的路線。
二、RISC-V缺少額外的軟件生態(tài)價值
在下面的表格中,概略地類比了設(shè)計CPU、開發(fā)軟件、撰寫書籍所需要的工具和工作內(nèi)容。可以看到,雖然指令集定義了基礎(chǔ)規(guī)則,但并不是CPU設(shè)計中技術(shù)含量最高的部分,更不是CPU設(shè)計流程中成本最高的部分。
開源的CPU指令集架構(gòu)不是誰都玩得起的。購買EDA軟件、購買FPGA仿真設(shè)備、設(shè)計CPU核心、設(shè)計或購買其它IP核、找代工廠流片、設(shè)計主板并生產(chǎn)、移植操作系統(tǒng)、開發(fā)應(yīng)用軟件,這一套流程走下來,很多公司都會被拖垮財務(wù)。
但RISC-V畢竟不需要授權(quán)費(fèi),如果設(shè)計目標(biāo)是物聯(lián)網(wǎng)芯片這類利潤單薄、軟件簡單的產(chǎn)品,就能有效降低成本,也避免了軟件生態(tài)的困擾。因此利用RISC-V在低端芯片上的低成本優(yōu)勢賺錢是非常合理的商業(yè)路線,但如果要拔高它的地位,就必須考慮是否值得投入。
在PC和服務(wù)器領(lǐng)域,CPU指令集的價值主要在于以它為基礎(chǔ)發(fā)展起來的軟硬件生態(tài)。然而由于RISC-V根本沒有PC級的CPU產(chǎn)品,無法承載PC及服務(wù)器軟件生態(tài)。沒有性能強(qiáng)大的CPU做為載體,軟件生態(tài)就是空中樓閣,因此RISC-V連對開源軟件的移植都還存在巨大缺口。
對于軟硬件生態(tài),RISC-V并不比龍芯自主的LoongArch走得更遠(yuǎn)。即使是對PC和嵌入式生態(tài)投入不足的申威,它的SW指令集架構(gòu)在軟件生態(tài)方面的成就也超過了RISC-V。如果排除開源生態(tài),那么RISC-V的軟件生態(tài)就為零,而龍芯LoongArch至少還能剩下上千款商業(yè)軟件。
RISC-V基金會的成員單位如果想用RISC-V取代ARM,至少需要為它建設(shè)不亞于ARM的成熟軟件生態(tài)。與其去投入RISC-V從零開始的軟件生態(tài),還不如發(fā)展能完全由自己主導(dǎo)的指令集。無論龍芯還是申威,不但軟件生態(tài)的發(fā)展水平都高于RISC-V,而且完全由中國主導(dǎo),更有已經(jīng)產(chǎn)品化的高性能CPU能夠承載PC和服務(wù)器軟件生態(tài)。
三、RISC-V基金會成員單位相互牽制,多見務(wù)虛,少見務(wù)實(shí)。
經(jīng)常看到RISC-V的各個成員組織開生態(tài)大會、產(chǎn)業(yè)大會、技術(shù)大會……然而都像是把RISC-V作為金融游戲的道具,都在宣傳RISC-V的前景,而都不腳踏實(shí)地。例如湊出一顆32核并行性能還不如Inte i3的CPU,說要發(fā)展RISC-V服務(wù)器,除了作為引誘投資的故事素材,哪有什么實(shí)際意義?
RISC-V基金會雖然有25個重要成員單位,還有為數(shù)眾多的戰(zhàn)略合作伙伴,但卻反而躊躇不前。是因?yàn)闆]有真正的領(lǐng)導(dǎo)者,每個成員都有自己的打算。大家提出各自的構(gòu)想,為RISC-V擴(kuò)充指令,希望成為RISC-V的新標(biāo)準(zhǔn)。因?yàn)橹灰蔀榱藰?biāo)準(zhǔn),其他成員就會被自己的專利捆綁。RISC-V基金會沒有共享專利池的規(guī)則,雖然有一些第三方成立的RISC-V專利共享組織, 但噱頭大于實(shí)際作用。
每個成員都想用自己的標(biāo)準(zhǔn)綁架別人,希望費(fèi)時費(fèi)力的CPU產(chǎn)品實(shí)踐以及市場開拓都由別人打頭陣,一遍一遍地重演著三個和尚沒水喝的故事。其實(shí)這些想法都是人之常情,因?yàn)槎紦?dān)心自己栽的樹被別人乘了涼,自己澆的花被別人摘了果。特別是Intel也成為了RISC-V基金會的重要成員,在很大程度上壓制了其它成員主導(dǎo)RISC-V的熱情。
無論Intel是打算給RISC-V的發(fā)展制造障礙,還是準(zhǔn)備在RISC-V市場成熟后強(qiáng)奪成果,都令其它成員不敢掉以輕心。HW和飛騰已經(jīng)為了給ARM健全PC和服務(wù)器軟件生態(tài)投入了大量資源,不會輕易讓成本沉沒。RISC-V只是它們退而求其次的備選,在事態(tài)惡化到不可收拾之前,也不會大力度投入第二條戰(zhàn)線。
為這些原因,各家企業(yè)雖然都對RISC-V贊譽(yù)有加,但實(shí)際投入都非常理智。無論Intel、Nvidia、Qualcomm,還是HW、騰訊、阿里,只要有任何一家公司全情投入,RISC-V也不至僅在物聯(lián)網(wǎng)這類低端嵌入式市場占有一席之地,在手機(jī)、PC、服務(wù)器領(lǐng)域都缺乏競爭力,甚至中高端嵌入式產(chǎn)品中也很少見到RISC-V的身影。
四、開源軟件門檻極低,加入開源是大勢所趨
其實(shí)大家對開源軟件更有興趣。是因?yàn)殚_源軟件有投入低、回報高、見效快的特點(diǎn)。無論是向開源上游提交代碼添加自己需要的功能,還是排除對自己有影響的問題,又或者基于開源庫開發(fā)新軟件,都能以極低的成本立竿見影。
開源軟件能真正做到全民開發(fā),即使不是程序員,也通過提交bug、提出建議、校對文檔、翻譯知識庫等方式參與。個人開發(fā)者是開源社區(qū)的重要組成部分,但為公司項(xiàng)目服務(wù)的開發(fā)者往往會更頻繁地提交代碼,開發(fā)也更有持續(xù)性。小公司、小項(xiàng)目對開源軟件可能主要是索取,但只要發(fā)展到一定程度,就必然會回饋開源社區(qū),一卻都會自然而然地發(fā)生:
1.使軟件或硬件產(chǎn)品被更廣泛地兼容。例如某軟件為了實(shí)現(xiàn)某種功能,對一些開源庫進(jìn)行了改進(jìn)。只有把改進(jìn)的代碼提交到上游,才能確保軟件能在更多用戶的電腦上運(yùn)行;
2.增強(qiáng)軟件或硬件產(chǎn)品的性能表現(xiàn)。例如為開源的視頻播放器軟件增加對特定類型CPU優(yōu)化的代碼;
3.修復(fù)產(chǎn)品出現(xiàn)的問題。例如某軟件或硬件被發(fā)現(xiàn)Bug,追蹤到問題的源頭是某個開源庫的Bug,那么只有從源頭修復(fù)Bug才是最合理的方案;
4.試驗(yàn)新技術(shù)、驗(yàn)證新功能。例如基于AI的圖像處理方法,自己的設(shè)備類型或?qū)嶒?yàn)樣本有限,通過開源就能得到更充分的測試,獲得更廣泛的問題反饋;
5.使自己的新型硬件得到廣泛的支持。例如龍芯CPU使用全新的LoongArch指令集架構(gòu),就有必要給上游所有重要的開源軟件增加對LoongArch指令集的支持,擴(kuò)大開發(fā)者和用戶群體;
6.為了吸引更多的開發(fā)者了解自己的產(chǎn)品,而以開源軟件的形式向開發(fā)者提供某種形式的模擬環(huán)境、開發(fā)文檔,以及必要的開發(fā)工具。例如使qemu/kvm支持對新型CPU指令集、新型硬件的模擬。
規(guī)避開源世界的風(fēng)險,打造可靠的開源路線
開源項(xiàng)目是開源項(xiàng)目,開源社區(qū)是開源社區(qū),這一點(diǎn)必須要分清楚。
開源項(xiàng)目是代碼和文檔的集合,可以在開源協(xié)議的許可范圍內(nèi)復(fù)制并使用開源的內(nèi)容。無論基于哪種開源協(xié)議,開發(fā)者對已經(jīng)獲得的代碼和文檔都具有極高的自主權(quán)。但把自己對開源項(xiàng)目的修改往上游的開源社區(qū)提交時,則很有可能因各種原因被拒絕。
拒絕的理由多種多樣,但真正與代碼直接相關(guān)的,只有代碼質(zhì)量低下、損傷軟件原功能這兩種。其余的原因多半是因?yàn)闋砍兜缴虡I(yè)和政治等利益,也有一部分是由于上游開發(fā)者的傲慢。
開源項(xiàng)目的管理不是全自動的,無論如何都是由管理人員做最終決定。任何人都有情感和政治偏向,因此由西方開發(fā)者主導(dǎo)的開源社區(qū)不會把中國和美國一視同仁。
1.代碼的質(zhì)量標(biāo)準(zhǔn)是靈活的,因人而異。例如Linus一邊罵Nvida為各款顯卡提交的驅(qū)動程序中重復(fù)的代碼太多,一邊又樂滋滋地把那些代碼都合并入Linux kernel主線。而中國公司如果做類似的事情,多半會被要求重寫代碼,清除冗余的部分。也就是說,由國內(nèi)開發(fā)者提交進(jìn)入開源主線的代碼,往往被迫著更加精煉,當(dāng)然這也對我們的開發(fā)者提高水平很有幫助;
2.中國公司和美國公司如果同時開發(fā)出相似的功能、提交了功能相近的代碼,那么中國公司提交的代碼更有可能被以功能重復(fù)的理由拒絕。即使兩者實(shí)際有差異,并且在代碼層面互不影響,那么中國開發(fā)者也可能會被要求剔除掉自己的核心代碼,在國外同類功能的基礎(chǔ)上進(jìn)行修改和擴(kuò)展;
3.當(dāng)中國公司開發(fā)的產(chǎn)品在某些方面優(yōu)于歐美同類,向開源主線提交支持新特性的代碼時可能會被拒之門外,或者被拖延合并。例如在MIPS沒落之后,龍芯接過了各大開源項(xiàng)目對MIPS指令集的支持和優(yōu)化工作。但龍芯提交的代碼如果使用了自己的擴(kuò)展指令,就難以通過審核,使龍芯軟件生態(tài)與MIPS很難分道揚(yáng)鑣。后來龍芯放棄了MIPS,全面轉(zhuǎn)向自主的LoongArch指令集架構(gòu),為了縮短軟件適配周期而基于自己以往的代碼進(jìn)行修改,在向基礎(chǔ)開源項(xiàng)目的主線提交時被否定,理由是與舊代碼太相似;
4.當(dāng)美國對他國企業(yè)及開發(fā)者實(shí)施制裁時,相關(guān)聯(lián)的開發(fā)者提交代碼也會受阻。但是如果是它國對美國企業(yè)實(shí)施制裁,開源社區(qū)則完全不會認(rèn)同。例如Google被中國和俄羅斯抵制,但各大開源項(xiàng)目都沒有驅(qū)逐Google,反而排除了俄羅斯的開發(fā)者,并提議清除HW的貢獻(xiàn)條目。
當(dāng)開源項(xiàng)目被用于產(chǎn)品時,對開源代碼的修改常與產(chǎn)品研發(fā)同步進(jìn)行。在把代碼提交到開源主線時,產(chǎn)品研發(fā)已經(jīng)完成,甚至已經(jīng)銷售到了用戶手上。如果開源社區(qū)不接受這些代碼變更,為了不影響自己的產(chǎn)品,開發(fā)者就只能把臨時維護(hù)的版本變成需要長期維護(hù)的分支版本。
我們之所以投入開源主線的開發(fā),是因?yàn)槿澜绲拈_發(fā)者共同維護(hù)一個版本,有利于降低所有開發(fā)者的成本,開源軟件的使用者也不必面對多個版本無所適從。我們以開放包容的態(tài)度融入世界,但這個世界總有一些狹隘主義者向我們關(guān)上大門。如果開源社區(qū)不再能維持和平友好的氛圍,甚至連表面的公平都不再顧及,那么我們自立門戶就是必然的選擇。
由大公司或有關(guān)部門牽頭,基于已有的代碼二次開源,成為由我們主導(dǎo)的上游社區(qū),吸引開發(fā)者參與我們維護(hù)的分支。雖然可能無法得到全世界開發(fā)者的支持,但并不妨礙我們獲得其他開發(fā)者的成果。我們也可以繼續(xù)向開源主線提交代碼,如果被拒絕那也不是我們的問題。
成規(guī)模的開源社區(qū)在國內(nèi)已有不少。例如Deepin、OpenKylin等社區(qū)主要維護(hù)桌面Linux,并進(jìn)行深入的二次開發(fā)、應(yīng)用集成和推廣。OpenEuler、AnolisOS等社區(qū)主要為服務(wù)器系統(tǒng)提供長期的維護(hù)和技術(shù)支持。OpenHarmony、rt-thread等主要推進(jìn)自主的嵌入式系統(tǒng)和實(shí)時系統(tǒng)。龍芯開源社區(qū)主要為自主CPU架構(gòu)LoongArch進(jìn)行軟件移植、優(yōu)化,以及基于LoongArch的獨(dú)特功能開發(fā)基礎(chǔ)軟件。
除此之外,如阿里的Gitee、騰訊的Coding等都是模仿Github的開源項(xiàng)目存儲、管理、交流平臺。國內(nèi)很多新的開源軟件項(xiàng)目已經(jīng)不再存放到Github上,而是選擇國內(nèi)的代碼管理服務(wù)器。同時,凡是國外重要的開源項(xiàng)目,都已經(jīng)在Gitee、Coding等平臺上完成了鏡像備份,如果風(fēng)險升級,國內(nèi)開發(fā)者就能基于這些代碼鏡像繼續(xù)完成開發(fā),只是換了一個獲取及提交代碼的地方。
國內(nèi)的這些基礎(chǔ)設(shè)施,以及基礎(chǔ)軟件的開源社區(qū),既是為了培養(yǎng)國內(nèi)的開源力量,也是隔離風(fēng)險的防火墻。我們并不希望被國際開源社區(qū)排除在外,但如果遭遇封鎖,國內(nèi)的開源力量就是我們自立門戶的根本。
總結(jié)
相對于硬件,軟件方面的專利很容易規(guī)避,即使遭遇專利陷阱也能快速修改重新發(fā)布。因此幾乎不存在軟件專利壁壘的說法,只有硬件才有專利壁壘。利用開源軟件發(fā)展我們自己的軟件生態(tài),風(fēng)險是可控的,投入是有回報的,利益是長久的,技術(shù)是能持續(xù)演進(jìn)的。
而基于RISC-V或者授權(quán)的ARM指令集架構(gòu)發(fā)展自主CPU,我們只可利用它們的某些優(yōu)勢賺錢,而不必為它們?nèi)ソㄔO(shè)PC和服務(wù)器軟件生態(tài)。因?yàn)槲覈诟叨薈PU方面將長時間不存在競爭優(yōu)勢,光一個工藝限制就能壓制國產(chǎn)CPU很長時間。耗費(fèi)資源去為不由中國控制CPU指令集完善軟件生態(tài),然后真正得利的全都是進(jìn)口產(chǎn)品。
如果CPU指令架構(gòu)由國外主導(dǎo)、CPU性能也不如進(jìn)口產(chǎn)品,那么我們發(fā)展的自主軟件生態(tài)也必然會被國外竊取主導(dǎo)權(quán)。只有基于完全自主的CPU指令集設(shè)計CPU、建設(shè)軟件生態(tài),我們才能構(gòu)筑起護(hù)城河,為我國的自主化信息產(chǎn)業(yè)爭取到成長壯大的時間。
我們?nèi)谌胧澜绲姆绞讲粦?yīng)該是把信息技術(shù)產(chǎn)業(yè)的主導(dǎo)權(quán)拱手相讓,而應(yīng)該是像Intel、AMD、ARM、MS、Google那樣,讓全世界都難以拒絕它們的CPU和軟件生態(tài)!
「 支持烏有之鄉(xiāng)!」
您的打賞將用于網(wǎng)站日常運(yùn)行與維護(hù)。
幫助我們辦好網(wǎng)站,宣傳紅色文化!
歡迎掃描下方二維碼,訂閱烏有之鄉(xiāng)網(wǎng)刊微信公眾號
