如何建立開放原始碼程式

已完成

在這裡,我們會討論建立開放原始碼程式的主要考量。

「開放原始碼」指什麼?

開放原始碼程式不僅是對程式碼基底的公用存取。 其是關於開放實際專案,讓任何想參與的人都能加入。 當適當專案已適當地執行時,開放原始碼程式有助於推動產品品質的大幅改善。

公司進行開放原始碼專案的其中一個主要原因是他們想要讓社群參與。 熱門專案會從「社群」接收大量的貢獻,而且他們可免費取得。

這不一定是出於無私奉獻。 人員與組織「取用」專案,因為他們看到個人或商業益處。 當專案不符合其需求或預期時,他們可能會利用此機會來解決錯誤 (Bug) 或新增功能。 他們覺得有必要將這些變更「貢獻」回來源存放庫,成為專案基準的一部分,而不是將其保留在私人分支。 這種良性改善週期,是許多企業使用開放原始碼模型「產生」軟體的原因。

開放原始碼目標

回顧一下,有三個維度可參與開放原始碼軟體:

  • 取用者,亦即研究或使用其他人存放庫的人。
  • 參與者,亦即主動地參與改善其他人存放庫的人。
  • 產生者,亦即建置並維護自有存放庫且開放給其他人的人。

當組織想要深入了解他們要從每個維度獲得的內容時,了解其現有狀況是不錯的做法。 每個維度內都有五個程序層級。

開放原始碼流程層級的圖表。

  • 臨機操作,沒有任何程序。 成功與否取決於個別投入量。
  • 受控,具有部分已記載程序。 成功與否取決於專業領域。
  • 已定義,具有已記載、已標準化且已整合的程序。 成功與否取決於自動化。
  • 已測量,有量化管理流程。 成功與否取決於根據業務目標來測量計量。
  • 已最佳化,具有可透過增量和創新變更來持續且可靠地進行的流程。 成功與否取決於降低變更的風險。

若要進一步了解組織的所在位置,請參閱開放原始碼的自我評估 \(英文\)。

您應該將什麼項目作為開放原始碼專案?

許多專案都不適用於開發原始碼優點。 雖然您的準則可能會根據貴公司的目標與流程層級而有所不同,但以下是一些在將專案作為開放原始碼專案之前建議考慮的準則:

  • 您的專案是否包含您想要保護的智慧財產? 若是如此,則開放其原始檔會將其價值提供給他人。 請不要將那些類型的專案作為開放原始碼專案,除非您覺得益處會多於風險。

  • 專案是否處於穩定狀態,且有良好的程式碼品質? 專案不需要是完美的,但如果專案一開始就狀況不佳,潛在的參與者可能會離開。

  • 您的專案對您公司以外的人員有用嗎? 如果沒有,您可能不會得到任何參與。

  • 您公司外部的人員是否能夠參與? 他們會需要所有專案相依性、建置程序和執行專案所需任何項目的存取權。 如果他們無法執行專案,即無法參與。

  • 您的小組是否足以支援開放原始碼程式? 如果沒有,請等到您有為止。 如果您將專案作為開放原始碼專案,而且不加以支援,您可能會失去建立可信社群的機會。

這些問題只是幾個最常見的考量。 貴組織可能會有其他商務或合規性問題要牢記。

設計開放原始碼程式

執行開放原始碼程式類似於執行 InnerSource 程式,但前者是針對公開受眾。 因此,還有一些其他考量。

設定社群期望

README.mdCONTRIBUTING.md 等檔案更重要,因為其會公開給沒有您組織內容的人員。 必須從公司外部人員的觀點加以評估,以確保清楚明瞭。

此外,您的管理辦法是要表達的重要原則。 該標準是將 CODE_OF_CONDUCT.md 檔案新增至存放庫的根目錄,並將其用於說明對您社群中參與者所期望的行為。 您組織中的多個群組應該檢閱此文件,包括您的法務小組。 幸運的是,可以從許多標準管理辦法開始。 許多專案都依原樣使用這些辦法,而不加以修改。 在開放原始碼管理辦法指南 \(英文\) 中深入了解。

讓員工做好準備以維護存放庫

員工可能不具有與開放原始碼社群合作的經驗。 若要協助員工做好準備,我們建議公司提供一份指南,涵蓋所有人員在開始之前應該知道的重要事項。 這些指南應該張貼到僅供公司員工存取的內部存放庫或入口網站,並定期進行維護。 下列為幾個最重要的指南:

  • "Should we open-source this project?" 指南,其中提供決定是否將候選專案作為開放原始碼專案的架構。 此指南可結構化為流程圖、問題集或考量清單。

  • 設定檢查清單,其中包含小組在開放原始碼專案啟動之前與之後需要完成的所有工作項目。 此清單應包括取得將專案作為開放原始碼專案的核准、程式碼檢閱以確保敏感性資料會在專案上線之前移除、商標或開放原始碼專案搜尋,以確保不會發生命名衝突等等。

  • 貴組織中重要人員的連絡人清單,在需要維護人員的直接支援時可能需要連絡這些人員。 此清單應包括來自軟體安全性、網站安全性、法務、公關等領域的人員。

  • 可複製作為起點的入門存放庫連結。 其中應包含範例讀我檔案、授權、管理辦法、參與指南,以及您公司中每個開放原始碼專案所需的每個其他支援檔案。 其中不應該包含您不想要意外推送給公開受眾的任何項目。

  • 維護者指南,其中說明維護者保持存放庫健康情況良好的責任。 這些責任包括將存放庫文件保持在最新狀態,以確保問題與提取要求及時受到適當人員注意等等。

  • 通訊指南,其中會提供存放庫維護者指導方針,適用於您不想要在公用檔案 (例如 README.mdCONTRIBUTING.mdCODE_OF_CONDUCT.md) 中包含的某些主題。 這些主旨可能是敏感性商務主題,例如不討論競爭對手,或更一般性作法主題,像是如何適當地辨識前幾名參與者。

  • 內部常見問題集,其中提供常見問題的已核准解答。 如果貴公司在維護開放原始碼程式的過程中可能會討論到的主題存在法律上的微妙之處,此清單就特別有用。

  • 授權原則,其中會列出哪些授權已由法務部門核准或拒絕,以用於開放原始碼方式取用或參與。