構建成功的開源項目的重要建議
使用這些步驟來為你的第一個或接下來的項目打下堅實的基礎。
開源 是一個蓬勃發展且有益的生態系統,它通過分散模式和社區貢獻開發的軟體,公開解決社區和行業問題。
隨著這個生態系統的爆炸式發展,許多開發者想要參與並且構建新的開源項目。問題是:如何成功實現這一目標呢?
這篇文章將會揭秘開源項目的生命周期與結構。給你一個對開源項目內部運作的概述,並根據我個人的經驗,向你展示如何構建一個成功和可持續發展的項目。
對開源的簡單概述
開源促進會 (OSI)提供了對「 開源 」的正式、詳細的定義,但是維基百科提供了一個很好的總結:
開源軟體是指根據許可證發布的計算機軟體,版權持有人授予用戶使用、研究、更改和向任何人、為了任何目的分發軟體和它的源代碼的權利。
開源軟體通常在網路上有公開的代碼,它由多人合作或一人開發。這就需要與來自不同地區、不同文化和不同技術背景的人合作,而且往往是遠程合作。
開源項目的構成
就像人類的身體,一個開源項目由多個結構組成,這些結構構成了整個系統。我認為它們是兩個分支:人員(微觀)和文檔(宏觀)。
分支一:人員
通常,一個開源項目包括以下人群:
- 創建者:創建項目的人
- 維護者:積極管理整個項目的人
- 貢獻者:為項目做貢獻的人(像你一樣的人!)
- 用戶:使用這個項目的人,包括開發者和非技術客戶
- 工作組:將貢獻者分成特定領域的小組,專註於圍繞特定主題領域(如文檔、指引、測試、DevOps、代碼審查、性能、研究等)的集合。
- 贊助人:為項目提供資金支持的人
當你準備構建一個新項目時,你需要考慮以上列表中的每一個群組。你對他們每個人有什麼計劃?
- 對於維護者,請確定任用維護者的標準。通常,積極的貢獻者就是最適合的維護者。
- 對於用戶和貢獻者,你需要準備可靠的文檔、引導流程和他們使用你的項目取得成功所需的一切。
- 對於工作組,請確定你是否需要它們,以及你的項目將來如何有邏輯地拆分。
- 最後,對於贊助人,你必須提供足夠的數據和有關你項目的信息,以便他們選擇贊助你。
你不必在你項目的起始階段解決上面所有問題。然而,在早期階段思考它們是很明智的,這樣你就能打下正確的基礎,確保未來的擴建項目能夠站穩腳跟並取得成功。
分支二:文檔
開源項目通常包括下列文檔,通常為純文本或 markdown 格式:
- 許可證(
License
): 這份法律文件解釋了如何以及在何種程度上可以自由使用、修改和共享本項目。OSI 網站上有 OSI 認可的許可證列表。如果沒有明確的許可證,你的項目在法律上就不是開源的! - 行為準則:該文件概述了任何決定以任何方式參與項目的人的規則、規範、可接受做法和責任(包括當有人違反任何規則時會發生什麼)。貢獻者公約 是一個很好的示例,它是開源的(採用知識共享許可協議)。
- 自述文件(
README
):這個文件向新用戶介紹你的項目。在很多 Git 託管網站上,比如 GitLab、GitHub 和 Codeberg,自述文件會顯示在倉庫的初始文件列表下。這裡通常會提供文檔,以及其他必要文檔的鏈接。 - 文檔(
Documentation
):這是一個包含所有本項目文件資源的文件或目錄,包括指南、API 參考、教程等。 - 貢獻指南(
Contributing
):包含一份說明如何為項目做出貢獻的文件,包括安裝指南、配置等。 - 安全(
Security
):包括一個解釋如何提交漏洞報告或安全問題的文件。
此外,一個項目通常有用於議題、支持和協作的網頁。
大致包括:
- 議題或錯誤報告:用戶可以報告錯誤的地方。該頁面還為開發人員提供了一個地方,讓他們可以分配自己的任務來修復一個或多個錯誤。
- 拉取或合併請求:提供功能增強建議和錯誤解決方案的地方。這些補丁可以由任何人創建,由維護者審核,然後合併到項目代碼中。
- 討論:維護者、貢獻者和用戶討論開源項目的地方。它可以是一個專門的網站,也可以是協作編碼網站中的一個論壇。
大多數項目還通過在線聊天的形式為社區成員之間的對話和互動提供交流渠道。
許可證
許可證 也許是創建開源項前需要考慮的最簡單但也是最重要的標準。許可證定義了允許使用、修改和共享項目源代碼和其他組件的條款和條件。
許可證包含大量的法律術語,很多人並不完全理解。我使用 choosealicense.com,它可以幫助你根據你的目標社區、你從使用你的代碼的人那裡獲得補丁的願望,或者你允許別人使用你的代碼而不分享他們對你的代碼所做的改進來選擇許可證。
這為何時使用 MIT 許可或 GNU GPLv3 許可提供了指導。它還建議為社區做出貢獻的人們使用該社區所偏好的許可證。該圖表還指出,還有更多許可證可供選擇。網站 choosealicense.com 有一個基於文本的版本,可以鏈接到更詳細的信息。
創建一個開源項目的 13 個階段
現在是關鍵問題:如何開始開源軟體項目?
以下是我所認為的開源項目的各個階段。
- 集思廣益,撰寫提綱,妥善記錄。
- 開始根據你的想法進行開發。這通常包括確定要使用的正確工具和技術棧、編寫一些代碼、對代碼進行版本控制、調試、喝點咖啡、在 StackOverflow 上閑逛、使用其他開源項目、睡覺、構建一些東西來解決確定的問題 —— 或者只是為了好玩!
- 在本地測試項目,根據需要編寫一些單元測試和集成測試,根據需要設置 CI/CD 管道,創建一個暫存分支(在合併到主分支之前測試代碼的測試分支),並完成部署項目所需的其他工作。
- 編寫 良好有效的文檔。這應該包括你的項目是做什麼的,為什麼它是有用的,如何開始使用它(使用、安裝、配置、貢獻),以及人們在哪裡可以得到支持。
- 確保記錄所有你希望使用的代碼約定。使用諸如 代碼檢查工具 、代碼格式化工具、Git 鉤子和 注釋規範化工具 命令行工具等工具來執行這些約定。
- 選擇合適的許可證並創建自述文件。
- 在互聯網上發布項目(可能最初是一個私有的資源庫,在這一步將其公開)。
- 建立發布和記錄更新日誌的流程(你可以使用 Changesets 等工具)。
- 向全世界推廣項目!你可以在社交媒體上發帖、創辦新聞簡訊、私下與朋友分享、進行產品發布、現場直播或其他任何你知道的傳統營銷策略。
- 使用任何可用的融資平台尋求資金支持,如 Open Collective、GitHub Sponsors、Patreon、Buy me a Coffee、LiberaPay 等。當你在這些平台上創建賬戶時,請在項目文檔和網站中添加相關鏈接。
- 圍繞你的項目建立一個社區。
- 在必要時,考慮引入工作組,將項目管理分成合理的部分。
- 不斷實施新理念,維持項目背後的資源和人員。
隨著項目的進展,對項目的不同部分進行評估非常重要。這將為你提供可用於評估和未來發展戰略的數據。
現在開始一個項目吧!
我希望這篇文章能幫助你推進你一直在考慮的項目。
你可以將其用作指南,並在構建你的一流開源軟體項目時填補我遺漏的任何空白。
(題圖:MJ/a22b4011-9b1e-41e6-a73f-bdeac4858007)
via: https://opensource.com/article/22/9/build-open-source-project
作者:Bolaji Ayodeji 選題:lkxed 譯者:wcjjdlhws 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive