22 日晚,Apache SkyWalking Founder吳晟在朋友圈中指出,因違反開源協(xié)議要求,SkyWalking 只能暫時拒絕針對唯品會 Saturn 項(xiàng)目的插件需求。
Saturn 是 fork 自 ElasticJob,并更改了版權(quán)信息,這是一個非常嚴(yán)重的許可證問題。基于 ElasticJob 的原始許可證 Apache 2.0 ,所有文件的 header 都應(yīng)該保留,即便他們修改了代碼。所以,無論你或是任何人想要做這個插件,我們都不能正式接受它作為 Apache SkyWalking 的一部分。如果你認(rèn)識他們,請聯(lián)系他們。只有在他們糾正了許可證問題,并且回滾了所有的 header 之后,我們才能支持他們的新版本。
我們聯(lián)系吳晟了解相關(guān)情況,根據(jù)他的說法,他在查看 Saturn 源碼時,發(fā)現(xiàn)項(xiàng)目實(shí)際上是 fork 自當(dāng)當(dāng)網(wǎng)的 ElasticJob。
ElasticJob 采用的 Apache 2.0 開源許可協(xié)議。根據(jù) Apache 2.0 協(xié)議的要求,衍生項(xiàng)目需要在源碼中有明確標(biāo)識,說明此項(xiàng)目是 fork 自 ElasticJob ,一般就是在使用到的源碼上保留原始附加版權(quán)信息,方可進(jìn)行二次分發(fā)。
也就是說,Saturn 需要保留原項(xiàng)目文檔中的版權(quán) header 說明,聲明當(dāng)當(dāng)?shù)脑及鏅?quán)。但吳晟發(fā)現(xiàn),Saturn 項(xiàng)目大部分文檔中并沒有聲明版權(quán)歸 ElasticJob。
這相當(dāng)于,Saturn 復(fù)制了一遍 ElasticJob 的源碼,并自行修改,但沒有很好地尊重 ElasticJob 的版權(quán)。嚴(yán)格來看,類似 “抄襲”源代碼行為。
此時 Saturn 要提交給 SkyWalking,SkyWalking 認(rèn)為它在 “開源”約定上是不合規(guī)的,就拒絕了。
吳晟表示,Saturn 想要更正這個問題,工作量會非常大,首先需要把所有來自 ElasticJob 的源文件全部退回當(dāng)當(dāng)?shù)?header,在庫里聲明,這是基于當(dāng)當(dāng)版本 ElasticJob 二次分發(fā)的一個版本。更正后需要重新發(fā)布一個 release 版本,“基于這個 release 版本,SkyWalking 肯定是可以接受它的插件到官方庫的。之前的所有版本都不合規(guī),如果不修正,那么實(shí)際上就是一直存在版權(quán)問題,不僅影響自身在開源上更好地發(fā)展,也會給其它準(zhǔn)備和已經(jīng)使用了它的項(xiàng)目帶來困擾。”
不過吳晟認(rèn)為,Saturn 應(yīng)當(dāng)沒有 “抄襲”源碼的初心,因?yàn)?Saturn 的代碼庫中有標(biāo)注一個致謝信息,說明項(xiàng)目來自當(dāng)當(dāng)?shù)腅lasticJob,并感謝軟件核心開發(fā)者 / 發(fā)起人張亮。(注:ElasticJob 已經(jīng)捐贈給 Apache 基金會,版權(quán)也隨之屬于 Apache 基金會)
所以可以假定Saturn 并沒有故意隱瞞項(xiàng)目來源于 ElasticJob 的事實(shí),假裝原創(chuàng),但由于它是一個 fork 項(xiàng)目,所以必須按照協(xié)議要求,保留原始版權(quán)聲明,而不是只在結(jié)尾致謝。
整件事情對于開發(fā)者來說很有教育意義,尤其是在做開源開發(fā)時,必須要了解開源協(xié)議。開源軟件本身的存在就是為了給用戶自由,開源協(xié)議雖然各有不同,但最基本的要求往往都是尊重軟件版權(quán)。
Saturn 沒有正確保留版權(quán)聲明,致使目前所有版本都不合規(guī),對自己和使用它的項(xiàng)目都造成了一定的影響。
近期也有一例不符合 Apache 2.0 協(xié)議引發(fā)的事故。6 月,云計算解決方案服務(wù)商博云,因?yàn)槭褂昧?SkyWalking,卻未按照 Apache 2.0 協(xié)議的要求,在顯著位置說明項(xiàng)目使用了 SkyWalking,被 Apache 基金會披露。事后博云方面回應(yīng)稱,他們對外一直公開說是基于 SkyWalking,并沒有把 SkyWalking 裝扮成自己產(chǎn)品的意思,“我們這次干事干的粗糙了。”
從 Saturn 的庫和博云的回復(fù)來看,兩件事或許都是不懂協(xié)議造成的。
兩件事涉及到的 Apache 2.0 協(xié)議是 ASF 在 2004 年發(fā)布的,屬于寬松型協(xié)議。今年 5 月,《大教堂與集市》的經(jīng)典中文版本譯者衛(wèi)劍釩用一句話總結(jié)了 Apache 協(xié)議的要旨:“要留我的名,改哪了你得說!”,并解讀 Apache 協(xié)議精要:
你可以隨便用!不會因版權(quán)和專利找你麻煩的!
不能用我的商標(biāo)!
你分發(fā)本作品或衍生作品時,可以不再提供源碼!
你在分發(fā)時,必須做到:
1、帶上本許可證!
2、保留本軟件的所有版權(quán)、專利等說明!
3、你改過的文件,你得說改了哪!
4、NOTICE 文件中的信息得保留!
5、在遵循本許可證的條件下,你可以再許可!
本作品就這樣了,我不會負(fù)任何責(zé)任的!你想負(fù)責(zé)你可以負(fù),但別拉上我!
“授權(quán)只是給你使用,并不是授權(quán)無限制地剝奪人家的著作權(quán)”,吳晟表示,fork 了別人的東西時,不能改掉別人的 License 聲明,這應(yīng)該屬于強(qiáng)制性的東西。
實(shí)際上,聲明版權(quán)只是協(xié)議的一項(xiàng)基本要求,一些更嚴(yán)格的協(xié)議,如 GPL 會要求采用了 GPL 協(xié)議軟件的整個軟件包也必須開源。現(xiàn)在,通過OSI 認(rèn)證的協(xié)議已有近百個,雖然這可能會使開源軟件的使用變得復(fù)雜,但也保障了開源軟件及其作者的基本權(quán)益。違反開源協(xié)議輕則會被公開批評、重則會導(dǎo)致項(xiàng)目因合規(guī)問題無法登上更大的開源舞臺,甚至有可能引發(fā)訴訟。
開發(fā)者在使用一個開源軟件時,首先要做的,或許就是去了解它的開源協(xié)議。