Fuchsia 開放原始碼授權政策

本文件說明 Fuchsia 專案中的開放原始碼授權和相關政策。

Fuchsia 專案程式碼

所有 Fuchsia 專案程式碼都會託管在 https://fuchsia.googlesource.com/。Fuchsia 專案檔案標頭會列出 Copyright <year_of_file_creation> The Fuchsia Authors

授權

Fuchsia 須遵守多項授權:

根據這項政策,任何擁有不同版權持有人的程式碼,或以不同授權發布的程式碼,都視為外部程式碼,且必須遵守本文所述的外部程式碼政策。

外部程式碼

https://fuchsia.googlesource.com/ 上代管的所有外部程式碼,必須是根據已核准的授權清單授權發布的開放原始碼,除非特定例外狀況專屬例外狀況章節另有列出。所有外部程式碼都必須託管在名稱前面有 third_party 的存放區,或是在 Fuchsia 現有的存放區中名為 third_party 的目錄中。如果程式碼是託管在專屬的存放區,則在將其簽出做為 Fuchsia 平台來源樹狀結構的一部分時,必須對應至包含名為 third_party 的目錄路徑。特定程式碼部分可使用的授權集合取決於該程式碼的用途。請參閱下方表格,瞭解正式版目標和開發目標的核准授權。

Fuchsia 建構作業中使用的所有程式碼都必須託管在 Google 執行的 Gerrit 伺服器上。在幾乎所有情況下,程式碼都必須託管在 https://fuchsia.googlesource.com/

執行 jiri update 時,必須下載所有原始碼。沒有任何建構步驟可下載額外的原始碼。套件管理系統 (例如 Dart 的 Pub 套件或 Rust 的 Cargo 箱) 中的程式碼必須提供至 https://fuchsia.googlesource.com/,並遵循與專案中其他程式碼相同的授權要求。

授權和追蹤

請參閱「什麼是授權?」,瞭解開放原始碼授權的定義和重要性。所有在 https://fuchsia.googlesource.com/ 上代管的專案都必須依照核准的授權發布,並在程式碼旁邊附上完整的授權文字。僅以參考方式指出授權條款 (例如「BSD3」) 是不夠的,必須附上實際的文字。在大多數情況下,專案應為整個存放區,且授權條款文字應位於存放區的頂層,並以 LICENSE、COPYRIGHT 或類似名稱命名。在極少數情況下,Fuchsia 專案需要在單一存放區中代管多個邏輯專案,例如在 Fuchsia 的 Dart pub 供應商存放區中,每個專案都必須位於專屬目錄中,並附上該專案的授權文字,而存放區中的頂層檔案則必須說明子目錄使用的授權集。

為便於追蹤,除了授權文字之外,每個含有外部程式碼的專案都必須包含 README 檔案,其中包含專案相關資訊。README 檔案名稱必須為 README.fuchsia,且至少包含下列資訊:

Name: common name for the project

URL: web site of upstream project

LICENSE: short description of license

README.fuchsia 檔案也建議 (但不強制) 說明所使用的上游專案版本,以及為了移植至 Fuchsia 而進行的任何修改。授權的簡短說明應為與授權相符的 Software Package Data Exchange (SPDX) 授權 ID,但如果需要進一步說明授權,則可以加入更多文字。Fuchsia 專案程式碼 (即 Fuchsia 作者擁有著作權的程式碼,以及根據 Fuchsia 專案標準授權發布的程式碼) 不需要這個檔案。

程式碼類別和允許的授權

生產目標

本節適用於在使用者使用的實際生產版 Fuchsia 裝置上執行的所有程式碼。在本文件中,「正式版目標」是指使用者使用的正式版 Fuchsia 裝置。「正式版目標」包括在裝置上執行的核心、驅動程式、系統服務、架構、程式等,不論其部署方式為何。程式碼必須根據下列任一授權發布,且僅限於該授權,才能在這個目標中使用。如果有其他限制 (例如 IP 授權或其他附加條款),則授權核准就無法適用於該部分程式碼。

核准的執照

以下是正式版目標裝置的核准授權:

在正式版目標中,如果程式碼並未採用上述任一授權,且未明確獲得豁免,則不允許使用。

受限制互惠類別的授權將無法在 Fuchsia 中使用。

特定例外狀況

下列存放區已獲得正式版目標裝置的特定豁免權:

這些豁免條款僅適用於這些特定存放區,不適用於其他任何內容,即使內容看起來很相似也不例外。

專屬例外狀況

在特殊情況下,如果合作夥伴不會以開放原始碼授權提供特定技術,Fuchsia 可能只能以更嚴格的授權條款,向大眾提供編譯的二進位檔。

凡是屬於這項例外的專屬程式庫 (例如多個相容的驅動程式),都會分開處理,並清楚標示為專屬素材,並附上相關的授權條款。

在 Fuchsia 生態系統中,專屬授權例外狀況並不受歡迎,只有在技術大幅改善 Fuchsia 功能或互通性、沒有適當的開放原始碼替代方案,且程式碼或二進位檔可與 Fuchsia 的開放原始碼存放區分開時,才會例外。任何第三方均不得例外適用 Fuchsia 授權政策。

開發目標

本節適用於開發人員用於建構 Fuchsia 的所有程式碼,包括工具、偵錯工具、公用程式和範例。所有正式版目標允許的授權皆可用於開發目標。在本文件中,「開發目標」的定義是指非正式版的 Fuchsia 裝置,由 Fuchsia 開發人員而非最終使用者使用。

核准的執照

此外,開發目標也允許使用下列授權:

代管開發構件

如要為了開發目的,在 Google 儲存空間上代管構件 (二進位檔或 tarball),您必須執行下列操作:

  • 確認所有間接依附元件均使用核准的授權。
  • 請確認所有依附元件的確切來源皆託管於 https://fuchsia.googlesource.com/
  • 產生包含二進位檔和所有轉換依附元件授權的授權文字檔案。使用簽署標的 (也就是 tar 檔案) 提供此檔案。

修改外部程式碼

修改外部程式碼的程序與修改 Fuchsia 專案程式碼相同。請務必將適當的 README.fuchsia 檔案保持在最新狀態,並概略說明上游的變更內容。變更外部程式碼時,請勿修改任何現有的版權聲明或授權檔案。

支援聯絡人資訊

新增外部程式碼

如要瞭解如何新增外部程式碼,請參閱「開放原始碼審查委員會 (OSRB) 程序」一文。

問題

如果您對 Fuchsia 的外部政策或這些政策與 Fuchsia 專案的關聯有任何疑問,請傳送電子郵件至 external-code@fuchsia.dev