作社區主導項目的基本工具

jopen 9年前發布 | 9K 次閱讀 工具

 作社區主導項目的基本工具 
對于建設和管理由開源社區主導的項目,我們并沒有一種唯一正確的方法,但一些常用工具和實踐可以幫助我們完成這項工作。關鍵問題是使用適合您社區的工具,并保持工具數量最小。本文檔總結了大多數開源項目常用的工具,并推薦了使用這些工具建設社區的幾種方法。

工具應該作為輔助,而非主導

很多人認為,將項目開源就是要花大量時間告訴別人自己在做什么。但事實未必如此。如果您認真選擇了工具以及要使用這些工具的開發流程,那么您需要做的對外交流工作將只是伴隨開發過程的小插曲而已。

要理解這一事實,我們首先應該理解,開源的目標不是確保所有人都明白開發過程的每個特定時間點都發生了什么。開源的目標應該是,確保有足夠興趣的人 能找到他們需要的信息。我們只需關注那些有足夠興趣并能完成自己那部分工作的人,我們可以節省社區現有成員輔導新成員所需的時間。這樣,現有成員就能更專 注于尋找自己想要的結果。這似乎有悖于創建社區的初衷,因此讓我們先把這問題放一放。

人們參與社區主導的項目是為了滿足自己的需要——可稱為“搔癢”。個人成員的初衷可能不是創建社區,而是解決工作、研究或業余消遣中的某個實際問題。因此,運作此類項目時,流程和社區方面的工作不應影響參與者的興趣。

盡管如此,一個運作良好的開源項目還是會使用一套簡單的流程和工具,以便在向參與者知會項目進展和幫助他們“搔自己的癢”之間巧妙平衡。下一節將介紹這些流程和工具。

基礎知識

很多不熟悉開源的人錯誤地認為,自己應該提供盡可能多的工具,以便感興趣的人以適合自己的方式參與。但這種想法通常是錯的。工具應該在有明確需求時才引入。過早引入工具會讓用戶感到困惑(‘做 X 時應該用哪個工具呢?’),而使用多種工具可能引起混亂,造成事倍功半。

每個開源項目需要四種基本工具和多種非基本工具。所有項目都需要的核心工具包括(且僅限于):

  • 網站:用于在任何特定時間點交流項目的目的和狀態。
  • 開發者郵件列表:用于隨時交流想法、設計和信息。
  • 版本控制:用于代碼管理和在評審前交流代碼更改。
  • 問題跟蹤器:用于規劃、交流工作計劃和當前活動。

使用這些工具時,典型的核心開發流程如下:

  • 在問題跟蹤器中記錄要處理的問題(bug、新功能、增強功能等)。
  • 將問題分配給開發者。
  • [可選]對于復雜的或會引起重大更改的工作,將工作的目的發布至開發者郵件列表(通常在問題跟蹤器更新時自動生成郵件)
  • 著手開發工作(如有必要,通過郵件列表參與到更廣泛的開發社區中)
  • [如果是提交者]早期提交,通常提交至版本控制系統;系統自動向開發者郵件列表發送消息,允許評審代碼,必要時允許請求更改代碼。
  • [如果不是提交者]頻繁向問題跟蹤器提交補丁或拉取請求;系統自動向開發者郵件列表發送消息,允許評審補丁,必要時允許請求更改補丁。
  • 重復以上步驟,直至工作完成且達到所有評審要求。
  • 將問題標記為完成(系統向開發者郵件列表發送消息)。
  • 適時更新網站。

關于此流程,重要的一點是,開發者無需大量投入即可向社區知會開發工作進展。他們要做的工作與在運作良好的軟件項目中的工作是一樣的,沒有任何額外工作。大部分社區更新是由工具自動創建的,無需人為干預。因此,實現開放溝通只需在一開始正確安裝工具,僅此而已。

現在,我們了解了基本工具以及它們在開發流程中的作用,下面將詳細介紹每一種工具。我們還會介紹您的項目在進展到一定階段后可能采用的其它工具的優缺點。

溝通工具

