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 目錄中。如果程式碼是託管在自己的存放區中,則必須對應至包含名為 third_party 的目錄路徑,並在簽出為 Fuchsia 平台來源樹狀結構的一部分時。特定程式碼部分允許的授權組合取決於該程式碼的使用方式,請參閱下方的清單,瞭解適用於正式版目標和開發目標的核准授權。

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

執行 jiri update 時,必須下載所有原始碼。建構步驟不會下載其他原始碼。套件管理系統的程式碼 (例如 Dart 的 Pub 或 Rust 的 Crate 中的套件) 必須提供給 https://fuchsia.googlesource.com/,並遵守與專案中任何其他程式碼相同的授權規定。

授權和追蹤

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

為方便追蹤,除了授權文字外,每個包含外部程式碼的專案都必須包含 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 作者擁有著作權的程式碼,以及根據 Fuchsia 專案標準授權發布的程式碼) 不需要這個檔案。

程式碼類別和允許的授權

生產目標

本節適用於在 Fuchsia 裝置上執行的所有程式碼,且這些裝置是由一般使用者使用。本文將「正式版目標」定義為使用者使用的正式版 Fuchsia 裝置。「正式版目標」包括在裝置上執行的核心、驅動程式、系統服務、架構、程式等,無論部署方式為何。如果程式碼是根據下列其中一種授權發布,且僅適用該授權,則允許在目標中加入程式碼。如有其他限制 (例如 IP 授權或其他額外條款),則授權核准不足以涵蓋該部分程式碼。

已核准的授權

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

如果程式碼不適用上述任一授權,且未明確獲得豁免,則不得用於正式版目標。

受限互惠類別的授權將不獲准用於 Fuchsia。

特定例外狀況

下列存放區已獲准生產目標裝置的特定豁免:

這些豁免條款僅適用於這些特定存放區,不適用於任何其他內容,無論這些內容看起來多麼相似。

專有例外狀況

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

凡是屬於這項例外情況的專有程式庫 (例如多個相容的驅動程式),都會獨立存在,並清楚標示為專有素材,附上相關授權條款。

Fuchsia 生態系統不建議使用專有授權例外狀況,只有在技術大幅提升 Fuchsia 功能或互通性、沒有合適的開放原始碼替代方案,且程式碼或二進位檔可與 Fuchsia 的開放原始碼存放區分開時,才會例外。任何第三方均無權豁免遵守 Fuchsia 授權政策。

開發目標

本節適用於開發人員為 Fuchsia 建構項目時使用的所有程式碼,包括工具、偵錯工具、公用程式和範例。開發目標可使用所有允許用於生產目標的授權。本文將「開發目標」定義為 Fuchsia 開發人員使用的非正式版 Fuchsia 裝置,而非一般使用者。

已核准的授權

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

代管開發構件

如要在 Google 儲存空間上代管構件 (二進位檔或 tarball),以供開發用途,請完成下列步驟:

  • 確認所有遞移依附元件都採用核准的授權。
  • 確認所有依附元件的確切來源都託管在 https://fuchsia.googlesource.com/
  • 產生檔案,內含二進位檔和所有轉換依附元件的授權文字。請連同構件 (即 tar 檔案) 一併提供這個檔案。

修改外部程式碼

修改外部程式碼的程序與修改 Fuchsia 專案程式碼的程序相同。請務必使用上游的變更高階說明,讓適當的 README.fuchsia 檔案保持在最新狀態。變更外部程式碼時,請勿修改任何現有的著作權聲明或授權檔案。

支援聯絡人

新增外部代碼

如要瞭解如何新增外部程式碼,請參閱「Open Source Review Board (OSRB) Process」。

問題

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