引言
最近,由於Copilot在平方根倒數速算演算法上的優秀表現,引發了人們的熱烈討論。github使用我們的開原始碼(作為訓練集)為我們服務,是否應該遵循開源協議,我們為此服務付費,又是否合邏輯呢?自由軟體基金會(FSF)在指責GitHub Copilot的行為不公正的同時,也希望為Copilot在未來可能出現的諸多問題未雨綢繆。
開源與開源協議
開源不等於免費
開源全稱為開放原始碼。這裡不得不提到與其相反的概念,Service as a Software Substitute以及專有軟體。後者就是我們日常中使用的vs code之類的軟體,我們沒辦法拿到這類軟體的原始碼,我們也很難知道這個程式碼到底做了什麼。比如windows和mac常常需要我們傳送錯誤報告等等的行為,這其實是具有安全隱患的,無形中可能洩露了我們的使用者隱私。至於Service as a Software Substitute則是通過服務來代替軟體,這就需要我們將使用者資料發到伺服器中,甚至一切計算都是在伺服器中進行的,如果把使用者隱私比喻為錢,專有軟體是可能偷到錢,而SaaSS是我們將錢直接送到別人的伺服器中。因此開源除了體現網際網路的共享精神,讓使用者自由的修改原始碼以外,最重要的也是對我們使用者隱私安全的一種保證,我們充分了解程式可能做了什麼,而不是對執行的程式碼一無所知。
商業中的開源協議
為了規範開源的不同應用場景,因此也出現了各種型別的開源協議。這裡將多個開源協議簡單的根據各自的特點分個類。
這裡詳細說下GPL(通用公共許可協議),相對於合同,GPL更像是一個許可證,兩者的區別是許可證只是允許你做一些你原本不會被允許做的事情。例如,當我想去釣魚時,我必須從當地市政當局獲得釣魚許可證。 而合同需要互惠義務,比如說政府給我許可證,但我需要分給政府一半我釣的魚。
當然這並不意味著獲得許可證的我不需要履行任何義務,還是以釣魚許可證為例,政府可能會規定我釣魚的時期,種類等限制,如果我沒有遵守,那恐怕就要收回我的許可證了。GPL也是一樣,GPL第三版中文文件簡明扼要的講解了自己的許可的權利與對應的義務:
所謂自由軟體,強調自由,而非免費。本GNU通用公共許可協議設計用於確保你享有分發自由軟體的自由(你可以為此服務收費),確保你可以在需要的時候獲得這些軟體的原始碼,確保你可以修改這些軟體或者在新的自由軟體中複用其中某些片段,並且確保你在這方面享有知情權。
為保障你的權益,我們需要作一些限定:禁止任何人否認你的上述權利,或者要求你放棄它們。因此,當你分發或修改這些軟體時,你有一定的責任——尊重他人的自由。如果你分發這種程式的副本,無論收費還是免費,你必須給予與你同等的權利。你還要確保他們也能收到原始碼並瞭解他們的權利。
聽起來像是說GPL會像病毒一樣傳染,但其實並不是這樣嚇人,這也是很多人的對GPL的一個誤解了,事實上正如上面所強調的一樣,GPL僅僅是確保你具有分發軟體的自由以及對應的義務,換句話說,你可以選擇替換掉GPL對應的程式碼,或者停止繼續分發:
十二、不得犧牲他人的自由
即便你面臨與本協議條款衝突的條件(來自於法庭要求、協議或其他),那也不能成為你違背本協議的理由。倘若你不能在轉發受保護作品時同時滿足本協議和其他檔案的要求,你就不能轉發本程式。例如,當你同意了某些要求你就再轉發問題向你的轉發物件收取版稅的條款時,唯一能同時滿足它和本協議要求的做法便是不轉發本程式。
利用遵守GPL協議的程式碼作為訓練集,訓練出來的演算法是否收到GPL的約束呢?
似乎這種情況更加符合GPL的Object Code:
目標碼形式的作品中“相應的原始碼”指所有修改作品及生成、安裝、執行(對可執行作品而言)目標碼所需的原始碼,包括控制上述行為的指令碼。
那麼該演算法也理應收到GPL中對Object Code所規定的約束。當然,這種“其他形式”的宣告總是有可扯皮的空間。
不過這題也可以從另一個角度來解,那便是github本身,是否具有將使用者上傳的程式碼作為資料集的權利
github對使用者上傳的內容,具有何種權利
在github的服務條款中,github規定了他對使用者上傳內容所享有的權利:
4. 向我們授予許可
我們需要合法的權利來為您服務,例如託管、釋出以及分享您的內容。 您授權我們和我們的合法繼承者儲存、存檔、解析和顯示您的內容,以及製作附帶副本,但限於提供服務的目的,包括逐步改進服務。 此許可包括如下權利:將您的內容複製到我們的資料庫並製作備份;向您及其他使用者顯示;將其解析為搜尋索引或在我們的伺服器上分析;與其他使用者分享;執行(如果您的內容是音樂或視訊之類的內容)。
此許可不授予 GitHub 出售您的內容的權利。 它也不授予 GitHub 出於提供服務之外的目的分發或使用您的內容的權利,但作為存檔內容的權利的一部分,GitHub 可能允許我們的合作伙伴在與 GitHub Arctic Code Vault 和 GitHub Archive Program 相關聯的公共倉庫中儲存和存檔您的內容。
條款中限定了自己在伺服器上分析使用者上傳內容的尺度——僅僅用於Github為使用者提供服務的範疇。