文章編號(hào):1672-5913(2008)18-0079-03
摘要:本文以兩個(gè)開源軟件用戶社區(qū)為例,闡述對(duì)開源軟件社區(qū)的同伴支持現(xiàn)象進(jìn)行系統(tǒng)分析的方法,并提出衡量同伴支持有效性的一系列度量標(biāo)準(zhǔn)和計(jì)算方式。
關(guān)鍵詞:同伴支持;開源軟件;度量標(biāo)準(zhǔn)
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
大多數(shù)開源軟件都伴有由用戶構(gòu)成的社區(qū),這些用戶社區(qū)為用戶提供知識(shí)共享的平臺(tái),用戶通過(guò)這些社區(qū)獲得同伴用戶的支持。但是對(duì)于基于這些用戶社區(qū)的同伴支持的有效性并沒(méi)有系統(tǒng)的研究。本文以兩個(gè)開源軟件用戶社區(qū)為例,闡述對(duì)開源軟件社區(qū)的同伴支持現(xiàn)象進(jìn)行系統(tǒng)分析的方法,并提出衡量同伴支持有效性的一系列度量標(biāo)準(zhǔn)和計(jì)算方式。這些度量標(biāo)準(zhǔn)可提供應(yīng)選擇使用開源軟件時(shí)的參考指標(biāo)。
1樣本社區(qū)
為了便于說(shuō)明,我們選擇apache軟件基金會(huì)開發(fā)的ant和lucene-java兩個(gè)開源軟件作為說(shuō)明本文提出的分析方法和度量指標(biāo)的分析樣本。Ant是一個(gè)支持軟件編譯、測(cè)試、部署等過(guò)程的自動(dòng)化工具,和unix系統(tǒng)的make具有類似的功能,但對(duì)java開發(fā)提供了特定的支持,已成為java開發(fā)者不可或缺的開發(fā)工具。Lucene提供了一套生成全文索引和全文檢索的軟件庫(kù),其中最主要的是其java類庫(kù),通稱lucene-
java。包括Eclipse在內(nèi)的很多java軟件都使用了lucene-java作為其后臺(tái)的全文檢索引擎。這兩個(gè)開源軟件都是比較成熟的軟件,有大量的用戶和穩(wěn)定的社區(qū),可為我們對(duì)開源軟件的同伴支持現(xiàn)象的分析提供代表性的數(shù)據(jù)。這兩個(gè)開源軟件的用戶主要利用面向用戶的郵件討論組(user@ant.apache.org和java-user@lucene.apache.org)交換知識(shí),獲得同伴用戶的支持。我們從http://ant.apache.org和http://lucene.apache.org/收集了這兩個(gè)郵件討論組的1995年至1997年的3年間的全部郵件存檔,對(duì)其中的用戶支持現(xiàn)象進(jìn)行分析。
2數(shù)據(jù)庫(kù)生成
為了自動(dòng)生成下節(jié)引入的各種度量標(biāo)準(zhǔn),對(duì)同伴支持做定量、系統(tǒng)化的分析,首先要從郵件存檔生成一個(gè)數(shù)據(jù)庫(kù),圖1是該數(shù)據(jù)庫(kù)的模式。生成該數(shù)據(jù)庫(kù)時(shí)面臨的技術(shù)問(wèn)題主要有兩個(gè):同一用戶的確定和討論主題線(thread)的再現(xiàn)。
2.1同一用戶的確定
一般而言,一個(gè)電子郵件地址代表一個(gè)用戶,但是很多用戶常常同時(shí)使用多個(gè)電子郵件地址,或因?yàn)楣ぷ鞲鼡Q等原因更換電子郵件地址,比如說(shuō)ant用戶xavier hanin同時(shí)使用了xh@javasoft.fr,xavier.hanin@gmail.com和xavier@apache.
org三個(gè)不同的地址。為了保證分析的準(zhǔn)確性,我們采用了下列的啟發(fā)式算法確定用戶的身份。
Step 1: 對(duì)每個(gè)郵件的from域進(jìn)行解析,抽出其中的用戶名字和用戶的電子郵件地址,構(gòu)成當(dāng)前用戶(current_user)的
Step 2: 把current_user的
address2, …)>。但由于有重名現(xiàn)象,因此在因?yàn)橛脩裘窒嗤鸷喜r(shí),分析程序會(huì)請(qǐng)求分析人員的確認(rèn)以避免錯(cuò)誤的合并。
反復(fù)地進(jìn)行上述處理直到?jīng)]有新的身份合并為止。這樣具有多個(gè)郵件地址的用戶都可以被歸并成同一用戶身份,并被賦予一個(gè)唯一的用戶標(biāo)識(shí)代碼user-id,然后在數(shù)據(jù)庫(kù)中為每個(gè)用戶建立一個(gè)數(shù)據(jù)項(xiàng),以u(píng)ser-id為其主要關(guān)鍵字。
2.2討論主題線的再現(xiàn)
郵件存檔按郵件討論組服務(wù)器的收發(fā)順序排列郵件,并不直接保存各個(gè)郵件之間的回信關(guān)系,因此生成數(shù)據(jù)庫(kù)的第二個(gè)主要任務(wù)是重構(gòu)電子郵件的主題線,理出各個(gè)郵件之間的回信關(guān)系。每個(gè)郵件都一個(gè)唯一確定的msg-id,用于數(shù)據(jù)庫(kù)中郵件數(shù)據(jù)項(xiàng)的主要關(guān)鍵字。如果郵件含有In-reply-to域,那么根據(jù)該域中的msg-id,很容易知道它是對(duì)那一個(gè)郵件回的信,依次遞歸處理,可以推算出屬于同一個(gè)主題線的所有郵件。
但是因?yàn)楦鞣N原因,比如說(shuō)有些用戶的郵件處理系統(tǒng)濾掉了In-reply-to域,很多郵件并沒(méi)有In-reply-to域。對(duì)這些郵件,我們采用主題匹配的方式找出其所屬的主題線。首先抽出郵件的主題(Subject)域,刪除如(“Re:”, “Fwd:”, “Aw:”)等由各種語(yǔ)言的郵件處理系統(tǒng)軟件自動(dòng)添加的回信前綴以后,再和已經(jīng)分類的主題線的各個(gè)郵件的主題(Subject)域作比較,如果有相同的主題,則把該郵件歸入到那個(gè)主題線。如果該主題是第一次出現(xiàn),則在數(shù)據(jù)庫(kù)中新建一個(gè)主題線。
一條主題線算作對(duì)一個(gè)問(wèn)題地討論,因此數(shù)據(jù)庫(kù)中的主題線數(shù)據(jù)項(xiàng)有兩個(gè)基本關(guān)系:提問(wèn)和回復(fù)(圖1)。每個(gè)主題線的第一個(gè)郵件是該線的提問(wèn)郵件,而其他的所有郵件都是回復(fù)郵件。提問(wèn)郵件的發(fā)信人是提問(wèn)者,回復(fù)郵件的發(fā)信人是回復(fù)者。
3同伴支持分析方法和度量
有了郵件數(shù)據(jù)庫(kù),我們就可編制簡(jiǎn)單的程序從數(shù)據(jù)庫(kù)中抽出相關(guān)數(shù)據(jù),對(duì)同伴支持作定量的分析。本文提議用回復(fù)率、回復(fù)時(shí)間、支持程度以及社會(huì)網(wǎng)絡(luò)密度等度量來(lái)衡量同伴支持的有效性。
3.1回復(fù)率
衡量一個(gè)郵件討論組的有效性的第一個(gè)數(shù)據(jù)是該討論組的回復(fù)率,即用戶提問(wèn)獲得其他用戶回信的百分比。很顯然如果一條主題線只有一個(gè)郵件那么該線的提問(wèn)就沒(méi)有回復(fù)。如果一條主題線的所有郵件都來(lái)自同一個(gè)用戶,那么這一提問(wèn)也沒(méi)有獲得同伴的支持。如表1所示,這兩個(gè)郵件討論組三年來(lái)分別有15557和19305個(gè)郵件,共有4000左右的主題線,大致相當(dāng)于每天有17個(gè)左右的郵件,4條左右的主題線,其中近80%的主題線得到了回復(fù)。而且從表1關(guān)于各個(gè)季度的回復(fù)率分布情況來(lái)看,這一高回復(fù)率相當(dāng)穩(wěn)定,進(jìn)一步表明了開源軟件社區(qū)中同伴支持現(xiàn)象的有效性。
3.2回復(fù)時(shí)間
對(duì)每一個(gè)主題線的時(shí)間分析可以得到兩個(gè)重要的度量指標(biāo):第一反應(yīng)時(shí)間和討論長(zhǎng)度。第一反應(yīng)時(shí)間是第一個(gè)回復(fù)郵件和提問(wèn)郵件之間的時(shí)間差,這一度量指標(biāo)揭示一個(gè)問(wèn)題大概在多長(zhǎng)時(shí)間內(nèi)可以得到用戶社區(qū)的幫助。討論長(zhǎng)度是最后一個(gè)回復(fù)郵件和提問(wèn)郵件之間的時(shí)間差,揭示大概要用多長(zhǎng)時(shí)間才能從用戶社區(qū)得到比較完整的幫助。在一般情況下當(dāng)用戶獲得足夠的幫助信息以后一個(gè)討論主題線就結(jié)束了。
圖2顯示了三年來(lái)兩個(gè)社區(qū)的第一反應(yīng)時(shí)間分布圖。圖中縱軸的百分比是累計(jì)百分比,表示到該時(shí)間內(nèi),提問(wèn)郵件已經(jīng)得到第一個(gè)回復(fù)的百分比(圖中沒(méi)有包括沒(méi)有回復(fù)的主題線)。從圖中可以看出,在24小時(shí)之內(nèi),有90%以上的問(wèn)題已經(jīng)得到了第一個(gè)回復(fù),其中有7.8%(ant-user)和 2.9%(lucene-user)的問(wèn)題在5分鐘內(nèi)就得到了第一個(gè)回復(fù)。圖3顯示了各個(gè)主題線討論的時(shí)間長(zhǎng)度,可以看出90%以上的問(wèn)題在5天之內(nèi)結(jié)束,50%以上的問(wèn)題在12個(gè)小時(shí)之內(nèi)就結(jié)束了。這些度量進(jìn)一步表明兩個(gè)社區(qū)的同伴支持是很活躍的。這兩組數(shù)據(jù)進(jìn)一步表明這兩個(gè)開源軟件社區(qū)的同伴支持活動(dòng)的活躍和有效程度。
3.3支持強(qiáng)度
兩個(gè)指標(biāo)可以提供重要的線索衡量用戶在社區(qū)里得到什么程度的支持:每個(gè)主題線的郵件個(gè)數(shù)和每個(gè)主題線的回復(fù)者的個(gè)數(shù)。表2給出了這兩個(gè)度量的最小數(shù),最大數(shù)和各個(gè)四分位數(shù)。從表2可以看出,50%以上的問(wèn)題只涉及2名回復(fù)者,2~3個(gè)回復(fù)郵件。這說(shuō)明用戶的問(wèn)題大多數(shù)是比較簡(jiǎn)單的,只需要極少數(shù)的同伴就可以解決。
3.4社會(huì)網(wǎng)絡(luò)密度
對(duì)開源軟件開發(fā)狀況的研究調(diào)查表明,大多數(shù)的軟件源代碼是由極少數(shù)的開發(fā)人員提供的,比如說(shuō)只有少于1%的apche httpd服務(wù)器的用戶曾提供源代碼,可以說(shuō)開源軟件事實(shí)上存在一個(gè)開發(fā)中心。另一方面,去中心化的長(zhǎng)尾(Long tail)也是網(wǎng)絡(luò)時(shí)代的一個(gè)重要特征,長(zhǎng)尾現(xiàn)象指出,在網(wǎng)絡(luò)時(shí)代用戶的需求和貢獻(xiàn)會(huì)進(jìn)一步的分散,形成一個(gè)細(xì)長(zhǎng)的尾巴,而這細(xì)長(zhǎng)尾巴部分的總和往往可以匹敵需求集中部分。比如說(shuō),網(wǎng)絡(luò)書店amazon超過(guò)25%的銷售量來(lái)自于排行榜上13萬(wàn)名以外的圖書,而北美最大的傳統(tǒng)書店BarnesNoble每年上架的書目的總數(shù)也僅為了13萬(wàn)種。
分析開源軟件中同伴支持的分散程度可以借用社會(huì)網(wǎng)絡(luò)的概念??梢园淹橹С株P(guān)系描述成一個(gè)有向的社會(huì)網(wǎng)絡(luò),其中每一個(gè)結(jié)點(diǎn)是用戶,從結(jié)點(diǎn)A到結(jié)點(diǎn)B的有向弧則表示用戶A回復(fù)了用戶B提出的問(wèn)題。圖4分別顯示了ant-user和lucene-user在2006年4月份的基于互相支持的社會(huì)網(wǎng)絡(luò)(為了圖的可讀性,我們只選用了一個(gè)月的數(shù)據(jù))。從圖中可以看出用戶之間的互助還是比較分散的。
圖4 社會(huì)網(wǎng)絡(luò)
對(duì)分散程度還可以用網(wǎng)絡(luò)密度(nd)來(lái)定量描述。nd=(2*L)/(N*(N-1)),其中L是弧的條數(shù),N是結(jié)點(diǎn)的個(gè)數(shù)。表3顯示了2006年各個(gè)月的兩個(gè)社區(qū)同伴支持的網(wǎng)絡(luò)密度,表3的最后一列顯示了根據(jù)三年的同伴支持情況形成的社會(huì)網(wǎng)絡(luò)的密度。從單個(gè)月的互助情況看,同伴支持有良好的分散性,說(shuō)明很多用戶參與了幫助其他用戶,但是三年的累計(jì)數(shù)字卻顯示了很低的分散度。根據(jù)對(duì)數(shù)據(jù)的進(jìn)一步分析,我們發(fā)現(xiàn)大多數(shù)用戶只在某一個(gè)時(shí)間段參與了社區(qū),而一些特別活躍的用戶則參加了很長(zhǎng)的一段時(shí)間,他們每個(gè)月都會(huì)參與幫忙,累計(jì)下來(lái)的幫助數(shù)很大,成為社區(qū)的中心任務(wù)。因此,可以說(shuō)開源社區(qū)既有中心也有中心的長(zhǎng)尾效應(yīng),中心現(xiàn)象指的是其長(zhǎng)期趨勢(shì),而長(zhǎng)尾效應(yīng)則反應(yīng)在其短期現(xiàn)象里。
4結(jié)束語(yǔ)
本文提出了一組度量衡量軟件開源社區(qū)的同伴支持現(xiàn)象的有效性,通過(guò)計(jì)算這些度量,軟件公司或用戶可以估算使用開源軟件的技術(shù)支持成本或?qū)ζ淙粘J褂玫挠绊?,從而作出正確的用或者不用的決定,也可用這些度量比較相同功能的軟件,選擇符合自己要求的軟件。