越寫悅快樂之如何開始一個開源項目

今天的越寫越寫悅快樂系列文章爲大家帶來作爲開發者如何開始一個開源項目。經常瀏覽GitHub、Bitbucket的小夥伴肯定都知道世界上有成千上萬的項目被髮布在網絡上,我們經常使用開源軟件構建我們的產品或服務,同時也努力爲開源世界貢獻一些自己的力量,讓開源成就我們,讓我們在開源中綻放。

什麼是開源

當一個項目被開源,這意味着任何人都可以出於任何目的查看,使用,修改和分發你的項目。 開源軟件在開源許可的情況下發布並得以傳播。

流行的開源協議

爲什麼開源

個人或組織爲何想要開源一個項目,有各種各樣的的原因,例如:

  • 協作
  • 採用和重組
  • 透明度

開源並不僅僅限於軟件。您可以開源任何事物,從數據集到書本。查看 GitHub Explore 開找找有什麼是你可以開源的。

開源是指”免費”嗎?

開源最大的吸引之一是它不花錢。 但是,”免費”只是開源的總體價值的一個副產品。因爲開源許可證要求任何人可以幾乎出於任何目使用,修改和共享您的項目,項目本身往往是免費的。 如果該項目花錢使用,任何人也都可以合法地複製和使用免費版本。因此,大多數開源項目是免費的,但”免費”不是開源定義的一部分。 有些方法可以通過雙重許可或有限功能間接地爲開源項目收費,同時仍然遵守開源的官方定義。

啓動自己的開源項目

一般來說,如果你樂意於他人對你工作的查看和反饋,你就應該開源你的項目。無論您決定開展項目的哪個階段,每個項目都應包括以下文檔:

  • 開源協議 - Open Source License
  • 項目介紹 - README
  • 貢獻指南 - Contributing Guidelines
  • 行爲準則 - Code of Conduct

作爲項目的發起者或維護者,這些組件將幫助你交流你的期望,管理貢獻並保護每個人的合法權益(也包括您自己的)。他們能夠大大增加你積極體驗的機會。如果您的項目在 GitHub 上,則將這些文件放在您的根目錄中,並使用推薦的文件名將有助於 GitHub 識別並自動將其顯示給讀者。

選擇協議

開源許可證保證其他人可以使用,複製,修改和貢獻給您的項目,而不會產生不良後果。 它也可以保護您免受繁瑣的法律影響。啓動開源項目時,請務必包含許可證。法律工作是非常無趣的。但好消息是,您可以將現有許可證複製並粘貼到存儲庫中。只需要花這麼一點時間,就能保護你的辛苦工作。MIT, Apache 2.0, 和 GPLv3 都是非常流行的開源許可證, 但你可以選擇其他選項。當你在GitHub上創建新項目時,你可以選擇許可證。包括開源許可證將使你的GitHub項目成爲開源。

編寫項目介紹

自述文件不僅僅是用於說明如何使用你的項目。他們還可以解釋你的項目爲什麼重要,以及它可以爲你的用戶做什麼。

在您的自述文件中,嘗試回答以下問題:

  • 這個項目做什麼?
  • 爲什麼這個項目有用?
  • 如何開始?
  • 如果需要,我可以在哪裏獲得更多的幫助?

您可以使用自己的README回答其他問題,例如處理貢獻,項目的目標以及許可證和歸屬信息。 如果您不想接受他人的貢獻,或者您的項目尚未準備好作爲產品提供使用,請將這些信息寫下來。

當你在根目錄中包含一個 README 文件時,GitHub 會自動將其顯示在存儲庫的主頁上。

編寫貢獻指南

貢獻文件 (CONTRIBUTING File) 告訴你的受衆如何參與你的項目. 例如,你可以包括一下信息:

除了技術細節, 貢獻文件也是一個供你傳達對貢獻期待的機會, 例如:

  • 你在尋求的貢獻類型
  • 你項目的路線圖或者版本
  • 貢獻者應該(或者不應該)如何與你取得聯繫

使用熱情友好的語氣並提供具體的貢獻建議(例如編寫文檔或者搭建網站)可以大大提高新人的參與度。

建立行爲規範

最後,行爲準則有助於爲項目參與者的行爲設定基本規則。這在你爲社區或者項目推出一個開源項目的時候尤爲有價值。一份行爲幫助你促進健康,有建設性的社區行爲,這也會減輕你作爲維護者的壓力。

更多信息,請參見 行爲規範指導

除了傳達你期待參與者如何行動,行爲規範也傾向於描述這些期待針對誰,適用於何時,以及對於違規行爲的處理方法。

就像開源許可證一樣,有現成的行爲規範,所以你不必自己編寫。貢獻者公約是一個行之有效的行爲規範,已經被用在超過4000個開源項目,包括 Kubernetes,Rails,以及 Swift。無論你使用哪一種,你都應該準備好在必要時執行行爲規範。

將文本直接粘貼到項目存儲庫中的 CODE_OF_CONDUCT 文件中。將文件保存在項目的根目錄中,以便輕鬆找到,並從 README 中鏈接到它。

項目命名

選擇一個容易記住,有創意,能表達項目用意的名字。例如:

  • Sentry 監控應用程序的崩潰報告
  • Thin 是一個簡單快速的Ruby web服務器。

如果你的項目是基於一個已存在的項目創建,那麼使用他們的名字作爲你項目名的前綴會幫助你闡述你項目的用途。

在項目的整個生命週期中,你需要做很多文字工作:READMEs,教程,社區文檔,回覆issues,甚至肯能要處理很多來信和郵件。

是否是官方文檔或者一封普通的郵件,你的書寫風格都是你項目品牌的一部分。考慮你可能會擁有粉絲,以及這是你想傳達的聲音。使用熱情,通俗易懂的語言(如”他們”,即使是指一個人)能夠讓新來的貢獻者感覺項目非常歡迎他們。使用簡單的語言,因爲你的讀者可能英語不是很好。

開源項目清單

文檔

  • 需要爲項目指定一個開源協議
  • 項目要有基礎文檔 (README, CONTRIBUTING, CODE_OF_CONDUCT)
  • 易記的項目名,指出項目是做什麼的,不能和已存在的項目衝突或者商標侵權
  • 最新的issue隊列,組織和標記清除的issues

代碼

  • 項目使用一致的代碼風格和明確的功能/方法/可用的名字
  • 註釋清晰的代碼,記錄意圖和邊緣案例
  • 在修改歷史,issues或者 pull requests 中沒有敏感的信息 (例如 密碼或者其他不能公開的信息)

如果你是代表個人:

  • 你已經告訴了你的法律部門,以及/或者理解了你公司(如果你是某一家公司的員工)的開源政策和IP

如果你有一家公司或者組織:

  • 你已經告訴了你的法律部門
  • 你有一個宣佈和促進項目的營銷計劃
  • 一些人被允許管理社區互動(回覆issues,檢查和合並pull requests)
  • 至少有兩人管理訪問項目

參考

個人感想及收穫

“talk is cheap, show me the code.” 開源不僅僅說說而已,而是真真切切的邏輯表達,更是一行一行代碼形成的業務場景,讓我們提煉軟件生產過程中的工具、技巧、方法和框架,構建適合業務的工具棧和技術路徑圖,在適當的時候爲開源社會貢獻自己的一份力量,讓我們在開源的道路上一路同行,攜手構建更加美好的世界。希望大家繼續保持學習的熱情,持續構建更快更好的產品或服務。若是我的文章對你有所啓發,那將是我莫大的榮幸。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章