JavaScript 授權條款網頁標籤:背景與基本原理

現今使用者在瀏覽網路時,通常會在他們的電腦上執行大量的專有軟體,而且往往在不知情的情況下。自由軟體在桌面上獲得成功,部分原因在於著作權保護,保證使用者在特定程式可供他們使用、研究、分享和修改時,會事先被告知。在網路上,瀏覽器下載並執行 JavaScript,從未告知使用者程式的授權條款或他們的自由——或者其他程式如何剝奪使用者的自由。

為了應對這個問題,我們開發了 LibreJS 程式,它可以識別重要的 JavaScript 程式碼並檢查其授權條款。它的運作取決於以一種缺乏人類智慧的程式可以可靠地識別的方式指定授權條款。此外,所有 GNU 軟體授權條款都要求發行者在軟體中聲明授權條款,以便接收者知道他們的權利,並說明在哪裡可以找到原始碼。

指定授權條款的簡單方法是在 JavaScript 程式碼中使用樣式化的註解。然而,對於最小化的程式庫檔案來說,這可能不太方便,因此我們開發了另一種聲明其授權條款的方式:JavaScript 網頁標籤

基本原理

在自由軟體授權條款中,包含授權條款副本和存取原始碼的條件,在軟體透過網路或其他網際網路管道發行時,幾乎總是很容易遵循。然而,發行嵌入在網站中的 JavaScript 程式碼,由於一些獨特的因素而變得複雜:訪客通常在沒有明確要求的情況下收到軟體,而且網站管理員只能提供單一的 JavaScript 程式碼檔案(因此他們不能,例如,發送包含授權條款要求的其他資源的封存檔案)。

這些問題加在一起,使得網站管理員幾乎沒有明顯的方法來提供自由軟體授權條款要求的額外材料。最簡單的解決方案是僅以原始碼形式提供 JavaScript,並在註解中包含完整的授權條款副本。這在較小的網站上是可以接受的,但是當 JavaScript 開始代表大量的重複流量時,網站管理員可以理解地不願意提供如此多的資料。我們的方法透過解決這兩個問題,為他們提供了一個清晰的地方來提供額外的授權條款資源——也為訪客提供了一個清晰的地方來尋找它。首先,它透過連結提供「JavaScript 授權條款資訊」,使軟體發行變得可見。連結的頁面為網站管理員提供了一個空間,他們可以在其中發布這些資源,這些資源既適當地顯眼,又不會讓訪客感到困惑。

機器可讀性

為了讓人們更容易在他們的瀏覽器中拒絕非自由的 JavaScript,我們的方法足夠具體,讓外掛程式或其他軟體可以找到網站的 JavaScript 授權條款資訊表,確認所有 JavaScript 都採用已知的自由授權條款,下載原始碼,並確認它與從網站提供的最佳化 JavaScript 相符。這樣,訪客可以快速且方便地檢查 JavaScript 是否是自由的,並據此決定是否要執行它。LibreJS 是一個適用於 Mozilla 系瀏覽器的外掛程式,可以幫助使用者避免執行非自由的 JavaScript,它將實作這些檢查以增強其功能。

我們曾考慮使用另一種格式,例如 RDF 作為我們系統的基礎,以便透過以易於解析的格式向程式設計師提供更詳細的資訊來簡化這項工作。然而,我們的目標是首先讓人類讀者可以存取這些資訊,其次才是機器。使用結構良好的 HTML 最符合這些優先順序。

下一步

我們並不是說託管自由軟體 JavaScript 的網站管理員必須遵循這種特定方法才能符合授權條款。每個自由軟體授權條款都清楚地列出了自己的條件,任何想要使用符合這些條件的不同方法的網站管理員都歡迎這樣做。然而,這種方法的好處是使訪客可以輕鬆存取完整的授權條款資訊——這是一個迄今為止一直難以解決的問題——而不會損害網站管理員以他們認為最好的方式提供 JavaScript 的能力。

我們非常希望聽到關於我們可能實現相同目標的其他方法的意見和建議,同時使該系統對網站管理員、網站訪客或從事授權條款檢查軟體的開發人員更有用。如果我們收到足夠的建議來發布一種明顯優於此方法的新方法,我們將會這樣做。(這就是為什麼這種方法對授權條款資訊表使用如此冗長的識別符的原因:允許軟體將此方法與我們未來可能制定的其他方法區分開來。)如果您對這個問題感興趣,請訂閱 LibreJS 電子郵件論壇,並在那裡寫下您的評論和建議。我們期待收到您的來信。