溝通是開源項目成功的關鍵。溝通有兩種形式:發布和討論。前者的目的是向別人傳達信息;后者的目的是讓別人分享想法和經驗。本節將討論這兩種方式。

制訂溝通策略時,我們應該記住,用戶和貢獻者在同一時間出現在同一場合的幾率很小,甚至為零。所以,我們有必要建立溝通的基礎架構,允許人們在他們喜歡的時間、以他們喜歡的方式參與到項目中。這一基礎架構是整個項目的基石。如果架構沒有搭好,項目參與者將無法協作。

在開源項目中,郵件列表是雙向溝通的唯一必要機制,但不同的項目會使用很多其它機制。本節討論為什么郵件列表是基本機制,以及為什么其它機制可能與項目核心活動略有偏差。

郵件列表

郵件列表用于討論、取得共識、分享信息以及公共認可。郵件列表記錄項目開發路徑,提供針對不熟悉項目的人的說明與支持的書面記錄。郵件列表可能是最重要的社區開發工具。

郵件列表已成為大多數開源軟件開發者慣用的工具。郵件客戶端是他們在一天中最先打開并反復使用的應用。郵件列表提供強大的功能,可高效過濾和管理郵件,并允許任何設備在線或離線訪問郵件。簡單地說,電子郵件是開源開發者工作的中心。

有些人認為,基于 Web 的論壇因其“拉取”機制(即要求用戶訪問在線論壇以獲取最新帖子)而優于電子郵件。他們稱,不是所有人都能處理大量電子郵件,大多數人不希望無孔不入的電 子郵件發送到他們的收件箱。當然,這種觀點很有道理。但關鍵是“大多數”這個詞。創建新項目時,我們應該考慮我們想吸引什么樣的人。新項目需要新的貢獻 者,而不需要、而且很可能無法服務新用戶。我們需要開發者,所以我們可能去關注技術人員,而他們的日常工作可能已經在圍繞電子郵件客戶端進行了。對于這些 人來說,電子郵件是更有效、更高效的工具。

這并不是說,開源項目完全不會使用在線論壇。在下一節中,我們會討論在線論壇適用的場景。但關鍵問題仍然是,在大多數情況下,郵件列表更適用于開發者社區。此外,后續章節會談到,郵件列表更易與項目所需的其它基本工具集成。

我們已經討論了為什么郵件列表比論壇更適用于開發者社區;但很多新的郵件列表工具同時提供基于 Web 的接口和電子郵件客戶端接口,以便用戶選擇最符合自己需要的機制。如果您還在為社區選擇郵件列表而非論壇猶豫不決,我們強烈建議您選擇以下一種混合工具。

存檔郵件

如果能夠正確使用郵件列表,那么開源開發項目的存檔郵件將成為該項目最有價值的資源之一。存檔郵件記錄了設計討論和決定、操作說明信息、使用案例以及需求分析等大量有價值的信息。

所有項目都應提供郵件列表的可搜索存檔,如有可能,還應盡量引用這些備份,而非重復回答某個問題或重新作出某個決定,以避免不必要的重復勞動。與聯 合源類似,存檔設置不應增加項目組的工作量。大多數郵件列表提供商同時提供存檔解決方案。如果您的郵件列表提供商未提供存檔解決方案,您還可以在大量免費 的在線公共郵件列表存檔工具中進行選擇。

論壇

論壇的優點在于易于使用。并非只有電子郵件高級用戶才能最大限度地利用論壇。與郵件列表相比,論壇的一大優勢在于,可以在討論界面中提供可搜索存檔。論壇與郵件列表相比的弱點在于,不支持離線訪問、過濾、互操作性等高級功能。

雖然,對于技術人員來說,郵件列表是最佳溝通工具,但人們常常認為,不熟悉技術的用戶需要其它溝通機制。事實并不總是這樣;工具的選擇取決于項目的性質。但如果您的用戶不懂技術,能夠提供用戶支持的論壇可能是更好的選擇。

