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 的目錄中。如果程式碼是由自己的存放區代管,則在 Fauchsia Platform 原始碼樹狀結構中勾選時,必須將其對應至包含名為 third_party 目錄的路徑。特定部分程式碼可以使用的授權組合,需視程式碼的使用方式而定。請參閱下方有關實際工作環境目標和開發目標的已核准授權清單。

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

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

授權和追蹤

請參閱「什麼是授權?」一文。,解釋何謂開放原始碼授權及其重要性。託管於 https://fuchsia.googlesource.com/ 的所有專案都必須使用經核准的授權進行發布,而且程式碼旁須包含完整授權文字。僅以提及授權的方式 (例如「BSD3」) 說明授權內容並不足以提供足夠的內容,則必須加入實際的文字。在大多數情況下,專案應為整個存放區,授權文字應位於存放區頂層,且在名為 LICENSE、COPYRIGHT 或類似的檔案中。在極少數情況下,Fchsia 專案需要在單一存放區中代管多個邏輯專案 (例如在 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 進行的修改類型 (如果有的話)。授權的簡短說明應為與授權相符的軟體套件資料交換 (SPDX) 授權 ID,但如果需要較多授權,則可輸入更多文字。Fuchsia 專案代碼,也就是《Fuchsia Author》擁有程式碼版權,以及依 Fuchsia 專案標準授權發布的程式碼,不需要這個檔案。

代碼類別和允許的執照

生產目標

本節適用於使用者正在使用的 Fuchsia 正式版裝置中執行的所有程式碼。在本文件中,「正式版目標」是指使用者正在使用的 Fuchsia 正式版裝置,「生產目標」包括在裝置上執行的核心、驅動程式、系統服務、架構、程式等,無論部署方式為何。如果程式碼依據下列其中一項授權發布,且僅在該授權下發布,則程式碼可在這個目標中發布。如果有其他限制 (例如 IP 授予或其他額外子句),則該部分程式碼就無法取得授權核准。

已核准的授權

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

不具備上述任一授權,且未明確授予豁免的程式碼。

受限制互補類別中的授權不會獲準用於 Fuchsia。

特定例外狀況

下列存放區已針對正式版目標裝置授予特定豁免項目:

這些豁免權僅適用於這些特定存放區,無論其相似程度為何,都不適用於任何其他存放區。

特殊例外狀況

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

所有屬於此例外狀況的專屬程式庫 (例如多個相容的驅動程式) 都將獨立且清楚標示為專屬資料,並隨附相關授權條款。

特殊授權例外情況在 Fuchsia 生態系統中不再適用,只有在技術大幅改善 Fuchsia 功能或互通性、沒有任何充分的開放原始碼替代項目,且程式碼或二進位檔可與 Fuchsia 的開放原始碼存放區分開的情況下,才會視為例外狀況。所有第三方皆無權享有 Fuchsia 授權政策的例外資格。

開發目標

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

已核准的授權

此外,開發目標可使用下列授權:

託管開發構件

如要在 Google 儲存空間中代管構件 (二進位檔或 tarball),您必須執行下列操作:

  • 確認所有遞移依附元件都獲得已核准的授權。
  • 確認所有依附元件的確切來源都託管於 https://fuchsia.googlesource.com/
  • 產生包含二進位和所有遞移依附元件授權文字的檔案。提供這個檔案和成果 (即使用 tar)。

修改外部程式碼

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

支援聯絡人

新增外部程式碼

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

問題

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