商用項(xiàng)目進(jìn)行開(kāi)源之前,你必須回答的四個(gè)問(wèn)題
譯文對(duì)于任何一家企業(yè)中的開(kāi)源部門來(lái)說(shuō),相當(dāng)常見(jiàn)的一項(xiàng)任務(wù)就是對(duì)內(nèi)部軟件進(jìn)行評(píng)估以考量其是否適合以開(kāi)源形式回饋社會(huì)。而在PayPal公司執(zhí)行這項(xiàng)任務(wù)時(shí),我們發(fā)現(xiàn)有必要利用Danese Cooper建立的一套審查流程對(duì)潛在開(kāi)源項(xiàng)目加以審視,從而為以下四個(gè)問(wèn)題找到答案:
1.與誰(shuí)相關(guān)?
2.我們是否仍在使用?
3.我們是否做出承諾?
4.其在公共樹(shù)結(jié)構(gòu)下是否能夠順利進(jìn)行開(kāi)發(fā)?
今天的文章將著眼于這四個(gè)問(wèn)題,并探討它們?yōu)楹稳绱酥匾?/p>
1.與誰(shuí)相關(guān)?
立足于企業(yè)之外,還有誰(shuí)會(huì)對(duì)這款軟件感興趣?如果沒(méi)有活躍社區(qū)的積極參與,任何開(kāi)源項(xiàng)目都不可能取得成功。如果吸引不到外界的興趣,那么以現(xiàn)有成果為基礎(chǔ)建立活躍社區(qū)的希望也會(huì)變得非常渺茫。一旦依靠勞資關(guān)系維系的項(xiàng)目開(kāi)發(fā)者們逐步離去,必須要有其他人接手其開(kāi)發(fā)及維護(hù),否則我們只是給歷史的垃圾堆增添了一件廢品。
獲得外部反饋意見(jiàn)的方式可謂多種多樣。與來(lái)自其它企業(yè)的同行們交流、撰寫(xiě)博客、在會(huì)議活動(dòng)中進(jìn)行溝通或者發(fā)表演講都是不錯(cuò)的實(shí)現(xiàn)方式。有些人天生具備這種能力,有些人則需要一定程度的引導(dǎo)才能確切表達(dá)自己的意見(jiàn),也有不少人不太擅長(zhǎng)談?wù)撆c自己工作相關(guān)的話題。但在大多數(shù)情況下,員工需要得到企業(yè)的明確授權(quán),告訴他們能夠在外界發(fā)表怎樣的言論。我們發(fā)現(xiàn)對(duì)有此意向的員工進(jìn)行表達(dá)培訓(xùn)能夠很好地解決上述問(wèn)題,當(dāng)然也可以幫助開(kāi)發(fā)人員充實(shí)其博客中的相關(guān)內(nèi)容。
2.我們是否仍在使用?
如果我們已經(jīng)不再使用這款軟件,那么在進(jìn)行開(kāi)源之前總是需要進(jìn)行大量審查。如果我們不再積極開(kāi)發(fā)這款軟件,那么我們幾乎不可能以該項(xiàng)目為核心執(zhí)行進(jìn)一步推動(dòng)或者為其建立社區(qū)。軟件中的某個(gè)獨(dú)立組件中可能存在安全漏洞(或者存在于軟件本身中),這意味著必須有人全程追蹤并加以解決。更不用提其它一些常見(jiàn)任務(wù)的處理工作,具體包括歸類錯(cuò)誤請(qǐng)求、指導(dǎo)新晉貢獻(xiàn)者以及根據(jù)用戶實(shí)際需要調(diào)整任務(wù)處理方式等等。這些工作都需要投入時(shí)間,而作為企業(yè)我們不太可能花費(fèi)大量時(shí)間維護(hù)一款已經(jīng)不再使用的軟件。
不過(guò)***的問(wèn)題在于,對(duì)失敗產(chǎn)品進(jìn)行開(kāi)源會(huì)給企業(yè)聲譽(yù)帶來(lái)影響。如果我們由于一套解決方案無(wú)法解決實(shí)際問(wèn)題而轉(zhuǎn)向其他軟件成果,那么真的很難指望這東西能夠切實(shí)幫助其他人搞定運(yùn)營(yíng)任務(wù)。開(kāi)源社區(qū)不是求助站或者垃圾桶,我們不可能隨便把自己不想要的東西往這里一丟了事。如果企業(yè)回饋給社會(huì)的都是其不想要的軟件,那還不如干脆別打開(kāi)源的主意。
3.我們是否做出承諾?
正如之前所提到,維護(hù)開(kāi)源項(xiàng)目需要投入大量時(shí)間,而具體時(shí)間周期則取決于項(xiàng)目的整體規(guī)模。一般來(lái)講,開(kāi)源項(xiàng)目的維護(hù)時(shí)間一般要低于核心應(yīng)用框架,但其時(shí)間投入仍然相當(dāng)可觀。毫無(wú)疑問(wèn),開(kāi)發(fā)人員及其管理者都會(huì)把時(shí)間視為一種極其寶貴的資源。如果管理者不愿意讓開(kāi)發(fā)人員把時(shí)間耗費(fèi)在項(xiàng)目維護(hù)工作身上,那么項(xiàng)目本身很可能陷入慢性死亡狀態(tài)。
而在敏捷背景之下,大家則可以采取多種不同處理方式。如果我們的流程依賴于功能組件與短期沖刺,那么我們可以通過(guò)一項(xiàng)組件配合一輪沖刺的方式實(shí)現(xiàn)項(xiàng)目維護(hù)。而如果大家選擇基于任務(wù)的開(kāi)發(fā)人員精力調(diào)派方式,則應(yīng)當(dāng)適當(dāng)減少開(kāi)發(fā)人員投入到項(xiàng)目維護(hù)方面的產(chǎn)能消耗。如果大家打算把工作均攤給多位成員,自然會(huì)希望確保了解每個(gè)人具體負(fù)責(zé)流程中的哪些部分——否則任務(wù)將很可能陷入僵局。一部分項(xiàng)目還需要全職社區(qū)技術(shù)人員予以配合。如果這一切在管理者眼中是不合理或者不可行的,那么該項(xiàng)目需要迎接進(jìn)一步審查以考量其是否適合走向開(kāi)源。
4.其在公共樹(shù)結(jié)構(gòu)下是否能夠順利進(jìn)行開(kāi)發(fā)?
是否還有其它與代碼相關(guān)的阻力限制著我們?cè)诠娨曇爱?dāng)中進(jìn)行項(xiàng)目代碼編寫(xiě)工作?如果這些代碼由于同內(nèi)部系統(tǒng)的關(guān)聯(lián)性而無(wú)法進(jìn)行公共開(kāi)發(fā),那么,我們必須對(duì)這種關(guān)聯(lián)性加以隔離、剝離或者模塊化處理。而且,如果相關(guān)流程并不影響該軟件對(duì)外界參與者及使用者的吸引力,那么,大家應(yīng)當(dāng)考慮解耦這種內(nèi)部關(guān)聯(lián)關(guān)系,從而幫助項(xiàng)目本身實(shí)現(xiàn)實(shí)用性。另外,如果沒(méi)有更多項(xiàng)目?jī)?nèi)容需要發(fā)布,那么相關(guān)代碼編寫(xiě)也基本可以叫停。
更重要的是,大家絕不能繼續(xù)以內(nèi)部形式開(kāi)發(fā)軟件——通過(guò)許可將各重要發(fā)行版本發(fā)布在GitHub之上,同時(shí)合理啟用良好的開(kāi)源資源。外部與內(nèi)部開(kāi)發(fā)人員必須能夠參與其中,并圍繞設(shè)計(jì)與開(kāi)發(fā)議案進(jìn)行討論,否則整個(gè)社區(qū)將被徹底架空。這意味著我們需要為社區(qū)提供可供討論的素材,并把技術(shù)決議交給公眾評(píng)判——而不能繼續(xù)依靠企業(yè)內(nèi)部的決策傾向。如果項(xiàng)目團(tuán)隊(duì)不想做這些工作,我們可能需要為其行為提供一些重要指導(dǎo),從而幫助其走上開(kāi)源正軌。
總結(jié)
這四個(gè)問(wèn)題當(dāng)然還不足以涵蓋開(kāi)源過(guò)程中可能出現(xiàn)的全部障礙。任何一家企業(yè)都需要對(duì)項(xiàng)目當(dāng)中可能涉及的各類知識(shí)產(chǎn)權(quán)問(wèn)題做出評(píng)估。另外,我們也必須對(duì)其它類似開(kāi)源項(xiàng)目進(jìn)行研究,確保自己的努力成果不會(huì)與既有方案相重復(fù)。與此同時(shí),項(xiàng)目本身還必須對(duì)企業(yè)自身以及整個(gè)開(kāi)源社區(qū)具備實(shí)際價(jià)值。但總體來(lái)講,這四個(gè)問(wèn)題可以算是一個(gè)良好的對(duì)話起點(diǎn),大家可以利用它們幫助自己過(guò)濾掉那些不適合作為首發(fā)開(kāi)源對(duì)象的軟件方案。
原文標(biāo)題:4 questions to ask before open sourcing a project,作者:Duane O'Brien
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】