雖然論壇可能適合于用戶,但在創建論壇(或針對用戶的獨立郵件列表)前,您仍需認真考慮。您的項目已經發展到能夠吸引大量用戶的程度了嗎?您有足夠的開發者來監控和響應論壇中的用戶問詢嗎?

過早創建論壇或針對用戶的郵件列表,可能迫使用戶進入封閉的‘黑暗房間’,讓他們不知道是否有人在‘聽’他們講話。只有當第一溝通渠道的負荷大到有必要分流時,我們才應該創建第二溝通渠道。

問答

近年來,由 Stack Overflow 倡導的用戶管理的問答站點發展迅速。此類站點(通常稱為 Stack Exchange,以為其提供托管的最流行的托管軟件 Stack Exchange 而得名)非常適合各種水平的用戶提出和回答問題。社區會投票支持或否決答案,也就是說,被評為“已接受”的答案會直接顯示在問題下面,而不實用的答案將被 隱藏。站點可作為有用的輔助渠道,避免技術討論渠道充斥大量的重復問題。提出問題意味著,尋求支持的用戶可以直接找到答案,而不必查閱大量論壇帖子。

博客

博客非常適合傳播想法或新聞,但不適于活躍的討論。博客通常提供評論功能,但一般不提供完整的對話支持功能。與論壇類似,博客要求用戶必須訪問站 點,才能參與互動。因此,并非所有人都能看到后續評論。也因此,博客不應被視為輔助討論工具。相反,博客可作為對項目相關問題進行發布和詳細說明的工具。 博客或播客還允許參與者展示其在開發和支持“工作”環境以外的個性化信息,藉此來構建社區關系。

聯合

聯合指以機器可讀形式分享信息,以便于第三方方便地引用您項目中的相關內容。廣泛使用的聯合格式(如 RSS、ATOM 饋送)允許他人輕松地從您的項目中抽取內容并進行整合,以用于他們的工作或社區。就是說,聯合源可以有多種形式,如用戶的郵件客戶端、源閱讀程序、基于 Web 的聚合器或網站。向盡可能多的溝通渠道提供聯合訪問權限可以增加吸引新用戶的機會。

聯合內容本身并非溝通工具,它僅提供對預先存在內容的訪問權限。通過慎重選擇適當的核心工具,您可確保自動提供聯合源。就是說,您應設法選擇能夠自動提供適當數據聯合源的網站工具以及溝通、問題跟蹤和版本控制工具。

社交網絡和微博

社交網絡常常被視為社區建設的主要部分。然而,社交網絡對開源項目的價值并不明確。主要問題是,大多數社交網絡就象帶有圍墻的花園,一旦選擇了某個社交網絡,潛在的貢獻者就只能使用這個站點,即使這不是他們的首選站點。

這可能便于將您的內容聯合到社交網站中。這種做法適用于部分項目,但將社區劃分為官方渠道和社交網絡渠道時一定要慎重。

網站

網站是發布各種形式信息的機制。網站用于提供項目基本信息以及連接項目其它部分的門戶。開源項目的網站與其它網站并無不同。SourceForge 或 GitHub 等很多代碼托管平臺提供簡單網站托管服務,但您可能希望托管自己的網站。使用內容管理系統可輕松確保您的網站得到持續更新,并允許項目其他成員管理站點。

截屏視頻

截屏視頻是展示軟件使用情況的視頻。用戶無需安裝軟件即可查看該軟件的截屏視頻。截屏視頻有助于吸引新用戶及提供部分系統文檔。但隨著產品界面的成熟及新功能的推出,截屏視頻會很快過時。維護截屏視頻的成本較高,這可能也會限制截屏視頻的廣泛應用。

對于通過 Web 瀏覽器訪問的應用程序,可使用自動瀏覽器測試技術來確保無 bug 的用戶體驗。在每次版本發布前的準備過程中,可低速運行這些自動測試功能,并以截屏視頻形式進行記錄。 每個版本都需要充分測試,而且測試必須與接口和功能更新同步進行,這就提供了一種半自動的截屏視頻記錄方式。

版本控制系統

