盧冬冬,吳 潔,劉 鵬,盛永祥,張鵬臣
(江蘇科技大學(xué)經(jīng)濟管理學(xué)院,江蘇 鎮(zhèn)江 212003)
近年來,開源軟件蓬勃發(fā)展,廣泛運用于大數(shù)據(jù)、云計算、人工智能等諸多領(lǐng)域[1]。這引起了社會各界的廣泛關(guān)注,國務(wù)院也曾發(fā)文要將開源軟件社區(qū)的建設(shè)納入創(chuàng)新驅(qū)動戰(zhàn)略中去。與傳統(tǒng)商業(yè)軟件不同的是,基于web2.0/3.0的在線社區(qū)是推動開源軟件形成和發(fā)展的主要平臺。來自世界各地的開發(fā)者通過開源軟件社區(qū)協(xié)調(diào)合作,完成軟件項目的開發(fā)與迭代[2]。但開源軟件社區(qū)“集市型”的開發(fā)模式使得開發(fā)者能夠自由加入或退出項目的開發(fā)進程[3]。一旦出現(xiàn)核心開發(fā)者的流失將會使開發(fā)進程遭受重創(chuàng),并引發(fā)一系列的級聯(lián)效應(yīng)[4]。因此,從動態(tài)視角探究核心開發(fā)者流失對社區(qū)的影響并對其采取保護措施能夠有效提高社區(qū)的創(chuàng)新產(chǎn)出。
目前開源軟件社區(qū)已引起計算機、知識創(chuàng)新、管理等領(lǐng)域?qū)W者們的廣泛研究[5-8]。研究內(nèi)容主要包括了開發(fā)者的協(xié)作模式機制、開發(fā)者類型劃分等。開發(fā)者協(xié)作模式機制方面:在Raymond提出的“集市模式”的基礎(chǔ)上[3],一些學(xué)者認(rèn)為開源軟件社區(qū)作為一種典型的開放式創(chuàng)新社區(qū)[9],其開發(fā)過程是一種密集型的知識創(chuàng)造過程[10],社區(qū)成員間的協(xié)作行為存在偏好連接、同質(zhì)相吸的特征[1,5];在子項目開發(fā)過程和開發(fā)者協(xié)作網(wǎng)絡(luò)的協(xié)同演化過程中,子項目與協(xié)作網(wǎng)絡(luò)中的社區(qū)結(jié)構(gòu)存在顯著的相關(guān)性[6]。
開發(fā)者類型劃分方面:早期的研究中Mockus等人[11]基于簡單統(tǒng)計計數(shù)方法,通過代碼提交量區(qū)別開源軟件社區(qū)的核心開發(fā)者和邊緣開發(fā)者。繼而有相關(guān)研究關(guān)注到用戶行為:Nakakoji等[12]依據(jù)項目類型將開發(fā)者劃分為8種類型。Oliva等[13]基于問卷、訪談的結(jié)果來總結(jié)描述核心開發(fā)者行為特點,并以此作為識別標(biāo)準(zhǔn)。近年來,眾多學(xué)者基于復(fù)雜網(wǎng)絡(luò)的視角進行了眾多研究[6,14-18],但多是基于度中心性大小、介數(shù)中心性大小或?qū)烧呓Y(jié)合起來綜合考慮區(qū)分核心開發(fā)者和一般開發(fā)者,并在此基礎(chǔ)上通過探究網(wǎng)絡(luò)魯棒性(抗毀性)識別效果[6,14,17]。
上述研究使我們對開源軟件社區(qū)中的協(xié)作模式機制和開發(fā)者類型劃分方法有了更深入的認(rèn)識,但還存在以下幾點有待進一步深化。在區(qū)分核心開發(fā)者的過程中,目前的已有研究多是從開發(fā)者節(jié)點在整體網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu)特征(度、介數(shù))出發(fā)。這些指標(biāo)雖能反映開發(fā)者節(jié)點在網(wǎng)絡(luò)中的影響力,但是卻忽略了節(jié)點的局部特征社團結(jié)構(gòu)(社區(qū)中開發(fā)者之間的協(xié)作關(guān)系形成的社團結(jié)構(gòu)與項目開發(fā)存在顯著相關(guān)性)。在檢測識別效果方面,目前的研究中多是從靜態(tài)視角僅考慮節(jié)點流失后對網(wǎng)絡(luò)魯棒性的影響,尚未從動態(tài)視角探討節(jié)點流失對與其存在協(xié)作關(guān)系的開發(fā)者的影響。
由此,本文將以開源軟件項目AngularJS為例,通過收集開發(fā)者代碼提交記錄,抓取開發(fā)者協(xié)作關(guān)系來構(gòu)建開發(fā)者協(xié)作網(wǎng)絡(luò)。在此基礎(chǔ)上將開發(fā)者社團結(jié)構(gòu)考慮進來,識別核心開發(fā)者,并從動態(tài)視角探究核心開發(fā)者流失對社區(qū)內(nèi)其他開發(fā)者造成的級聯(lián)效應(yīng)。是對已有開發(fā)者類型區(qū)分方法的一種深化,也為網(wǎng)絡(luò)魯棒性檢測提供了新的視角,同時也是大型自組織系統(tǒng)研究的進一步擴充。
本文選擇了GitHub社區(qū)中的AngularJS項目為研究對象,該項目誕生于2009年,現(xiàn)被Google收購,作為一款優(yōu)秀的開源前端JS框架,已被用于多款Google產(chǎn)品中。GitHub是一個優(yōu)秀的開源服務(wù)平臺,其Pull Request機制允許用戶任意參與到項目中去[19],Git版本控制系統(tǒng)也記錄下了不同時段內(nèi)所有開發(fā)者的代碼提交記錄。
源數(shù)據(jù)使用課題組實現(xiàn)的爬蟲工具,選取時間跨度為2010年8月(項目初始期)到2019年1月(本研究數(shù)據(jù)提取截止期),抓取AngularJS代碼提交記錄共計38 764條,記錄內(nèi)容包含開發(fā)者昵稱、注冊郵箱、代碼提交日期、修改文件數(shù)量、名稱和代碼增減行數(shù)等。
基于源數(shù)據(jù),構(gòu)建開發(fā)者協(xié)作網(wǎng)絡(luò)G=(V,E,W)。社區(qū)開發(fā)者用節(jié)點集合V表示,考慮到開發(fā)者昵稱可能出現(xiàn)重復(fù)的問題,以開發(fā)者注冊郵箱作為網(wǎng)絡(luò)節(jié)點標(biāo)識。開發(fā)者間的協(xié)作關(guān)系用節(jié)點間的關(guān)系集合E表示,通過Python編程抽取開發(fā)者協(xié)作關(guān)系。由于軟件開發(fā)往往是基于舊版本的功能提升或完善,因此,在兩個版本發(fā)布間隔時間內(nèi)針對同一文件進行代碼提交的開發(fā)者視為相互存在協(xié)作行為。兩個開發(fā)者之間的協(xié)作次數(shù)視為連邊的權(quán)重,用邊權(quán)重集合W表示。使用Gephi軟件可視化開發(fā)者協(xié)作網(wǎng)絡(luò),并計算網(wǎng)絡(luò)基本拓?fù)鋮?shù)(見表1)。網(wǎng)絡(luò)構(gòu)建過程如圖1所示。
表1為構(gòu)建的開發(fā)者協(xié)作網(wǎng)絡(luò)整體拓?fù)涮卣?,?jié)點數(shù)為3 982,說明截至本研究時期共計3 982位來自世界各地的開發(fā)者為AngularJS項目貢獻過自己的智慧。平均聚類系數(shù)為0.66,平均路徑長度為4.135,說明該協(xié)作網(wǎng)絡(luò)擁有小世界特性,社區(qū)中開發(fā)者協(xié)作關(guān)系緊密;模塊度為0.593則說明社區(qū)中存在著明顯的社團結(jié)構(gòu)。
表1 開發(fā)者協(xié)作網(wǎng)絡(luò)拓?fù)鋮?shù)
目前的大多數(shù)研究中均是以度或介數(shù)對節(jié)點的重要性進行排序,但社區(qū)內(nèi)開發(fā)者之間相互協(xié)作關(guān)系形成的社團結(jié)構(gòu)(小團體)與子項目的開發(fā)進程存在著顯著相關(guān)性[6],開發(fā)者在團體內(nèi)部和團體之間的交互行為也能夠影響著開發(fā)者的重要性。基于此,將開發(fā)者節(jié)點的局部屬性即網(wǎng)絡(luò)的社團結(jié)構(gòu)考慮進來,參照Guimera等[20]于2005年在生物新陳代謝網(wǎng)絡(luò)的背景下提出的模塊內(nèi)參與度和模塊間參與度進行綜合分析。本文提出如下指標(biāo):
1)節(jié)點的度。度(ki)是指網(wǎng)絡(luò)中與節(jié)點i相連的其他節(jié)點數(shù)量。度大小能夠代表開發(fā)者的協(xié)作廣度,即與之存在協(xié)作關(guān)系的開發(fā)者的個數(shù)。圖2繪制了雙對數(shù)坐標(biāo)下度的累積分布和冪律擬合函數(shù)。擬合優(yōu)度R2=0.949,擬合效果非常好,說明網(wǎng)絡(luò)中存在著較明顯的核心邊緣結(jié)構(gòu),探究網(wǎng)絡(luò)中的核心開發(fā)者具有重要意義。
圖1 開發(fā)者協(xié)作網(wǎng)絡(luò)構(gòu)建過程
圖2 度分布
2)節(jié)點加權(quán)度。加權(quán)度(Ki)是指網(wǎng)絡(luò)中與節(jié)點i相連的所有連邊權(quán)重總和。開源軟件社區(qū)中邊權(quán)重大小能夠代表相連兩個開發(fā)者的協(xié)作深度,即相連開發(fā)者之間的協(xié)作次數(shù)。開發(fā)者加權(quán)度則能夠代表開發(fā)者的總協(xié)作次數(shù),加權(quán)度越大能夠表示開發(fā)者參與項目的積極性越高。
(1)
(2)
5)模塊間參與度:模塊間參與度(pi)用于衡量網(wǎng)絡(luò)中節(jié)點i與其他社團之間的協(xié)作關(guān)系密切程度[21]。開源軟件社區(qū)中,開發(fā)者的模塊間參與度越高表示該開發(fā)者參與其他小團體的數(shù)量越多,所承擔(dān)的小團體之間的“橋梁”作用越重要。式(3)為節(jié)點i的模塊間參與度,NM表示整個網(wǎng)絡(luò)中模塊的個數(shù),kis表示節(jié)點i在模塊s中的度,ki表示節(jié)點i在整個網(wǎng)絡(luò)中的度。
(3)
根據(jù)上述各公式計算網(wǎng)絡(luò)中各節(jié)點的評價指標(biāo),計算結(jié)果如表2所示。
表2 開發(fā)者評價指標(biāo)參數(shù)
已有研究中多采用度大小或介數(shù)中心性大小衡量核心開發(fā)者,本文考慮到開發(fā)者的社團結(jié)構(gòu)屬性,將采用模塊內(nèi)參與度和模塊間參與度兩個指標(biāo)進行衡量。為了與已有研究形成對比,首先分別選取度大小排序、加權(quán)度大小排序、介數(shù)中心性大小排序下的前5位作為最重要的核心開發(fā)者,名單如表3所示。
針對多個評價指標(biāo)組合,如傳統(tǒng)方法中度和介數(shù)中心性的組合、本文提出的模塊內(nèi)參與度和模塊間參與度的指標(biāo)組合方式,本文擬采用基于熵權(quán)法定權(quán)的多屬性決策方法對社區(qū)中有限的開發(fā)者進行重要性排序[22],具體方法如下所述。
社區(qū)中共有3 982個開發(fā)者,可視為存在3 982個決策方案,設(shè)為Q={Q1,Q2,…,Q3 982};4個評價指標(biāo)(度、介數(shù)中心性、模塊內(nèi)參與度、模塊間參與度)構(gòu)成評價指標(biāo)集S={S1,S2,S3,S4}??蓸?gòu)成3 982×4階原始決策矩陣M=(xij)3 982×4。
對原始數(shù)據(jù)進行歸一化處理形成標(biāo)準(zhǔn)決策矩陣N=(rij)3 982×4,其中:成本型指標(biāo)認(rèn)為指標(biāo)數(shù)值越小越重要,效益型指標(biāo)認(rèn)為越大越重要,固定型指標(biāo)認(rèn)為越靠近某固定值越重要。故本文選取指標(biāo)集中的指標(biāo)均為效益型指標(biāo)。接下來采用熵權(quán)法確定指標(biāo)權(quán)重[22],最終得到?jīng)Q策方案的總評價得分:
(4)
由此,可先將指標(biāo)集放在一起計算,按照度(k)、介數(shù)中心性(b)、模塊內(nèi)參與度(z)、模塊間參與度(p)的順序,計算得出原始矩陣M和標(biāo)準(zhǔn)化矩陣N如下:
采用熵權(quán)法計算指標(biāo)權(quán)重,當(dāng)指標(biāo)選取度和介數(shù)中心性時,權(quán)重分別為
wk=0.297,wb=0.703
當(dāng)指標(biāo)選取模塊內(nèi)參與度和模塊間參與度時,權(quán)重分別為
wz=0.571,wp=0.429
基于上述兩種指標(biāo)組合,計算最終評價得分,選取排序前5位作為最重要的核心開發(fā)者,名單如表4所示。
綜上所述,結(jié)合已有研究中的指標(biāo)和本文新提出的指標(biāo),最終識別出的核心開發(fā)者存在一定的相似性,但在重要性排序上存在著較明顯的差別。因此,本文將上述方法識別的結(jié)果均視為核心開發(fā)者,節(jié)點編號分別是:97,632,1 907,2 628,2 756,451,148,2 929,1 905。
表3 度、加權(quán)度、介數(shù)中心性排名前5開發(fā)者
表4 傳統(tǒng)指標(biāo)和考慮社團結(jié)構(gòu)指標(biāo)識別的核心開發(fā)者
借鑒負(fù)載容量模型,探討社區(qū)內(nèi)核心開發(fā)者流失時造成的級聯(lián)效應(yīng)。一方面可以從動態(tài)視角探究核心開發(fā)者的流失對開源軟件社區(qū)穩(wěn)定性的影響,另一方面也能夠借此揭示出開源軟件社區(qū)這種大規(guī)模自組織模式下的社區(qū)成員間的協(xié)作關(guān)系形成機制,更好地為項目管理者提出社區(qū)管理對策建議、規(guī)劃項目開發(fā)進程,促進社區(qū)的創(chuàng)新產(chǎn)出。目前的研究中[23-26],學(xué)者們大都假定網(wǎng)絡(luò)中的節(jié)點存在“正常”和“失效”兩種狀態(tài),即網(wǎng)絡(luò)中各節(jié)點由于其自身屬性問題會存在著一定的負(fù)載容量,當(dāng)節(jié)點受到的負(fù)載大于其自身負(fù)載容量時,節(jié)點便處于“失效”狀態(tài),反之為“正?!睜顟B(tài)。
對于本文而言,開源軟件社區(qū)中的開發(fā)者流動性的特點下,核心開發(fā)者的流失不僅僅會對網(wǎng)絡(luò)造成靜態(tài)效果下的影響,其所承擔(dān)的項目內(nèi)容也將優(yōu)先疏散到社區(qū)中與其存在協(xié)作關(guān)系的開發(fā)者,即工作負(fù)載會在社區(qū)開發(fā)者協(xié)作網(wǎng)絡(luò)的連邊中流動,進而可能會波及更多的開發(fā)者、造成范圍較大的影響,阻礙、延緩項目的開發(fā)進行,甚至導(dǎo)致項目的失敗。為了清晰地闡述這種動態(tài)的級聯(lián)影響過程,本文將作相應(yīng)分析。
圖3 開發(fā)者流失的級聯(lián)效應(yīng)示意
圖3反映了開發(fā)者節(jié)點流失后造成的級聯(lián)效應(yīng):初始階段(圖3a)網(wǎng)絡(luò)中各節(jié)點均處于正常狀態(tài),社區(qū)工作正常穩(wěn)定進行;突然某個時刻(圖3b)節(jié)點2出于自身或外界原因,選擇離開社區(qū),處于“失效”狀態(tài)。原本需要開發(fā)者2負(fù)責(zé)的工作內(nèi)容需要分配給與之存在協(xié)作關(guān)系,參與相同子項目的開發(fā)者(1,3,5,6,11,12)。此時(如圖3c),面對新分配來的工作內(nèi)容,有些開發(fā)者新的工作負(fù)載會大于其負(fù)載容量極限,不堪重負(fù)進入“失效”狀態(tài)(1,4,12)。而這些新“失效”的開發(fā)者的工作內(nèi)容又會繼續(xù)分配給相應(yīng)的開發(fā)者,造成更多的“失效”開發(fā)者8和9,如圖3d所示。
經(jīng)典的負(fù)載容量模型的構(gòu)建主要需要解決以下3個方面的問題:初始負(fù)載的定義、負(fù)載重分配過程和節(jié)點處理負(fù)載的能力[27]?;诖?,本文將從節(jié)點開發(fā)者的初始工作負(fù)荷、節(jié)點開發(fā)者的最大工作負(fù)載容量和節(jié)點開發(fā)者流失后如何影響鄰居節(jié)點三個方面構(gòu)建開源軟件社區(qū)中的負(fù)載容量級聯(lián)失效模型。
開發(fā)者協(xié)作網(wǎng)絡(luò)中,節(jié)點的度大小代表了開發(fā)者的協(xié)作廣度,即與之存在協(xié)作關(guān)系的開發(fā)者個數(shù)。網(wǎng)絡(luò)中的邊則代表了開發(fā)者間的協(xié)作關(guān)系,邊權(quán)重則代表了相連兩個節(jié)點間的協(xié)作深度,即相連兩個開發(fā)者之間協(xié)作的次數(shù)。節(jié)點的加權(quán)度大小能夠綜合考慮該開發(fā)者的協(xié)作廣度和深度,可以基于度模型[23,28]構(gòu)建改進的加權(quán)度負(fù)載容量模型。
1)節(jié)點的初始工作負(fù)荷:加權(quán)度大小能夠代表節(jié)點開發(fā)者的總的協(xié)作次數(shù),加權(quán)度越大節(jié)點的初始工作負(fù)荷也越大,兩者之間存在著一定的關(guān)聯(lián)性。因此,可假設(shè)網(wǎng)絡(luò)中每一節(jié)點的初始工作負(fù)荷為它的加權(quán)度的函數(shù),定義為
(5)
其中,Lj為節(jié)點j的初始工作負(fù)荷大小,Kj為節(jié)點j的加權(quán)度大小,α為可調(diào)參數(shù),控制著不同加權(quán)度節(jié)點上的負(fù)荷差異性。
2)最大負(fù)載容量:通常情況下,節(jié)點處理負(fù)荷的能力均和其初始工作負(fù)荷有關(guān),目前的眾多研究中,節(jié)點的最大負(fù)載容量均和初始工作負(fù)荷存在正比的關(guān)系,定義為
Cj=βLj
(6)
其中,Cj為節(jié)點j的最大負(fù)載容量,β為容量系數(shù),β≥1。
3)負(fù)載重分配原則:當(dāng)節(jié)點開發(fā)者i流失或崩潰后,開發(fā)者i上的工作負(fù)荷則需要重新分配到他的合作伙伴(鄰居節(jié)點)上。通常認(rèn)為負(fù)載重分配原則受到開發(fā)者間的合作深度影響,即兩個開發(fā)者間合作次數(shù)越多,合作關(guān)系越緊密,那么開發(fā)者i流失或崩潰后,開發(fā)者j收到的來自i的工作負(fù)荷越大,定義為
(7)
其中,ΔLji為節(jié)點j收到來自節(jié)點i的額外工作負(fù)荷,wij為節(jié)點i和節(jié)點j之間的連邊權(quán)重。當(dāng)節(jié)點i和節(jié)點j之間連邊權(quán)重占節(jié)點i加權(quán)度的比重越大,節(jié)點j收到來自節(jié)點i的額外工作負(fù)荷也就越大。
當(dāng)開發(fā)者j的鄰居節(jié)點流失或失效后,開發(fā)者j的初始負(fù)荷加上來自失效節(jié)點的額外負(fù)荷大于開發(fā)者j的最大負(fù)載容量時,開發(fā)者j也會隨之崩潰,處于“失效”狀態(tài),反之“正?!?。因此,開發(fā)者j的工作狀態(tài)sj可以表示為
(8)
其中,ΔLj*為節(jié)點j收到的所有失效鄰居節(jié)點的額外負(fù)荷。
本文探究識別的核心開發(fā)者流失后對網(wǎng)絡(luò)的動態(tài)影響,需要對網(wǎng)絡(luò)進行蓄意攻擊,模擬核心開發(fā)者流失,進行仿真分析。開源軟件社區(qū)中,開發(fā)者均是利用自己的空閑時間自發(fā)進行知識貢獻行為。因此,開發(fā)者的最大負(fù)載容量會存在限制。與此同時,開發(fā)者在進行代碼提交時,其修改或提交內(nèi)容都需要被項目維護者進行比較和挑選。項目維護者會挑選出最優(yōu)的內(nèi)容加入到原有項目庫中。因此,被記錄下來的提交次數(shù)均是具備相應(yīng)的工作量的。而開發(fā)者在每次代碼提交時涉及到的文件數(shù)有時并不只是1個,但由于開發(fā)者的空閑時間有限,每次提交所涉及到的知識貢獻量以及開發(fā)者所能承受的最大工作量都不會很大,可對初始工作負(fù)荷中的可調(diào)參數(shù)取值α=1.1。最大負(fù)載容量通常不會比初始負(fù)荷大很多,容量系數(shù)越大,級聯(lián)失效現(xiàn)象越不明顯,擬對容量系數(shù)取值β=1.3。
仿真結(jié)果:核心開發(fā)者的流失勢必會嚴(yán)重破壞網(wǎng)絡(luò)的靜態(tài)結(jié)構(gòu),同時還會造成眾多開發(fā)者隨之“失效”。根據(jù)圖4一次傳播的級聯(lián)效應(yīng)仿真結(jié)果,能夠明顯看出:核心開發(fā)者的流失會導(dǎo)致與之存在協(xié)作關(guān)系的大量開發(fā)者崩潰失效;其中一次傳播失效影響最嚴(yán)重的是編號2756的開發(fā)者,其流失后會導(dǎo)致76位開發(fā)者隨之失效,占據(jù)了其所有合作者數(shù)量的58.9%。該名開發(fā)者是本文所提出的模塊內(nèi)參與度和模塊間參與度指標(biāo)下識別出重要性排序第1的核心開發(fā)者;度排序第1的開發(fā)者97流失后導(dǎo)致54人失效;介數(shù)中心性排序第1,同時也是度和介數(shù)中心性綜合考慮排序第1的開發(fā)者1907,其流失后導(dǎo)致59人失效;加權(quán)度排序第1的開發(fā)者148流失后導(dǎo)致失效的開發(fā)者人數(shù)相對較少,僅有41人,這也是所有核心開發(fā)者中除了451之外導(dǎo)致失效開發(fā)者最少的開發(fā)者,但失效節(jié)點占比卻高達40.6%。
上述結(jié)果可以看出:節(jié)點的加權(quán)度決定了節(jié)點的初始工作負(fù)荷,當(dāng)開發(fā)者節(jié)點加權(quán)度越大時,所承擔(dān)的初始工作負(fù)荷也越大,若該開發(fā)者流失理應(yīng)導(dǎo)致網(wǎng)絡(luò)中多數(shù)的開發(fā)者隨之“崩潰失效”。但是仿真結(jié)果卻可以看出,網(wǎng)絡(luò)中初始工作負(fù)荷最大的開發(fā)者148流失后卻沒有導(dǎo)致最多人數(shù)、最大占比的開發(fā)者隨之“崩潰失效”。究其原因:開發(fā)者148僅少部分存在與之協(xié)作關(guān)系十分緊密的開發(fā)者,這部分的開發(fā)者在148流失后的負(fù)載重分配原則中收到了更多的來自148的額外工作負(fù)荷。而其余與148存在協(xié)作關(guān)系的開發(fā)者可能因其關(guān)系不緊密,收到的額外工作負(fù)荷相對較少。當(dāng)我們考慮了開發(fā)者的社團結(jié)構(gòu)特征后,最重要的開發(fā)者2756流失后造成的最多人數(shù)、最大占比的開發(fā)者隨之崩潰失效??梢郧宄乜闯觯罕M管需要重新分配的工作負(fù)荷沒有最大,但因其與協(xié)作者之間均能夠保持著相對平均的協(xié)作密切程度,所以負(fù)載重分配過程中影響了更多的合作者隨之崩潰失效。
圖4 一次傳播下的級聯(lián)效應(yīng)
圖5 二次傳播下的級聯(lián)效應(yīng)
考慮二次傳播的級聯(lián)效應(yīng)時(見圖5),可以發(fā)現(xiàn)在第二次傳播過程中隨之“崩潰失效”的開發(fā)者人數(shù)較多的分別是編號148導(dǎo)致119人失效,編號2628導(dǎo)致89人失效,編號1905導(dǎo)致88人失效。雖然考慮社團結(jié)構(gòu)的編號2756開發(fā)者在第二次傳播過程中僅導(dǎo)致79人隨之“崩潰失效”,但失效占比中卻是所有核心開發(fā)者中最高的。當(dāng)考慮總失效人數(shù)時,最多的分別是編號148導(dǎo)致160人失效,編號2756導(dǎo)致155人失效,編號2929和2628均導(dǎo)致137人失效,編號1905導(dǎo)致134人失效,但失效人數(shù)總占比最高的仍然是開發(fā)者2756。
可以清晰地看出加權(quán)度大小排序下的核心開發(fā)者在二次傳播中也能夠影響較多的開發(fā)者隨之失效,但占比卻不是最高的。究其原因:一些度大的開發(fā)者之間會存在著相互協(xié)作關(guān)系,當(dāng)發(fā)生二次傳播時波及到的開發(fā)者人數(shù)較多,影響范圍較廣,失效的開發(fā)者也會隨之增多,但是開發(fā)者間的協(xié)作關(guān)系并不緊密,導(dǎo)致失效人數(shù)占比不高。這也說明了社區(qū)知識創(chuàng)造過程中的“同質(zhì)相吸”現(xiàn)象,度大的開發(fā)者之間存在緊密協(xié)作關(guān)系。當(dāng)考慮社團結(jié)構(gòu)所識別出的核心開發(fā)者,即那些既活躍在社團內(nèi)部又游走于其他社團間的開發(fā)者,盡管他們的工作負(fù)荷并不是最大的,但由于與眾多開發(fā)者間均存在緊密協(xié)作關(guān)系,能夠造成極為嚴(yán)重的級聯(lián)失效現(xiàn)象。
綜上所述:擁有較大的工作負(fù)荷、占據(jù)網(wǎng)絡(luò)中重要位置的核心開發(fā)者,如度、介數(shù)較大的開發(fā)者流失后會造成社區(qū)中眾多開發(fā)者隨之“崩潰失效”。核心開發(fā)者間的緊密協(xié)作關(guān)系也導(dǎo)致初始工作負(fù)荷較大的開發(fā)者在二次傳播過程中造成了影響范圍更廣、更深遠的級聯(lián)失效現(xiàn)象??紤]社團結(jié)構(gòu)識別出的核心開發(fā)者,既能占據(jù)其社團內(nèi)部的核心位置,又是其他社團之間的“橋梁、要塞”,這類開發(fā)者盡管沒有承擔(dān)最強的工作負(fù)荷,卻因其相對平均的協(xié)作關(guān)系密切程度,造成了極為嚴(yán)重的級聯(lián)失效現(xiàn)象。
可見,開源軟件社區(qū)自組織演化過程中的“同質(zhì)相吸”現(xiàn)象會導(dǎo)致核心開發(fā)者間存在緊密協(xié)作關(guān)系,倘若出現(xiàn)核心開發(fā)者的流失將會導(dǎo)致極為嚴(yán)重的級聯(lián)失效現(xiàn)象。在社區(qū)發(fā)展過程中,管理者有必要進行相應(yīng)的人為干預(yù)。
為了探究核心開發(fā)者流失造成的級聯(lián)失效現(xiàn)象,本文基于已有指標(biāo)提出了考慮開發(fā)者節(jié)點局部屬性的指標(biāo)體系,基于多屬性決策的方法識別出來核心開發(fā)者,并在此基礎(chǔ)上構(gòu)建了改進的負(fù)載容量模型,仿真模擬了一次傳播和二次傳播下核心開發(fā)者流失造成的級聯(lián)效應(yīng)。得到幾點結(jié)論:1)開源軟件社區(qū)網(wǎng)絡(luò)中存在較明顯的核心邊緣結(jié)構(gòu),核心開發(fā)者之間也存在著緊密協(xié)作關(guān)系,這導(dǎo)致社區(qū)在面對核心開發(fā)者流失時會存在著較為明顯的級聯(lián)失效現(xiàn)象,會嚴(yán)重影響開源軟件社區(qū)的創(chuàng)新產(chǎn)出。2)基于社團結(jié)構(gòu)提出的模塊內(nèi)參與度和模塊間參與度所識別出的核心開發(fā)者不管是在一次傳播還是二次傳播的級聯(lián)效應(yīng)下導(dǎo)致失效的開發(fā)者數(shù)量都相對較多。因此,在往后的研究中,有必要將開發(fā)者的局部屬性考慮進去識別核心開發(fā)者。3)開源軟件社區(qū)中,開發(fā)者的初始工作負(fù)荷和負(fù)載重分配原則對于級聯(lián)效應(yīng)影響較大,特別是二次傳播情況下,初始工作負(fù)荷較大開發(fā)者會造成影響范圍更廣、更深遠的級聯(lián)失效現(xiàn)象。因此,有必要及時制止網(wǎng)絡(luò)中級聯(lián)失效現(xiàn)象的產(chǎn)生,杜絕二次傳播的風(fēng)險。
由此,對社區(qū)在管理運營過程中提出以下幾點建議:在核心開發(fā)者識別上,不能再僅僅依靠傳統(tǒng)指標(biāo)如度、介數(shù)等,有必要將社區(qū)中的社團結(jié)構(gòu)考慮進來。在項目開發(fā)過程中,要重點關(guān)注核心開發(fā)者,特別是那些既能活躍在其社團內(nèi)部又能活躍于其他社團間的開發(fā)者的動態(tài)。當(dāng)出現(xiàn)核心開發(fā)者流失的情況時,應(yīng)及時填補空缺,遏制風(fēng)險的二次傳播。在工作內(nèi)容發(fā)布時,應(yīng)注重各子項目工作量的劃分,時刻關(guān)注社區(qū)內(nèi)部開發(fā)者的工作負(fù)荷分配情況,不能使少數(shù)開發(fā)者承擔(dān)繁重的開發(fā)任務(wù)。管理者也應(yīng)積極推廣項目,吸引更多的新開發(fā)者加入進來,積極鼓勵更多的開發(fā)者參與到核心技術(shù)的開發(fā)過程中去,使社區(qū)形成多核的局面,以此減少核心開發(fā)者之間的協(xié)作關(guān)系,降低級聯(lián)失效的風(fēng)險。
基于上述結(jié)論不難看出:借鑒負(fù)載容量模型,探討社區(qū)內(nèi)核心開發(fā)者流失時造成的級聯(lián)效應(yīng)具有一定的理論意義;將考慮了開發(fā)者局部屬性的社團結(jié)構(gòu)指標(biāo)加入進來識別的核心開發(fā)者相對傳統(tǒng)指標(biāo)也具有更優(yōu)的識別效果。一方面創(chuàng)新性地從動態(tài)視角探討了核心開發(fā)者流失造成的影響,另一方面也是對開源軟件社區(qū)這種大規(guī)模自組織工作模式研究的推進,也有利于項目管理者更好地規(guī)劃項目開發(fā)進程,促進社區(qū)的集體智慧。
然而,本文目前仍然存在著一些不足。在構(gòu)建負(fù)載容量模型時僅僅基于當(dāng)前較為簡單的度模型進行了簡單的改進。仿真分析時,為了簡化討論過程網(wǎng)絡(luò)中所有節(jié)點的容量系數(shù)均取β=1.3,這些都是理想化的,真實系統(tǒng)中每個開發(fā)者節(jié)點的容量系數(shù)并不一定完全相同。因此,模型復(fù)雜化、開發(fā)者流失和容量系數(shù)多樣化這些均是本文后續(xù)研究的深化。