開源項目閉源了,我們怎么辦?
今天不談技術(shù),我也來八卦一下。最近信息系統(tǒng)基礎(chǔ)設(shè)施國產(chǎn)化的浪潮興起,大量的國產(chǎn)化IT基礎(chǔ)設(shè)施廠商因此受益。不過也有一些不同的聲音,認(rèn)為國產(chǎn)IT基礎(chǔ)設(shè)施大多數(shù)依賴于開源代碼,因此都是假國產(chǎn)。似乎只要不是從第一行代碼寫起的軟件,都說不上是國產(chǎn)。哪怕是大部分代碼都是自己寫的,也是抄襲,算不得什么。最近也經(jīng)常聽到“如果開源項目閉源了,那么國產(chǎn)化就一地雞毛了”。用不用開源,利用開源項目算不算國產(chǎn)化,在之前我已經(jīng)表達過自己的觀點了,這里不多做表述。每個人從自己的角度出發(fā),對這個問題的看法也不同,這都很正常,很多事情本來就是需要用十幾年甚至幾十年時間才能看得清的,現(xiàn)在下結(jié)論還為時尚早。
目前國產(chǎn)IT基礎(chǔ)設(shè)施中大量使用開源代碼,這是事實。因為我們在這方面的起步較晚,一直處于追趕階段,如果再從頭開始,恐怕差距就更大了。所以選擇相對容易跟上大時代的方式可能是我們不得不采用的。大量使用開源既然不可避免,那么開源社區(qū)如果閉源了,我們該怎么辦呢?實際上,這個問題在多年前,我們的企業(yè)就已經(jīng)遇到過了。南大通用的分布式數(shù)據(jù)倉庫系統(tǒng)GBASE 8A的存儲引擎中就使用了inforbright標(biāo)準(zhǔn)版的開源代碼,不過2015年左右inforbright修改了開源協(xié)議,產(chǎn)品變成閉源產(chǎn)品了。不過GBASE 8A這個產(chǎn)品并沒有消失,近些年發(fā)展的風(fēng)生水起,在國產(chǎn)數(shù)倉領(lǐng)域的市場占有率也節(jié)節(jié)攀升。實際上南大通用也不是簡單的把inforbright的開源代碼拿來就能拼湊出一個分布式數(shù)據(jù)倉庫產(chǎn)品的。因為開源的inforbright是單機版的,并不支持集群。我想通過這些年的發(fā)展,南大通用已經(jīng)基本上掌握了inforbright存儲引擎的關(guān)鍵代碼。
開源項目會改變開源協(xié)議,這些年我們遇到的已經(jīng)不是inforbright這一家了,2019年的REDIS修改開源協(xié)議讓大家虛驚一場。后來發(fā)現(xiàn)只是一些高級組件改成了自己定義的RSAL許可證協(xié)議,核心的REDIS組件還是保留為APACHE V2,這家多次修改開源協(xié)議的企業(yè)其每次修改都是和融資之類的商業(yè)活動有一定關(guān)聯(lián)性的。實際上這些年MongoDB和ES的開源協(xié)議改為更為商業(yè)的協(xié)議,也都和融資上市等行為有關(guān)。并不是企業(yè)在收割用戶,而是企業(yè)的第一要務(wù)是為股東創(chuàng)造利潤,這種行為都是正常的商業(yè)行為。
因為開源協(xié)議是會被改變的,所以在選擇開源項目的時候也是要十分小心的。如果某個開源產(chǎn)品是一家主要的企業(yè)主導(dǎo)開發(fā)的,核心代碼都掌握在這家企業(yè)里,那么因為商業(yè)利益,企業(yè)修改開源協(xié)議的可能性就更大一些,而那些開源社區(qū)中沒有明顯的企業(yè)控制的開源項目,其風(fēng)險就會小一些。
回頭來看看我們所關(guān)心的Linux,實際上連我都差點忘了,最著名的Linux開源發(fā)行版的全稱是GNU/Linux,這個發(fā)行版是現(xiàn)在大多數(shù)Linux發(fā)行版的源頭。有些朋友可能以為GNU代表了GPL開源,實際上不是的。GNU/Linux是兩部分軟件的組合,Linux是一個類UNIX的核心,其代碼量在Linux發(fā)行版中是極小的,而GNU是Linux核心外的整個操作系統(tǒng)。GNU也是最早的開源組織,GPL就是該組織的開源協(xié)議,Linux的核心與GNU結(jié)合后,替代了GNU中那個寫得不夠好的核心HURD,從此Linux核心也遵循GPL開源協(xié)議了。
到目前為止數(shù)萬個組織和個人都在參與Linux代碼的貢獻,每個貢獻者都可以獨立決定自己提供的這部分代碼的開源協(xié)議,只不過這些開源協(xié)議必須是和GPL兼容的,代碼才會被收錄。實際上目前我們使用的Linux發(fā)行版中,有不少代碼也不是遵循GPL開源協(xié)議的。從目前來看,想要改變GNU/Linux的整體開源協(xié)議,是一個極小概率的事件。某個組件要修改成與GPL不兼容的開源許可,開源社區(qū)立即會選擇其他的替代方案來進行替代。因此GNU/Linux閉源的可能性是極低的。
雖然暫時不存在GNU/Linux等關(guān)鍵開源項目閉源的可能性,我們的企業(yè)也不能躺在開源項目上賺錢。積極參與開源社區(qū),貢獻高質(zhì)量的原創(chuàng)代碼是每個利用開源項目發(fā)行商用版本的企業(yè)的責(zé)任,我們在開源社區(qū)貢獻越大,我們在開源社區(qū)的話語權(quán)也就越大。同時基于開源項目發(fā)行商用版本的企業(yè)也應(yīng)該嚴(yán)格遵守開源協(xié)議,比如使用GNU/Linux代碼的企業(yè),也應(yīng)該繼續(xù)開源自己的代碼。除非你準(zhǔn)備完全脫離開業(yè)社區(qū),重構(gòu)代碼,開發(fā)自己的閉源產(chǎn)品,否則必須嚴(yán)格遵守開源協(xié)議,否則必然存在被開源社區(qū)拉黑的可能性。
除此之外,目前大家對一些國產(chǎn)軟件廠商最大的不滿在于他們封裝開源代碼,并以此盈利,但是他們并沒有承擔(dān)一個產(chǎn)品原廠應(yīng)有的服務(wù)職責(zé)。用戶遇到問題后基本上無法獲得任何售后服務(wù)。大家都知道,如果我們購買了紅帽的RHEL,那么遇到問題,到紅帽的官網(wǎng)上,大概率能找到解決問題的辦法,或者可以將問題提交上去,等待紅帽發(fā)補丁來解決。同樣都是依靠開源社區(qū)來發(fā)財?shù)钠髽I(yè),紅帽能做到的,希望我們的國產(chǎn)軟件廠商也能做到。只有這樣,才能形成一個良好的生態(tài),我們的國產(chǎn)軟件廠商才真正摘掉“套殼”的帽子。