版本控制系統(VCS,也稱為修訂版本控制系統,即 RCS)對管理項目資源非常重要。通過版本控制系統,您可以跟蹤版本更改人、更改內容、更改時間和更改原因,必要時還可以回滾引發問題的更改。使用版本控 制系統很簡單,而正確使用卻不那么簡單。如果您從未使用過版本控制系統,建議您閱讀我們的版本控制文檔。

版本控制系統有兩種模式 – 集中式和分布式。想一想哪種模式更適合您的項目管理和工作流程需求。您選擇不同的版本控制系統模式,可用的代碼托管站點可能也不同,因為每個站點僅支持幾種特定的版本控制系統。

如果您正確使用了版本控制系統,那么該系統可及時向開發者發送通知,簡化版本管理,記錄 bug 工作項,簡化實驗過程,管理對版本的貢獻,并控制對資源的寫權限。版本控制系統是一種協調和管理工具,也是您項目的時間機器。版本控制系統可確保將所有資 源更新通知所有成員,并允許任何人檢索項目周期中任一指定時間點的全部資源。

為有效使用版本控制系統,所有貢獻者必須遵循‘早提交,多提交’準則。對于測試運行后的開發者而言,做到這一點很容易:只需在通過每項新測試后提 交。提交后,系統將發送實現步驟完成通知,問題跟蹤器自動記錄針對問題的提交。這樣,其他開發者就可以查看所做的更改,避免重復勞動。

問題跟蹤/項目管理

通過問題跟蹤器,您的用戶可以報告 bug 并請求提供新功能。您的項目管理團隊也可以使用問題跟蹤器來制訂工作計劃,并優先處理社區推動的請求。

使用問題跟蹤器,您可以清楚地向用戶說明,您未來的代碼版本提供哪些值得期待的新功能。這意味著,如果用戶需要某項功能,或要求修復某個 bug,而您在近期內不打算實現此功能或修復,那么用戶可以選擇自行投入資源來開發此功能或修復此 bug。清楚、高效地將您的計劃傳達給用戶,這是吸引用戶參與您的開發項目的第一步。

問題跟蹤器最大的用途可能就是,記錄項目新成員為熟悉項目而需要解決的問題。簡單的問題或有導師提供指導的問題都屬于此類問題。當有新成員加入時,現有社區成員應關注此類問題。

知識產權 (IPR) 管理

您應該知道您的項目的版權歸屬,這一點很重要。為做到這一點,您必須能夠追溯所有貢獻的原作者。對于直接影響您的項目輸出的貢獻(如程序代碼或文檔),其版權可通過版本控制系統(如上所述)以及明確定義的貢獻者許可協議和問題跟蹤器記錄的提交過程實現高效管理。

對于源代碼或文檔以外的非直接貢獻(如設計思路),應以公開、可追溯的方式獲得,這一點很重要。如果您通過郵件列表進行設計討論,那么此郵件列表的存檔則是追溯貢獻的最佳方式。

對于軟件代碼形式的貢獻,版本控制系統和問題跟蹤器可記錄貢獻過程。補丁提交至問題跟蹤器后,開發者會選取并審閱。當補丁可應用于基本代碼中時,版本控制系統將自動記錄向問題跟蹤器‘提交’的補丁。

從許多方面來說,開源項目的知識產權管理是最重要也是最繁瑣的工作。知識產權管理并不會直接增強 軟件功能,而且初看起來是一項費時、又需要流程驅動的工作。但如果您仔細設置了項目資源,大部分流程將自動完成,并對大多數開發者透明。這樣的流程會幫助 您軟件的潛在用戶建立信心,而更多用戶就意味著更多貢獻者。

綜述

為您的項目選擇正確的工具可以簡化項目本身的管理,無論您是否吸引了社區的參與。而擁有工具只是一個開始,您還必須以一致的、設想的方式使用工具。如果您一開始就使用了正確的工具,那么您將避免很多麻煩,并能為在適當的時間圍繞您的項目創建社區創造最佳條件。

來源:Ross Gardler作者:開源社編譯

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!