陳思谷
(中南大學 法學院,湖南 長沙 ,410083)
General Public Licence簡稱GPL許可協(xié)議,是開源界常用的一類開放源代碼許可協(xié)議,是源代碼的著作權人基于自由、開放和共享的理念,通過附條件許可的方式,允許其他使用者在遵守協(xié)議限制的條件下,對其源代碼進行自由使用、復制、改編、再發(fā)布。開放后的源代碼能吸引來自不同地方、素不相識的開發(fā)者們在免費下載、自由使用、復制、改編、再發(fā)布的過程中,協(xié)助提高開源項目的質(zhì)量,共同完成開源項目的開發(fā)[1]。
開放源代碼許可協(xié)議雖然是將源代碼授權給其他使用者免費使用和修改,但協(xié)議條款會明確授權條件并以此規(guī)范使用者的使用和修改行為。當前,經(jīng)過國際開放源代碼促進會( Open Source Initiative , OSI)審批認證的開源軟件許可協(xié)議種類超過100多種[2],而GPL許可協(xié)議作為開源界最常用的一類許可模式,其條款內(nèi)容除了涵蓋其他協(xié)議都有規(guī)定的“適用范圍”“責任約束”“權利授予”“免責聲明”等條款外,甚至部分條款還具有“開源傳染性”(或稱“開源傳遞性”)[3]。這里的“傳染性”主要體現(xiàn)在協(xié)議內(nèi)容對修改后的產(chǎn)品具有一定的限制:基于開源代碼修改后的代碼或派生作品需要再次開源,即繼續(xù)向社會公眾免費開放。
GPL許可協(xié)議的條款既賦予了不特定使用者權利但也規(guī)定了相應的義務,在允許使用者改編、使用、發(fā)布其基于GPL協(xié)議開源的代碼背景下,亦要求使用者繼續(xù)公開其成果,依據(jù)開源許可的方式向社會公眾公開其后續(xù)生成的修改版本與派生作品。當然,基于GPL源代碼生成的修改版本和派生作品的開源模式可以與原GPL模式相同,即修改版本或派生作品延續(xù)使用GPL協(xié)議;但也可以不同,但必須都是開源許可。根據(jù)其是否要求修改后的代碼需再次公開大致可以分為開放型許可(MIT、BSD)、弱傳染型許可(LGPL、MPL、EPL)、傳染型許可(GPL)、強傳染型許可(AGPL)4類[4]。其中,GPL開源協(xié)議一直是最經(jīng)典的一種具有傳染性的開源協(xié)議,以GPL協(xié)議為例,該協(xié)議的“傳染性”主要表現(xiàn)在“縱向”和“橫向”兩個維度。
1.2.1 “縱向傳染”中“再開源”義務
在“縱向”維度上,基于GPL協(xié)議開放的源代碼會“傳染”自身的修改版本或派生作品。例如使用者雖然可以基于GPL協(xié)議的授權,在源代碼的基礎上進行再創(chuàng)作,但是基于創(chuàng)作產(chǎn)生的代碼新版本或派生作品則應繼續(xù)依照GPL協(xié)議的要求進行再開源,向社會公開。因此,判定開源協(xié)議的縱向傳染問題就轉(zhuǎn)換成了對源代碼派生作品的界定。派生作品又稱演繹作品,實務中對軟件源代碼實行演繹主要包括改編、翻譯和整理。改編是指對源代碼的結(jié)構(gòu)、順序與組織根據(jù)用戶的不同需求進行修改和改變。翻譯是指把源代碼從一種應用程序語言改變?yōu)榱硪环N應用程序語言。整理是指將分立的各模塊的目標文件中所含的源代碼整理成可執(zhí)行文件,計算機軟件的代碼規(guī)模常常難以估量,經(jīng)常需要將這些代碼整理分類到各模塊,并將這些互相依賴但又相對獨立的部分組合運行。綜上,對源代碼進行改編、翻譯、整理后形成的派生作品均需要承擔傳染型開源協(xié)議中的“再開源”義務。
1.2.2 “橫向傳染”中“再開源”義務
在“橫向”維度上,基于GPL協(xié)議開放的源代碼還有可能會“傳染”自身及修改版本以外的一同分發(fā)、傳輸?shù)钠渌浖?、程序的其他部分。例如,GPL V3規(guī)定,如果利用源代碼編寫的軟件與其他軟件之間組合的目的是為了生成一個更大的算法或程序,則其他軟件也受到相應的GPL協(xié)議傳染條款的約束,需要公開其源代碼。若企業(yè)在宣傳“獨立研發(fā)具有自主知識產(chǎn)權”的軟件中混入了GPL協(xié)議項下的開源代碼,且被發(fā)現(xiàn)軟件整體具有被傳染至“再開源”的風險,而企業(yè)又并沒有履行開源義務,亦對企業(yè)的商譽造成負面影響。例如,華碩曾因其產(chǎn)品Eee PC違反Linux 源代碼的GPL授權而向公眾道歉,并隨后公開了Eee PC項目下的所有源代碼。
根據(jù)上文分析可知,雖然GPL許可協(xié)議秉持的是開放、自由和資源共享的理念,使用這些開源代碼都是無需向著作權人支付費用或者另行獲得著作權人授權,但并不代表用戶在使用這些開放的源代碼時無需承擔任何責任。當前,國內(nèi)公眾版權意識普遍較弱,很多人認為開放的源代碼意味著可以免費使用,想怎么用就怎么用。這其實是混淆了著作權權利許可行為與好意施惠行為。對于后者而言,施惠者是基于良好的道德品行實施了使得另一方受恩惠的行為,雙方之間沒有建立任何權利義務關系。但是在對著作權許可中,源代碼的著作權人對合同相對方行使其權利的行為必定是會有限制的,會在著作權授權合同中明確約定合同雙方當事人的權利與義務,以此約束被授權人的行為[5]。在GPL許可協(xié)議中亦是設立了制約使用者使用源代碼行為的內(nèi)容,無論是署名義務、再公開義務或是禁止閉源等條款,都可以看出開源許可協(xié)議不是好意施惠,使用者們只有嚴格遵守許可協(xié)議中的義務,才能合理享有無償使用、復制、修改等權利。
依據(jù)《中華人民共和國計算機軟件保護條例》第八條(1)《計算機軟件保護條例》第八條:“軟件著作權人可以許可他人行使其軟件著作權,并有權獲得報酬?!迸c第十八條(2)《計算機軟件保護條例》第十八條:“許可他人行使軟件著作權的,應當訂立許可使用合同。許可使用合同中軟件著作權人未明確許可的權利,被許可人不得行使?!保珿PL許可協(xié)議是著作權許可合同,并且是附條件解除的著作權許可。GPL許可協(xié)議作為向社會大眾公開的文件,源代碼著作權人在其代碼中附上GPL開源協(xié)議并整體公開其作品的行為構(gòu)成要約,其他不特定主體對該源代碼進行使用、復制、改編并生成新的修改版本或派生作品的行為構(gòu)成承諾,承諾做出就具有法律效力,該軟件著作權許可合同成立[6]。此外,GPL許可協(xié)議在尊重源代碼著作權人對自己著作權權利讓渡的基礎上,亦規(guī)范了用戶使用該源代碼的方式。因此,GPL協(xié)議條款有明顯的雙務性,例如條款既規(guī)定了權利人許可的范圍、方式等,還限制了被許可人接受許可的行為,明確了被許可人的義務,聲明了終止授權的情形和后果,并且GPL許可協(xié)議的“傳染性”,其本質(zhì)上是源代碼的著作權許可對其派生作品的著作權許可的規(guī)范,因為其要求基于GPL協(xié)議開源的代碼生成新修改版本或派生作品必須“再開源”,且開源的模式必須符合GPL協(xié)議的要求。
簡而言之,GPL許可協(xié)議是源代碼著作權人將其就該代碼作品的改編權、翻譯權、復制權、匯編權、發(fā)行權等財產(chǎn)權,附條件地許可給他人的著作權許可合同[7]。與其他著作權許可合同相比,GPL許可協(xié)議面向的是不特定的主體。
2.2.1 著作權侵權與合同違約
GPL許可協(xié)議是著作權許可合同,被許可方一旦違反GPL協(xié)議將直接導致其通過GPL許可協(xié)議獲得著作權許可無效和被終止,被許可方對源代碼傳播、使用或修改則屬于無合法權利來源的侵犯他人著作權的行為。(3)以GPL協(xié)議第二版為例,第4條規(guī)定:在本協(xié)議授權之外,您不能復制、修改、再授權或分發(fā)開源軟件。任何用其他方法復制、修改、再授權或分發(fā)開源軟件的企圖都是無效的,并使您從本協(xié)議獲得的權利自動終止。例如,如果開發(fā)者在獨自研發(fā)的軟件中混入了使用GPL協(xié)議開源的代碼,且沒有依據(jù)GPL協(xié)議的要求對軟件整體履行再開源義務,則可能會導致其獨自研發(fā)的軟件整體侵犯他人著作權的風險。因為依據(jù)GPL協(xié)議的規(guī)定,若開發(fā)者違反本協(xié)議規(guī)定,則導致通過開源協(xié)議獲得的著作權許可無效和被終止。由于被許可方的傳播、使用、修改、改編源代碼的行為往往處于一種持續(xù)的狀態(tài),在這種情況下,被許可方對源代碼傳播、使用或修改則屬于無合法權利來源的侵犯他人著作權的行為[8]。開發(fā)者將會面臨來自源代碼著作權人的侵權索賠以及停止使用的知識產(chǎn)權行為禁令。并且GPL許可協(xié)議作為一種著作權許可合同,還具有一般合同和著作權許可合同的雙重屬性,就必然會出現(xiàn)違約責任和著作權侵權責任之間的競合[9]。
2.2.2 成為他人的侵權抗辯是由
除此以外,開發(fā)者在自研代碼中混入GPL協(xié)議項下的開源代碼且違反“再開源”義務,也將成為其他用戶使用、復制、傳播其自研代碼的侵權抗辯。在使用基于GPL開源的代碼進行再創(chuàng)作形成修改作品或派生作品后,若使用者違反GPL協(xié)議或傳染性條款中規(guī)定的“再開源義務的行為”,可能成為他人就該修改作品或派生作品侵權的抗辯是由?;贕PL協(xié)議的傳染性,導致基于其源代碼后續(xù)生成的所有修改版本和派生作品都需要進行“再開源”并延續(xù)GPL許可模式。這里體現(xiàn)的是GPL許可協(xié)議及其傳染性條款對軟件著作權侵權判定的影響。
在司法實踐中已經(jīng)出現(xiàn)了原告因商業(yè)軟件作品被部分開源代碼“傳染”,成為被告使用、復制其商業(yè)軟件的抗辯理由(4)詳見(2016)京73民初1111號:北京閃亮時尚信息技術有限公司、不亂買電子商務(北京)有限公司侵害計算機軟件著作權糾紛一審判決書。。雖然權利人享有基于GPL協(xié)議的源代碼創(chuàng)作的修改版本或派生作品的著作權,但是由于GPL協(xié)議的屬性是附條件的著作權許可使用合同,即源代碼的著作權人附條件地將源代碼的復制權、發(fā)行權、修改權授予不特定公眾[10],并且GPL協(xié)議的傳染性條款明確規(guī)定了權利人基于源代碼的修改版本或派生作品需繼續(xù)基于GPL協(xié)議實行“再開源”,向社會公眾公開。因此,當權利人的權利作品中若使用或包含了GPL項下的源代碼,則其再無權禁止他人或組織對其修改版本或派生作品進行復制、修改、使用或發(fā)布。究其本質(zhì),這種抗辯不是針對于源代碼修改版本或派生作品本身權利歸屬的爭議,而是針對被訴侵權人或社會其他個體是否有重新獲得其新修改版本或派生作品的著作權許可的抗辯。
GPL許可協(xié)議有利于集結(jié)更多用戶資源打造自身生態(tài),快速獲取大量反饋資源,以此進一步優(yōu)化模型算法,實現(xiàn)重要的反哺。隨著開源的盛行,越來越多的商業(yè)產(chǎn)品都需要用到GPL許可協(xié)議項下的代碼,根據(jù)上文分析,GPL許可協(xié)議在“縱向”和“橫向”兩個維度上都具有很強的傳染性,因此,很多企業(yè)都會對LGPL、GPL、AGPL協(xié)議聞者色變,擔心使用這些具有“傳染性”的源代碼研發(fā)自身產(chǎn)品會導致整個商業(yè)產(chǎn)品被迫開源,從而造成商業(yè)秘密被迫公開,產(chǎn)生不可挽回的利益損失。事實上,GPL許可協(xié)議對其傳染性仍有例外條款規(guī)定:“僅將源代碼(或其派生作品)與另一項獨立作品聚合到一定數(shù)量的存儲或分發(fā)介質(zhì)上,并不會將獨立作品歸入?yún)f(xié)議的管轄?!蹦敲慈绾文茉谏虡I(yè)產(chǎn)品中使用傳染型開源代碼,并避免開源協(xié)議的傳染性呢?通過具體分析傳染性條款與司法實踐中的情況,規(guī)避GPL許可協(xié)議的“傳染性”可以從以下幾個方面入手。
以GPL許可協(xié)議為例,GPLVersion 2與GPL Version 3中分別規(guī)定了通過“分發(fā)”與“輸送”后的新修改的代碼及其派生作品會被“傳染”[11]。簡而言之,被許可人只要不對外進行分發(fā)或輸送其基于GPL開源代碼生成的修改版本或其他派生的作品,就可避免被“傳染”。目前,常見的代碼分發(fā)、輸送的途徑包括使用電子郵件、U盤、網(wǎng)頁鏈接等手段,提供給用戶進行下載和安裝。因此,為了規(guī)避“傳染性”,公有云服務廠商通常采取的規(guī)避措施就是將修改后的開源代碼部署在后端服務器中,不需要用戶進行任何安裝,就可以直接通過互聯(lián)網(wǎng)遠程連接提供服務。例如,以 Google 為主要代表的“不分發(fā)軟件,為客戶提供網(wǎng)絡服務”的這種商業(yè)模式是完全不被 GPL協(xié)議所限制和約束的,所以這類公司在設計和構(gòu)建他的網(wǎng)絡搜索引擎的過程中,就可以隨心所欲地使用現(xiàn)有的傳染型開源代碼,并且不需要開源他的修改成果。
綜上,不對外傳播基于GPL許可協(xié)議開源的代碼及其派生作品,即可避免諸如LGPL、GPL這類開源協(xié)議的傳染性。值得注意的是,AGPL協(xié)議為了防止這種情況的出現(xiàn),在 GPL 協(xié)議的基礎上又添加了一個約束:“如果其許可授權下的軟件與用戶通過網(wǎng)絡進行交互,那么亦需要向用戶提供修改后的源代碼?!盵12]因此,這類避免分發(fā)和輸送的措施并不能規(guī)避AGPL開源協(xié)議的傳染性,仍然需要承擔“再開源”義務。
傳染性的例外條款即開源協(xié)議不會“傳染”僅和開源代碼集合到一起本質(zhì)上不屬于開源代碼的作品。也就是說,獨立的作品不受GPL許可協(xié)議的管轄,即如果使用的開源代碼和企業(yè)自研軟件屬于獨立軟件,則自研軟件并不會被源代碼所屬的GPL許可協(xié)議所傳染;但如果使用的開源代碼和自研軟件之間不具有獨立性,則自研軟件會被源代碼所屬的開源協(xié)議所傳染。開源代碼與自研代碼的獨立可以表現(xiàn)為三個方面:一是保持開源代碼自身的獨立性;二是維持企業(yè)自研代碼的獨立性;三是兩者之間相互獨立。
在軟件結(jié)構(gòu)的設計上,保持開放源代碼的獨立性是避免其他部分代碼被GPL開源協(xié)議傳染的有效手段。例如,Android規(guī)避GPL“傳染性”的路徑是把GPL 協(xié)議局限在內(nèi)核空間。 Android 內(nèi)核是在Linux 基礎上開發(fā)的,而Linux 是GPL協(xié)議項下的開源代碼,因此,Android 的內(nèi)核模塊作為Linux 的派生產(chǎn)品,需要嚴格遵守 GPL協(xié)議進行開源發(fā)布。為了手機生產(chǎn)商的利益及其商業(yè)秘密的保密要求,Android在內(nèi)核空間與用戶空間之間引入HAL 層,將商業(yè)軟件產(chǎn)品與開源軟件分別存放在不同的地址空間,通過各種技術手段來達成獨立空間之間的通訊與調(diào)用,以此實現(xiàn)商業(yè)軟件產(chǎn)品與開源軟件的隔離。將GPL 協(xié)議限制在一個局限于內(nèi)核的空間,以此來繞過GPL許可協(xié)議并且保證了其他部分的獨立性,避免了其他的軟件產(chǎn)品受到GPL協(xié)議的傳染。近期,華為公司研發(fā)的智能操作系統(tǒng)“OpenHarmony(鴻蒙)”這一開源項目亦是在軟件結(jié)構(gòu)的設計上保證了開源代碼那一部分的獨立性,從而規(guī)避其源代碼所屬的GPL協(xié)議的傳染性。
對商業(yè)企業(yè)來說,商業(yè)軟件的開發(fā)者下載了基于GPL許可協(xié)議開源的代碼之后,通常都會在該源代碼的基礎上進行再創(chuàng)作,形成適用于企業(yè)自身的新修改版本或派生作品,再并入自己研發(fā)的商業(yè)軟件中,并一同分發(fā)和使用[13]。根據(jù)前文分析,自研代碼的“獨立性”是抵抗“傳染性”的重要標準。目前對于代碼“獨立性”的判斷在我國司法實踐中并未形成統(tǒng)一的標準。
2018年數(shù)字公司訴柚子公司著作權侵權案是我國司法實踐中涉及開源協(xié)議“傳染性”的第一案。該案一審法院認為,涉案的三個插件可以各自獨立運行,分別存放在三個獨立的文件夾中且三個獨立文件夾中無開源協(xié)議文本,據(jù)此認定涉案三個插件不屬于 GPL 協(xié)議中所指應被開源的派生產(chǎn)品或修改版本。(5)詳見(2015)京知民初字第631號:數(shù)字天堂(北京)網(wǎng)絡技術有限公司與柚子(北京)移動技術有限公司等一審民事判決書。二審判決僅對賠償數(shù)額進行了調(diào)整,直接回避了可能對 GPL 傳染性問題的討論。(6)詳見(2018)京民終471號 :柚子(北京)移動技術有限公司等與數(shù)字天堂(北京)網(wǎng)絡技術有限公司二審民事判決書。在2019年不亂買公司訴北京閃亮公司計算機軟件著作權糾紛案(7)(2019)最高法知民終663號:不亂買電子商務(北京)有限公司與北京閃亮時尚信息技術有限公司侵害計算機軟件著作權糾紛案二審民事判決書。中,最高人民法院認為,權利人的網(wǎng)站分為前端代碼與后端代碼,兩部分代碼之間是相對獨立的關系。雖然前端代碼中混入了基于GPL協(xié)議開源的代碼,但不會傳染與之相對獨立的后端代碼,即網(wǎng)站的后端代碼無需繼續(xù)依據(jù)GPL協(xié)議的要求履行再開源義務,因此,被訴侵權人未經(jīng)許可復制使用權利人后端代碼的行為構(gòu)成著作權侵權[14]。
類比在公司法中,法人的人格是否獨立性的判斷標準,判斷在東部地區(qū)的 a 公司和其在西部地區(qū)擁有一個獨立辦公場所的b子公司是否完全獨立,需要從 a和 b之間的財務關系、人事關系、業(yè)務關系等方面來判定b公司法人人格是否獨立。結(jié)合開源協(xié)議的條款,判斷軟件項目中模塊 A 與模塊 B 之間是否獨立,也絕對不能以A和B是否位于獨立的文件夾中來判斷,而是需要從 A 和 B 之間的功能關系、通信關系、調(diào)用關系、依賴關系等來判斷[15]?,F(xiàn)階段,對于代碼獨立性的判斷在我國司法實踐中尚未形成統(tǒng)一的判定標準,在不亂買公司與閃亮時尚公司案中,最高人民法院對代碼“獨立性”的認定方式對解決開源軟件“傳染性”問題具有一定啟示意義,開發(fā)者在使用傳染型開源代碼時,即便將其與其他商業(yè)產(chǎn)品放置在不同空間,仍然需考量開源代碼與自研代碼在實現(xiàn)方式、技術引用、功能區(qū)分等方面的關聯(lián)程度[16],不然也無法規(guī)避被傳染的風險。
開放創(chuàng)新一直以來都是推動人工智能產(chǎn)業(yè)發(fā)展的重要途徑,人工智能技術的蓬勃發(fā)展也離不開先進代碼的開源,科技巨頭諸如 Google 、華為等都加大了資金和人力投入積極擁抱開源,甚至把原本閉源產(chǎn)品轉(zhuǎn)為了開源項目,如對外開放其專有的機器學習框架等。與此同時,GPL許可協(xié)議這類具有“傳染性”的開源協(xié)議也給開源代碼的商業(yè)使用造成了著作權侵權的法律風險。因此,商業(yè)用戶在使用開源代碼進行自身研發(fā)時,首先需要確認源代碼涉及的開源協(xié)議的具體版本,判斷其是否為傳染型開源協(xié)議。其次要審查評估其自研軟件與傳染型開源代碼之間的關系,即傳染型開源代碼(或其派生作品)與其他自研軟件作品是否互相獨立,若存在被傳染的可能還需審查是否全面履行相應的開源協(xié)議義務。如果發(fā)生開源義務要求與商業(yè)軟件的保密要求之間的矛盾確實無法調(diào)和時,應在采取阻斷傳染性的基礎上,用自研軟件進行替代,否則極易自動觸發(fā)著作權許可合同的解除或終止條件,面臨著作權侵權的法律風險。