你好 DCO,再見 CLA:簡化 Spring 貢獻

工程 | Rob Winch | 2025年1月6日 | ...

Spring 團隊將推出一個簡化的貢獻流程,用開發者原創證書 (DCO) 取代簽署貢獻者許可協議 (CLA) 的要求。該流程將於本週從 Spring Framework、Spring Security 和 Spring Boot 開始,然後推廣到整個 Spring 產品組合。

歷史

Spring長期以來一直使用許可式的貢獻者許可協議(CLA),旨在為Spring專案、使用者和Spring團隊提供法律保護。資深貢獻者可能還記得,簽署CLA最初需要透過電子郵件傳送已簽名的CLA PDF檔案。Spring團隊隨後需要手動驗證CLA是否已簽署,然後才能接受貢獻。在沒有GitHub Apps等整合功能的情況下,這種手動流程在當時是有些必要的。

為了簡化該流程,我們建立了一個電子版CLA,它能自動驗證拉取請求的作者是否已簽署CLA。這相比手動流程是一個很大的改進,但它仍然有其缺點。

雖然電子CLA簡化了貢獻流程,但貢獻者在貢獻Spring時仍然面臨障礙。CLA是冗長的法律檔案,可能難以理解。更重要的是,CLA往往是定製的,因此理解它們的工作必須針對每個專案單獨進行。由於員工與其僱主之間的法律要求,開發者通常需要與僱主合作以獲得簽署CLA的批准。所有這些因素都給貢獻Spring增加了額外的複雜性。

簡化Spring貢獻流程

為了進一步簡化Spring的貢獻流程,我們決定轉向使用開發者原創證書(DCO)。這仍然為Spring專案、使用者和Spring團隊提供了相同的保護。

這樣做的好處是開發者原創證書(DCO)易於閱讀,並且是包括Linux核心在內的許多專案的標準。 整個DCO可以概括為:

  1. 我證明所提交的程式碼可以根據專案的開源許可證提交(對於Spring來說,這是Apache 2.0
  2. 我理解我所貢獻的內容是公開的,並將無限期地重新分發

如何使用開發者原創證書

為了貢獻專案,您必須同意開發者原創證書。要確認您同意,您的提交訊息底部必須包含一個Signed-off-by 附註。例如,它可能看起來像這樣:

A commit message

Closes gh-123

Signed-off-by: Rob Winch <[email protected]>

在指定您的提交訊息時,可以使用-s或–signoff命令列選項自動新增Signed-off-by附註。

git commit -s -m

如果您在GitHub中選擇了保持我的電子郵件地址私密選項,那麼Signed-off-by附註可能看起來像這樣:

A commit message

Closes gh-123

Signed-off-by: Rob Winch <[email protected]>

常見問題

現有拉取請求如何處理?

已透過CLA檢查的現有拉取請求無需簽署DCO。如果拉取請求尚未透過CLA檢查,則應使用DCO流程。

何時開始遷移到使用DCO?

Spring Framework、Spring Security和Spring Boot專案將於本週(2025年1月6日)開始過渡到此流程。在成功的試用期後,我們將所有Spring專案遷移到使用此流程。

執行哪些檢查以確保遵循該流程?

Spring使用DCO GitHub App新增一個檢查,強制要求拉取請求中的所有提交都包含一個Signed-off-by附註,其值與使用者GitHub個人資料中的電子郵件和姓名一致。

如果您想了解該流程的實際情況,DCO應用程式描述了該流程的工作原理,並附帶了預期的螢幕截圖。

如果DCO檢查失敗,我該怎麼辦?

如果DCO檢查失敗,您可以點選失敗檢查旁邊的“詳細資訊”連結,它會解釋檢查失敗的原因以及如何解決。如果您忘記為單個提交新增Signed-off-by附註,則可以使用以下命令新增:

git rebase HEAD~1 --signoff
git push —-force-with-lease origin

如果提交有多個作者怎麼辦?

開發者原創證書的條款c允許包含來自多個來原始碼的提交包含單個Signed-off-by附註。在這種情況下,包含Signed-off-by附註表示提交作者證明他們有權根據專案的許可證提交該提交。

我可以使用GitHub的“建議更改”功能嗎?

您可以應用拉取請求上的建議更改

  1. 建議更改的人應在其建議更改的評論中包含Signed-off-by
  2. 然後,應用更改的人(提交建議的人)將在點選“簽署並提交建議”按鈕時包含他們的Signed-off-by附註(強制提交簽名已啟用),這表示他們同意開發者原創證書。

我可以修改別人的提交嗎?

開發者原創證書條款b允許修改程式碼,但將您的更改(錯誤)歸因於他人可能被視為不禮貌。因此,被認為禮貌的做法是在提交訊息的末尾插入一個用方括號括起來的帶有您的電子郵件和姓名的描述,後跟一個Signed-off-by。例如:

Signed-off-by: PR Developer <[email protected]>
[[email protected]: apply code conventions]
Signed-off-by: Committer Developer <[email protected]>

所有提交都需要包含DCO嗎?

不需要。在下述某些情況下,我們可能會接受非常小的貢獻,而無需DCO。這旨在針對那些足夠小(例如拼寫錯誤、語法錯誤、印刷錯誤、格式錯誤等),以至於您不認為它們是獨立可保護的智慧財產權(“明顯修復”)的貢獻。此例外旨在降低新貢獻者的門檻,使其能夠做出有益且必要的貢獻,同時保持專案的完整性和我們社群的團結。

祝您貢獻愉快!

我們期待看到您更多且更簡化的貢獻!如果您有任何問題,請隨時在我們的問題跟蹤器中聯絡我們。

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有