开源软件项目的定性和定量分析指标 ———— CHAOSS 指标解析
點(diǎn)擊藍(lán)字關(guān)注我們
“科學(xué)管理在實(shí)質(zhì)上要求任何一個(gè)具體機(jī)構(gòu)或機(jī)構(gòu)中的工人及管理人員進(jìn)行一場(chǎng)全面的心理革命,沒(méi)有這樣的心理革命,科學(xué)管理就不存在。”?
———— 泰勒 《科學(xué)管理原理》
引言
筆者最近閱讀了CHAOSS 在8月份發(fā)布的開(kāi)源軟件項(xiàng)目的量化指標(biāo),頗受啟發(fā),于是索性將所想所得和大家分享一番,開(kāi)源之道走過(guò)了這幾年,抽絲剝繭,一直試圖找到和大家探討的話題,一同解決令人困惑的難題,但是缺少必要的積累,一直傾向于定性的探索和研究,鑒于知識(shí)背景和視野的不同,于是很難找到讓大家感興趣的話題,甚至某位朋友善意的提醒:“多講點(diǎn)實(shí)在的”,多年過(guò)去了,我也終于對(duì)關(guān)于定性的問(wèn)題有了一些理解和認(rèn)識(shí),那么這也意味著是該集中起來(lái)做些定量的指標(biāo)衡量的事情了。
當(dāng)然,伴隨著科技的進(jìn)步,很多人開(kāi)始迷信數(shù)據(jù),比如流行GitHub star數(shù)量、fork數(shù)量等等,這尤其體現(xiàn)在某些公司做考核之用,非常的實(shí)惠。但是這并不是開(kāi)源之道所看重的,盡管量化指標(biāo)很重要,正如紅帽開(kāi)源項(xiàng)目辦公室的高級(jí)首席社區(qū)架構(gòu)師Brian Proffitt(同時(shí)也是CHAOSS的治理委員會(huì)成員)所言,你有了指標(biāo)和衡量,就一定保證Community是健康的嗎?對(duì)此開(kāi)源之道是頗為贊同的,一直以來(lái)堅(jiān)持在沒(méi)有搞清楚性質(zhì)之前,不要去迷信數(shù)據(jù)的緣由。
如果搞清楚了定性的問(wèn)題,那么量化指標(biāo)是自然而然的事情,畢竟這是一個(gè)科學(xué)管理為王的世界。所以開(kāi)源之道接下來(lái)會(huì)有意的寫一些關(guān)于指標(biāo)量化方面的文章和知識(shí)輸出。
什么是CHAOSS?
開(kāi)源的重要是不言而喻的,大家默認(rèn)都是承認(rèn)開(kāi)源對(duì)于我們所生活的世界的重要性的,也是可以看得到的,唯一的問(wèn)題就是所有權(quán)下的經(jīng)濟(jì)形式限制了很多人的思考模式,如何從中獲利?需不需要承擔(dān)其中的道德責(zé)任?更有甚者便是隨著開(kāi)源生態(tài)的形成,問(wèn)題反而更多,大家對(duì)其的關(guān)注度越來(lái)越高。例如:
開(kāi)源的貢獻(xiàn)者想知道哪些開(kāi)源項(xiàng)目具有影響力,自己該往哪個(gè)方向努力?
開(kāi)源Community則希望能夠吸收到更多的成員、確保始終如一的質(zhì)量、以及獎(jiǎng)勵(lì)那些做出重大貢獻(xiàn)的成員。
擁抱開(kāi)源的公司則希望知道哪些Community和軟件項(xiàng)目是值得合作的?通過(guò)交流能夠產(chǎn)生一定的影響,以及想評(píng)估自己的員工在開(kāi)源當(dāng)中的工作。
開(kāi)源非盈利組織,如基金會(huì)則希望能夠識(shí)別出Community的需求,最好能做到積極的響應(yīng),進(jìn)一步評(píng)估自身的工作,以促進(jìn)community的良性發(fā)展
所有的這些問(wèn)題,都是需要一些數(shù)據(jù)和指標(biāo)來(lái)進(jìn)行衡量的。當(dāng)然也是所有開(kāi)源Community所必需的內(nèi)容。
為了解決這些問(wèn)題,CHAOSS 應(yīng)運(yùn)而生,開(kāi)發(fā)開(kāi)源的指標(biāo)、方法論、以及相應(yīng)的軟件項(xiàng)目,旨在讓開(kāi)源項(xiàng)目能夠良性的發(fā)展且具有可持續(xù)性,通過(guò)衡量開(kāi)源項(xiàng)目的健康度和可持續(xù)性,進(jìn)一步,CHAOSS 會(huì)尋求提高開(kāi)源項(xiàng)目健康度和可持續(xù)性的可操作性,進(jìn)而讓所有的利益相關(guān)者能夠做出更加明智的決策,而不是在盲人摸象般的行進(jìn)。
CHAOSS 的目標(biāo)
目前來(lái)說(shuō),有三類目標(biāo):
建立與實(shí)施無(wú)關(guān)的度量標(biāo)準(zhǔn),以衡量Community活躍度、貢獻(xiàn)以及健康度
開(kāi)發(fā)和集成相應(yīng)的開(kāi)源軟件,來(lái)分析Community的開(kāi)發(fā)
構(gòu)建可復(fù)制的項(xiàng)目健康報(bào)告
CHAOSS 是Linux基金會(huì)下的項(xiàng)目。區(qū)分了兩個(gè)委員會(huì)和五大工作組。委員會(huì)主要區(qū)分為指標(biāo)委員會(huì)和軟件委員會(huì)。顧名思義,指標(biāo)委員會(huì)即是實(shí)現(xiàn)上述目標(biāo)的決策機(jī)構(gòu)。
五大工作組的任務(wù)和方向
工作組的目標(biāo)即完善開(kāi)源Community相關(guān)的指標(biāo),并確保其可以使用相應(yīng)的軟件可以實(shí)現(xiàn)。使用 GitHub 的項(xiàng)目進(jìn)行組織和管理,具體的有:
多樣性和包容性:目的是在開(kāi)放源代碼項(xiàng)目中引入經(jīng)驗(yàn)以衡量一致性和包容性,并在可能的情況下獲得軟件的支撐。
Evolution指標(biāo)(用于軟件開(kāi)發(fā)項(xiàng)目):專注于開(kāi)源項(xiàng)目的生命周期,
通用指標(biāo):所有的用于Community和開(kāi)源相關(guān)的指標(biāo)均在這個(gè)工作組進(jìn)行,除非需要特別的對(duì)待進(jìn)而分離出更多的工作組。
經(jīng)濟(jì)價(jià)值:圍繞開(kāi)源項(xiàng)目和Community的相關(guān)經(jīng)濟(jì)活動(dòng)。
風(fēng)險(xiǎn)評(píng)估:重點(diǎn)關(guān)注與開(kāi)源風(fēng)險(xiǎn)有關(guān)的指標(biāo)。
解析指標(biāo)
讓我們回到CHAOSS在2019年8月份發(fā)布的指標(biāo)本身上,總結(jié)起來(lái)可以使用下面這個(gè)表格來(lái)涵蓋所有的內(nèi)容:
指標(biāo)項(xiàng) | (嘗試回答的)問(wèn)題 | 開(kāi)源之道注解 |
組織多樣性 | 何謂貢獻(xiàn)者的組織多樣性? | — |
不同的參會(huì)票 | 在會(huì)議中,如何設(shè)置不同的票來(lái)體現(xiàn)多樣性和包容性? | 例如女性貢獻(xiàn)者 |
在會(huì)議上的行為準(zhǔn)則 | 在會(huì)議中,行為準(zhǔn)則體現(xiàn)出多樣性和包容性。 | |
家庭友好程度 | 使家庭能夠一起參加會(huì)議,進(jìn)而闡釋會(huì)議的多樣性和包容性。 | |
項(xiàng)目行為準(zhǔn)則 | 項(xiàng)目行為準(zhǔn)則如何支持多樣性和包容性? | |
導(dǎo)師制度 | 我們的導(dǎo)師制度在支持項(xiàng)目的多樣性和包容性方面的效果如何? | |
代碼變更 | 在指定時(shí)間段內(nèi)對(duì)源代碼進(jìn)行了哪些更改? | |
代碼變更行數(shù) | 在特定時(shí)間段內(nèi)對(duì)源代碼進(jìn)行的所有更改中的代碼行數(shù)(添加、刪除的都算)的總和是多少? | |
Review | 在一個(gè)時(shí)間段內(nèi),有哪些對(duì)項(xiàng)目進(jìn)行更改的review請(qǐng)求。 | |
已接受的 Review | 在代碼的變更中有多少已經(jīng)接受的review。 | |
新建issue | 在一個(gè)時(shí)間段內(nèi),有多少新建的issue? | |
issue活躍度 | 在一個(gè)時(shí)間段內(nèi),有多少issue是保持活躍的? | |
關(guān)閉的issue | 在一個(gè)時(shí)間段內(nèi),有多少是已經(jīng)處理完畢的issue。 | |
Elephant Factor | Community的工作分布均勻程度如何? | 公司成員、個(gè)人開(kāi)發(fā)者、基金會(huì)成員等的分布。 |
委員會(huì) | Community貢獻(xiàn)者的健壯性和多樣性。 | |
測(cè)試覆蓋率 | 代碼測(cè)試得如何? | |
許可證統(tǒng)計(jì) | 有多少種不同的許可證? | |
許可證覆蓋 | 有多少代碼庫(kù)已聲明許可證? | |
材料清單 | 軟件包的依賴、許可、安全性等相關(guān)的問(wèn)題是否已經(jīng)清晰明白的有記錄。 | |
勞務(wù)投資 | 公司為其員工提供了多少財(cái)務(wù)上的支撐。 | 所有的勞動(dòng)都是有成本的。 |
項(xiàng)目進(jìn)度 | 公司的發(fā)展速度如何? | 有的公司可能在走下坡路。 |
公司或企業(yè)項(xiàng)目的技能需求 ? ?有多少公司在使用該開(kāi)源項(xiàng)目,如果一位工程師掌握了相關(guān)的技術(shù),被雇傭的幾率有多大?? ?
具體良好的內(nèi)容,在本指標(biāo)中有如下格式來(lái)進(jìn)行立體的敘述:
具體描述
目標(biāo)
策略
成功的指標(biāo)
? ? ? ? ?????定性因子
? ? ? ? ?????定量因子
已知的軟件實(shí)現(xiàn)
參考資料
下面以開(kāi)源之道最為關(guān)注的Elephant Factor為例給大家進(jìn)行一番示例:
Elephant Factor 指標(biāo)
描述:
所謂的“Elephant Factor”,其實(shí)來(lái)自于英語(yǔ)世界的“房間里的大象”這樣的說(shuō)法的,放在開(kāi)源項(xiàng)目代碼當(dāng)中,即是指代碼倉(cāng)庫(kù)中的總的提交中,公司的占比數(shù)量。例如,一種常見(jiàn)的過(guò)濾器是說(shuō)50%的提交是由n家公司執(zhí)行的,這就是“Elephant Factor”。先是以貢獻(xiàn)度最大的公司,然后是貢獻(xiàn)量次之的公司,以此類推。例如,如果一個(gè)項(xiàng)目有8個(gè)參與組織,每個(gè)組織貢獻(xiàn)了項(xiàng)目中的12.5%的提交,如果將Elephant Factor參數(shù)化為50%,則Elephant Factor為“ 4”。如果在相同的情況下,其中一個(gè)組織負(fù)責(zé)50%的提交,則Elephant Factor將為“ 1”。
Elephant Factor 提供了清晰明了的指示,用來(lái)標(biāo)識(shí)出一個(gè)項(xiàng)目中的最小化公司參數(shù)(如50%),Elephant Factor 這一專業(yè)術(shù)語(yǔ)是由Venters等人(2014)提出,主要用來(lái)表述軟件的可持續(xù)性發(fā)展中非功能性部分的關(guān)鍵指標(biāo),但是他們并未在文獻(xiàn)中像本文這樣明確的定義。
具體的公式描述請(qǐng)見(jiàn):Elephant Factor 公式
目標(biāo):
評(píng)估開(kāi)源軟件產(chǎn)品的公司可能會(huì)使用 Elephant Factor 來(lái)比較項(xiàng)目對(duì)一小部分公司貢獻(xiàn)者的依賴程度。顯而易見(jiàn),一個(gè)低 Elephant Factor 的項(xiàng)目對(duì)于決策者來(lái)說(shuō)更具吸引力,沒(méi)有人愿意看到開(kāi)源項(xiàng)目是某一家公司所事實(shí)上把控,當(dāng)然,該參數(shù)在根據(jù)不同的項(xiàng)目應(yīng)該有所調(diào)整,具有1000個(gè)組織參與的項(xiàng)目和只有10個(gè)組織參與的項(xiàng)目是非常不同的。也有仁者見(jiàn)仁智者見(jiàn)智的看法。
樣本的過(guò)濾和可視化:
時(shí)間:要?jiǎng)討B(tài)的看待Elephant Factor,也就是說(shuō)查看結(jié)果的時(shí)候,要關(guān)注一下時(shí)間,要縱觀全局,準(zhǔn)確把握軟件的生命周期。
倉(cāng)庫(kù)group:(現(xiàn)代)軟件項(xiàng)目一般都擁有非常多且分散的代碼倉(cāng)庫(kù),在某些情況下,檢查與任何給定項(xiàng)目相關(guān)聯(lián)的所有代碼倉(cāng)庫(kù),可以更全面地了解Elephant Factor。
已知的軟件實(shí)現(xiàn):
Augur 已實(shí)現(xiàn)該功能。
Grimoirelab提供該功能,不僅僅是一串?dāng)?shù)字,還將之可視化了。按如下方式操作:
查看有關(guān)Bitergia Analytics的CHAOSS實(shí)例的示例。
下載Grimoirelab 所給的示例代碼。
按照如下步驟在GrimoreLab Kibiter面板中顯示出來(lái):
新建一個(gè)餅圖
選擇git的索引
指標(biāo)切片大小:Count聚合
Buckets 切片:Terms聚合、author_org_name、按metric: Count和Descending排序、500大小,如下截圖所示:
參考資料:
Colin C. Venters, Lydia Lau, Michael K. Griffiths, Violeta Holmes, Rupert R. Ward, Caroline Jay, Charlie E. Dibsdale, and Jie Xu. 2014. The Blind Men and the Elephant: Towards an Empirical Evaluation Framework for Software Sustainability. Journal of Open Research Software 2, 1.?https://doi.org/10.5334/jors.ao
什么是大象因子
eclipse新的開(kāi)放式分析面板
https://www.stackalytics.com/
開(kāi)源之道 點(diǎn)評(píng)
在定量分析的道路上,人類從未放棄過(guò)努力,統(tǒng)計(jì)學(xué)的蓬勃發(fā)展和人工智能的突破就是最好的明證。
軟件工程是前所未有的復(fù)雜,隨著技術(shù)的發(fā)展,大量人員的參與,復(fù)雜性日益增加,即使是在某個(gè)區(qū)域下的某個(gè)組織,開(kāi)發(fā)一款軟件也是足夠復(fù)雜的了,更何況是充滿不確定性的開(kāi)源項(xiàng)目。但是由于開(kāi)放的、多樣性的、動(dòng)態(tài)的實(shí)用主義的成功,誕生了非常重要的開(kāi)源項(xiàng)目,并在人類的生活中發(fā)揮著非常重要的作用,那么其中發(fā)生效用的究竟是什么?是冥冥之中的神力嗎?還是僅僅依靠運(yùn)氣?目前為止,還沒(méi)有確切的答案,只有無(wú)數(shù)的試圖找到答案的充滿好奇和激情的人類。
或者正是因?yàn)闆](méi)有確切的答案,才能夠更加的吸引人,充滿了迷人的魅力。但是也因?yàn)闆](méi)有確切的答案,魚龍混雜、真假難辨,被一些別有用心的人利用。人類和人類社會(huì)都是異常復(fù)雜的,一個(gè)微小的心理變化,產(chǎn)生出完全不同的歷史后果,而挖掘的每一個(gè)量化的因素,都需要花去一群人相當(dāng)?shù)木蜁r(shí)間,而且還要經(jīng)歷時(shí)間的驗(yàn)證。
從微觀到宏觀,在開(kāi)源軟件項(xiàng)目中,可以體現(xiàn)得非常明顯!一連串的決策思路和基本條件都讓我們有機(jī)會(huì)去捕捉和分析,想象力才是決定你能夠走多遠(yuǎn)的極限。
接下來(lái)的工作
開(kāi)源之道將會(huì)在2020年,做一些關(guān)于定量分析的學(xué)習(xí)和工作:
參與到CHAOSS Community中,希望能夠有所貢獻(xiàn)吧。
按照該方法論和軟件、指標(biāo),分析一些較為特定的項(xiàng)目,能夠形成一定的模板是最好不過(guò)的了。
Good Luck!
點(diǎn)擊下方“閱讀原文”查看更多超鏈接
總結(jié)
以上是生活随笔為你收集整理的开源软件项目的定性和定量分析指标 ———— CHAOSS 指标解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: x.norm(p=2,dim=1,kee
- 下一篇: ROS基础学习笔记(五)