最大限度最佳化組織中執行開源計劃或啟動開源專案的實踐。這些資源由 Linux 基金會與 TODO Group 合作開發,代表了我們的員工、專案和成員的經驗。
◈ 英文: https://todogroup.org/guides/measuring/ ◈ 中文: https://linuxfoundation.cn/measuring-your-open-source-program-success/ ◈ GitHub:https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/measuring.md
開源專案的負責人必須展示專案付出的投資回報率。本指南提供了組織評估開源專案、開源計劃和開源貢獻的一些方法標準。
瞭解評估物件、界定成功以及如何充分利用這些資訊, 以開啟您的開源專案標的,展示開源專案的有效性,並獲得支援。
本指南的撰稿人
如何定義成功
聰明的機構會明確開源資源開發的投資價值,並設定關於應用和參與的標的。但是每個開源專案對於成功的定義都有些不同。您設定的標的與追蹤的指標會因您投資開源的理由而有所不同——無論是為了招募開發人員,還是打算透過開放創新帶來新想法和新技術,或是更快地實現上市,亦或是降低開發成本,還是更多其他原因。
根據您獨一無二的戰略來制定標的十分重要——同時還要尋求高管團隊的認同,以確保開源戰略與整體業務戰略保持一致。也就是說,無論其行業、產品或業務戰略有何不同,開源專案負責人都有一些標準化的方法來評估專案的成功。這些方法包括:
為何設定標的
在我們深入瞭解開源專案追蹤的內容以及如何實施追蹤之前,讓我們先談一談您可以透過設定標的與衡量標的收穫什麼。
首要的是,追蹤標的進展有助於確保您投資的開源專案(無論是外部專案還是內部專案)順利發展——他們正在回應社群,充分地代表了公司,並有助於滿足更廣泛的專案標的。定期追蹤有助於為開源專案設定基準,作為早期預警系統,以便在專案偏離既定方向、違反法律合規要求的時候,或在僅需撤回專案時進行更正。
仔細的(和戰略的)衡量還為面向上層管理者的報告提供了極好的素材。定期報告有助於確保專案與自身標的和整體業務戰略保持一致,並能夠幫助專案經理獲得行政領導對專案的內部支援(特別是在您達到甚至超過標的的時候!)
例如,Facebook 的開源專案辦公室會定期在內部公佈其開源專案的月環比結果,並向管理層傳送執行報告。
“報告只是一個提高認知的好方法。儘管 Facebook 對開源(作為一個組織)高度重視,但總是在內部推銷自己並展現自己的價值始終是件好事。”
Christine Abernathy[4] – Facebook開源開發者&倡導者
定期公開專案結果還有助於提高潛在的合作伙伴、使用者和開發人員對於您組織開源活動的認識。
在開源社群中獲取關於專案結果的評價——好的、壞的和難聽的——可增強專案的透明度、問責制和可信性。
檢視來自 Facebook[5] 和 Google[6] 的示例開源報告卡。
如何設定標的
您可以為您的開源專案設定遠大的標的,但如何達成標的以及按照何種時間線來完成標的,要設定合理的期望。首先,在衡量初期建立績效基準是有益的。建立收集資料的正確工具,並確保資料源真實,格式(和您的經理)易懂。許多組織為他們的開源專案建立了指標儀錶板,以便在同一處追蹤所有資料並提供專案快照,從而幫助快速評估行程。(具體參閱關於開源專案管理工具指南[7]。)
緊接著,讓所有的開源專案負責人和利益相關者一起——在 Facebook上,包括專案負責人和維護人員——作為一個整體決定您想在接下來的 3-6 個月內完成的任務(輕鬆、可實現的增量)。在這一時期末,回顧您如何完成任務,並根據前階段的完成情況來調整下一階段的標的和策略。
“我傾向於根據社群的痛點來尋找衡量指標,並嘗試改良這些指標以提升社群的質量。”
Sarah Novotny[8] – 谷歌 Kubernetes 社群經理
除了績效基準指標之外,您在為專案設定標的時,還需要考慮以下幾點:
您的標的是否與核心業務戰略、產品標的以及其他內部業務標的保持一致?
您的專案經理是否可以直接控制結果?或是專案經理、工程人員、法律人員或其他職能人員共同控制?設定在您的控制範圍內可實現的標的。
不同專案標的應根據它的目的、社群組成、技術堆疊和其他變數而有所差異。例如,Facebook 已經註意到 Javascript 專案趨向更加頻繁地建立分支。他們已經認識到(在經過多次迴圈追蹤之後!)這些並非專案質量的最佳衡量指標。
並非所有標的都應與數字相關聯。提高專案質量的過程改進同樣重要,甚至更為重要。僅因為您達到了所有的標的數字,並不意味著您的專案質量沒有問題。相反,一個沒有增長的、不大的專案質量也可能有發展前景。“您可能只擁有六位核心貢獻者和十幾個活躍的非維護人員,但是討論全面,而且合併請求會在短時間內被處理,以及在重要功能方面的討論有清晰明確的始終。這也許是個令人難以置信的健康社群,但它可能不會在 GitHub 上擁有極多的關註數與分支數,因為它可能是一個有商機的專案。”Novotny 表示,“所以我傾向於考慮社群如何與其自身互動,如何發展和指導新的領導者,以及所有的痛點的發展狀態。”
共同的標的
當涉及評估開源專案的成功時,將註意力集中在您專案的這些量化指標上是趨勢,即貢獻者總數、程式碼行數、專案數量等。我們將在下一部分討論評估您專案的質量所需要的內容。但還有很多其他的重要方法可以用來評估您專案的是否成功,並非嚴格地依靠這些數字。
“我認為使用指標作為一種報告趨勢的方法是好的。但把指標作為衡量成功的唯一方式將會給您帶來麻煩。”
Joe Beda[9] – 谷歌 Kubernetes 社群創始工程師 & Heptio 聯合創始人兼技術長
Kubernetes 是 GitHub 上發展速度最快的開源專案之一,在過去三年裡吸引了來自 1,181 家公司的 2,760 位開發人員的超過 80,000 次提交。但專案伊始就以技術和技術的使用作為衡量成功的標準,並非依靠“一些開源指標”,Beda 表示。
以下是開源專案辦公室身後的一些共同標的,以及專案經理為了追蹤專案的整體行程所採取的最佳辦法。其中有一些標的本身無法評估,但這些標的與流程改進、效率提升以及質量改善息息相關。其他標的可以透過調查或其他評估方法來衡量,如定期、積極地徵求口頭或書面的反饋意見。(與您的團隊交流!)
標的 1 確保高效且合法合規的開原始碼應用
組織參與開源時通常會從這一步開始。他們意識到工程在其基礎架構或在其產品和服務中消耗了大量的開源軟
件,亦或是在其基礎架構與產品服務中消耗了大量的開源軟體。專案辦公室有助於集中化處理關於開源消費的政策和決策的制定,追蹤開源的應用,並確保組織不會違反各項開源許可證中規定應履行的法律義務。專案還可以持續監測他們幫助開發人員解決可能遇到的各種法律問題效果如何。
衡量這個首要標的的一些最常見方法是致力於確保政策和行程按計劃的方式執行,同時確保組織活動保持合法合規:
(您是否有合規專案?請參閱我們來自《開源合規專案》[10]的法律資源以獲取有關此主題的更多資訊。)
標的 2 提高開發人員生產力
只要您正在追蹤和管理您的開源應用,就會希望開發人員更加便捷地為開源專案做貢獻。如果您的工程師需要透過繁瑣的程式來提交錯誤修複或新增新功能至您的業務所依賴的專案,您將浪費寶貴的時間和資源。開發人員將逆流而上節省大量的時間,而非維護一個獨立的專案分支。因為這樣做的話,隨著時間的推移將會累積技術債務。
“我們試圖讓自己像那些在馬拉松賽道上給參賽者遞水的人。我們鼓勵開發人員在我們的方向上採取一些額外措施,因為我們知道這樣做,從長遠意義上看,他們將會真正地實現標的。我們確實在試圖建立一個專案作為支援服務,而非減速帶。“
Gil Yehuda[11] – Oath 開源高階經理(雅虎+美國線上)
與此標的相關的指標,致力於使開發人員對開源專案的貢獻回饋得以順利進行,同時增加您組織向上遊作用監測的程式碼總量。一旦您消除了作用的障礙,使審批流程清晰快捷,您可以期待更多的貢獻和效率。
需要追蹤的事情包括:
標的 3 建立與發展開源專案
這是大型並以工程為重點的組織,如 Facebook、谷歌、微軟、Twitter 和其他許多組織中的許多開源專案的主要標的。他們正在建立數百個(甚至數千個)開源專案,旨在解決工程技術問題。標的是吸引外部使用者和貢獻者們帶來新的想法,並幫助推動技術更快發展——這是一個來自加利福尼亞大學伯克利分校的 Henry Chesbrough 教授所稱為“開放創新[12]”的概念。
“我們試圖讓自己像那些在馬拉松賽道上給參賽者遞水的人。我們鼓勵開發人員在我們的方向上採取一些額外措施,因為我們知道這樣做,從長遠意義上看,他們將會真正地實現標的。我們確實在試圖建立一個專案作為支援服務,而非減速帶。”
Chris Aniszczyk[13] – Open Container Initiative 執行董事 & 雲原生計算基金會營運長(前 Twitter 開源專案負責人)
可用於衡量專案質量的許多資料點是追蹤此標的的關鍵(請參閱下一部分的前 5 條內容)。但還有其他一些因素需要考慮:
標的 4 招募並留住開發人員
以組織的身份參與並建立開源專案是吸引開發人員的好方法——並且能夠在花費更少的資源來進行培訓的條件下,使他們快速加入專案。當他們加入組織時,使用您的開源專案或為專案做貢獻的開發人員已經熟悉您的流程、工具和技術。(請參閱我們關於開源開發人員招募[14]的指南。)
但是您作為專案負責人,很可能不會在招募開發人員時發揮直接作用,而且您所在團隊的開源參與性對於招聘有無即時影響可能並不明確。為了促使專案工作與招聘之間建立更為直接的聯絡,Facebook 開展了一年兩次的調查,該調查詢問了新員工三個基本問題:
“我們用這項調查來衡量我們開源文化的質量,它同時說明瞭人們如何看待我們開源專案的整體效果。瞭解到數字具有上升的趨勢是好的。”
Christine Abernathy[4] – Facebook 開源開發者 & 倡導者
用於開發人員招聘的其他常用指標包括:
標的 5 促進開源文化
開源專案如何對工程人才的培養做出貢獻,很大程度上取決於組織中的開源文化與開源實踐的培育。這是由於開源組織是眾所周知的開發人員工作與創新的好地方。開源專案經理通常是組織內部的開源精神大使,同時還負責監督開源合作的政策和實踐。
追蹤您組織中的開源文化如何發展對於衡量您專案的有效性是很重要的。衡量開源文化應用的一些常用方法包括:
標的 6 保持開源社群利益與產品利益的一致性
在開源專案中,社群宣傳是一個新穎而日益流行的角色。您經常會扮演專案開發者和採用者社群之間聯絡人的角色——代表開發您的開原始碼外部使用者的聲音,同時將資訊反饋給產品管理團隊。
這是確保您的產品和服務從社群受益的重要角色,因此您的開源專案將與組織更為廣泛的業務戰略和標的保持一致。用於監測您的宣傳是否成功的一些指標包括:
追蹤的內容
有許多方法可用於開源專案的成功衡量標準與進度追蹤。專案質量不是唯一的追蹤內容,但它仍然非常重要。問題在於,圍繞開源專案可獲得的資料太多了。任何你能獲取資料之處,都可以收集並追蹤。同樣每個組織追蹤的指標——以及他們對資料的處理——很大程度上取決於組織自身的專案標的,以及組織在市場和開源社群中面臨的獨特挑戰。
“我們收集自己可以獲得的資料,雖然這些資料是可獲得的,但我們並不生活在數字裡。我們生活在確保我們擁有正確結果的環境裡。”
Gil Yehuda[11] – Oath 開源高階經理(雅虎+美國線上)
對於一些(瘋狂或完全自動化的)專案經理來說,他們的回答就是追蹤一切事項。特別是對於大型組織而言,有太多的專案需要處理,追蹤所有事項是不可能的,而且也無法從中得出任何有意義的結果。那麼,衡量開源專案質量的真正指標到底是什麼?
這裡有一些評估您開源專案整體質量的最佳指標。這些指標只是之後更為嚴格和縝密分析的開端。請記住,這些是幫助專案負責人確保多個專案質量的技巧。專案本身也應該追蹤它們自己的質量指標。GitHub的開源指標指南就專案維護人員應該關註的內容給出了很好的概述。
這些數字從GitHub上免費使用的開源工具和商業產品上很容易就能收集到。定期檢測它們(每月、每季度和每年)有助於監測單個專案的行程,並將其以專案為一個整體計算總計數。它們可運用於管理層報告中,並幫助您的開發人員改進您的專案。
“我們試著定期檢視專案質量的好壞,並建議他們應該將哪些內容做得更好。但是我們不直接參與管理。我們只是給他們提供資料,然後在我們有能力或有必要的時候稍微推動一下他們的工作。”
Christine Abernathy[4] – Facebook 開源開發者 & 倡導者
貢獻者數量(以及外部貢獻與內部貢獻的比例)
專案的開始伴隨著來自內部開發人員的多數貢獻,並伴隨原始碼的使用或分支,發展吸收了更多的外部貢獻。始終保持可持續發展的最高質量專案擁有極其多元化的社群,並擁有來自專案生態系統中其他公司的大部分貢獻。這些公司已經對該程式碼產生了商業依賴。(還記得 1,000 多家貢獻於谷歌 Kubernetes 專案的公司嗎?)
持續吸引新的外部貢獻者專案往往在維護專案、接納貢獻者和彙總社群的反饋等方面表現優秀。(註意:對於沒有發展自身貢獻者基礎的專案,可能仍然是正確的!)
Kubernetes contributors (git-author) over time.
合併請求的提交量、開放量和接收量(以及它們保持開放的時間長度)
當貢獻者發現錯誤或有功能需求,而他們可以(且有空閑)自行修補或編寫程式碼時,並作為一個合併請求(PR)提交。追蹤合併請求的數量以及發生了什麼變化,可以顯示出您僱員以外的貢獻者正在提交多少程式碼,這同時也是您專案的外部收益水平的指標。
Line graph of Kubernetes pull requests over time
合併請求(PR)的開放時間也表明瞭您專案的維護人員對外部貢獻者的響應和接納程度。如果一個合併請求長時間沒有得到回應,潛在的貢獻者可能會把他們的“金點子”轉到別的地方。
“當我們有一個好專案時,我會說,我們可能沒有一個合併請求會保持開放狀態超過或最多兩到三個月。這時間實際上已經很長了。”
Christine Abernathy[4] – Facebook 開源開發者 & 倡導者
請記住,這些指標高度依賴於專案規模。Facebook 的小型專案嘗試將開放狀態的合併請求數量保持在 10 個或更少。但是,對於與維護人員的數量相比,擁有大量社群投入更為大型的專案而言,將合併請求(PR)的數量限制在這個範圍是具有挑戰性的。審查這些合併請求需要花費大量時間,因此更為大型的專案往往有開放時間更長的合併請求(PR)。
Facebook 的開源辦公室經常在資料庫中執行查詢,找出合併請求(PR)開放時間最長的前五個專案。他們會查明一些問題,然後找尋機會與專案維護人員展開對話。他們詢問維護人員一些問題,以找出問題的根源,並看看什麼可能有助於解決問題。多數情況下,這隻是一個重新聚焦他們的註意力,並提醒他們保持社群和諧重要性的問題。但偶爾深挖這些數字會指出更深層次的專案問題。大量開放的合併請求(PR)或舊的合併請求(PR)可能意味著只有一兩個人在維護這個專案—— 這是一個潛在的預警。
問題提交數量(以及它們的開放時長)
沒有時間、許可權或能力提交合併請求(PR),但遇到有關您的程式碼問題的使用者,可以將他們的錯誤和功能需求作為一個問題進行提交。問題的數量以及這些問題如何被解決,可以表明專案的使用者使用水平,以及維護人員對於使用者需求的響應程度。
這個數量當然取決於追蹤問題的方式。僅使用 GitHub 來追蹤錯誤的專案,其問題的開放時間可能會遠短於使用 GitHub 來收集包括功能需求等問題的專案。這些考慮因素會拖延或縮短問題的開放時長。
Bar graph of Kubernetes issues over time
每一位貢獻者的提交數量(外部貢獻者與內部貢獻者)
一個專案的外部貢獻者提交數量與總數有關,是顯示專案在公開創新方面成效如何的另一個標誌——從外部引進新的想法。隨著時間的推移,高質量專案的外部貢獻者比例會逐步提高。衡量每一位貢獻者的提交數量也有助於評估您的專案是否吸引新的貢獻者,以及那些新的貢獻者有沒有流失。
外部使用者數量
每個開源專案應該有一種方法對生產環境中採用軟體的組織進行追蹤選擇。無論它是透過一個 ADOPTERS.md
檔案還是透過自述檔案中的一個簡單串列,關鍵在於追蹤此串列並確保其隨時間發展。如果外部使用者的數量停止增長或減少,它可能預示從專案成熟到專案過時。
建立或貢獻的專案數量(整體專案範圍內)
追蹤您組織釋出每一個專案的指標,同時也要追蹤您的開發人員積極參與貢獻的專案。在制定開源戰略的過程中,您應該已經識別了貴組織正在使用的關鍵業務專案,並預留了專用資金投資於為這些專案做貢獻。貴組織開源專案的成功與否不僅要以開源專案的質量進行衡量,還要以其開源活動整體來看,這是非常重要的。這包括了您的產品開發和業務運營所依賴的專案質量,也包括了確保貴組織與您使用或釋出任何專案的開源許可證在法律上保持一致。(請參閱我們的開源合規專案出版物[15])
其他追蹤指標
基本的專案指標是一個很好的開端,由它來幫助您把控開源貢獻。但成功的專案負責人需要更深入地瞭解其他重要指標。
這裡有許多可以也應該追蹤的其他事物,這取決於您的標的。請記住,數量本身不是標的——是持續追蹤它們的過程和尋找資料模型的過程可以顯示專案和行程的改進。
單獨衡量每個專案,並對專案進行橫向衡量對比,以獲得對於專案的產出與結果的全面的看法。
結語
團隊以任何對它們的需求最有意義的方式來評估它們的開源專案、開源計劃和開源貢獻。最重要的事是要記得制定一個戰略和增量標的來實現。而您該追蹤什麼以及如何追蹤,將會自然而然地遵照戰略和標的。
TODO Group
這些資源是與 TODO(Talk Openly,Develop Openly)組織合作建立的, 該組織是 Linux 基金會中專業的開源網路組織。特別感謝奉獻自己的時間和知識來製作這些綜合指南的開源專案負責人。參與製作的公司包括 Autodesk、Comcast、Dropbox、Facebook、Google、Intel、Microsoft、Netflix、Oath(Yahoo + AOL)、Red Hat、Salesforce、Samsung 和 VMware。如想瞭解更多資訊,請訪問:todogroup.org[16]
朋友會在“發現-看一看”看到你“在看”的內容