企業(yè)怎樣利用開(kāi)源社區(qū)才能更給力
從計(jì)算機(jī)銷(xiāo)售商到生產(chǎn)企業(yè),幾乎每個(gè)公司都在忙于參與開(kāi)源社區(qū)。許多人失敗了,然后對(duì)于開(kāi)源社區(qū)滿(mǎn)懷失望。Dave Neary 通過(guò)研究那些失敗案例,總結(jié)出一些教訓(xùn),教我們哪些可以做,哪些不應(yīng)該做?,F(xiàn)在,開(kāi)源軟件的社區(qū)開(kāi)發(fā)者,已經(jīng)不再僅僅包含那些穿拖鞋著裝隨意的極客,也有正規(guī)Linux公司的職員。我下面的結(jié)論也都是基于以上事實(shí)。

據(jù)最近一篇關(guān)于貢獻(xiàn)Linux內(nèi)核代碼公司的分析文章得出的結(jié)論,像Novell,IBM,Intel,Nokia和德州儀器等公司都在很正式地參與開(kāi)源軟件的開(kāi)發(fā),LiMo基金會(huì)正鼓勵(lì)其成員參與上游社區(qū)項(xiàng)目。這說(shuō)明,與社區(qū)合作而不是孤立,可以避免數(shù)百萬(wàn)美元打水漂,沒(méi)帶來(lái)什么潛在影響。
社區(qū)開(kāi)發(fā)者的多樣性,對(duì)于開(kāi)源項(xiàng)目的長(zhǎng)期生存能力是非常重要的。當(dāng)然公司放權(quán)后,也很難讓社區(qū)開(kāi)發(fā)者集中于他們自己的項(xiàng)目,或者是影響社區(qū)維護(hù)者的開(kāi)發(fā)方 向。Linux內(nèi)核或者GNOME就是這樣的,大家相互協(xié)作,沒(méi)有人是占據(jù)主導(dǎo)的。Sun和AOL雖然完全采用了社區(qū)開(kāi)發(fā),但是至少和社區(qū)開(kāi)發(fā)者沒(méi)有培養(yǎng) 起一種互助互利的關(guān)系。還有其他許多例子,我們很少聽(tīng)說(shuō)過(guò)公司僅僅實(shí)驗(yàn)性的參與社區(qū)開(kāi)發(fā),然后退回到閉門(mén)造車(chē)去,或取消對(duì)于社區(qū)開(kāi)發(fā)的實(shí)質(zhì)投資。當(dāng)然也有 反面例子,比如Xara,在2005年開(kāi)源了他們針對(duì)Linux的部分主打產(chǎn)品“Xara Xteme”,但是在2006年晚些時(shí)候,又悄悄的放棄了在社區(qū)項(xiàng)目上的所有投資。
到底哪里做錯(cuò)了?哪些是公司轉(zhuǎn)向社區(qū)開(kāi)發(fā)投資戰(zhàn)略最普遍而且最致命的錯(cuò)誤?如何避免?而且避免這些不一定保證成功,只是讓你可以免于像他們那樣失敗。
從哪里開(kāi)始呢?
對(duì)開(kāi)源懷有過(guò)高期望,然后不顧一切的迅速盲目地參與開(kāi)源項(xiàng)目,是一般公司最容易犯而且致命的錯(cuò)誤。
開(kāi)源軟件的發(fā)展歷史之中,充滿(mǎn)了商業(yè)公司對(duì)于社區(qū)開(kāi)發(fā)最初體驗(yàn)的失望故事。一些技術(shù)主管不明白為什么社區(qū)項(xiàng)目不接受他們小組花費(fèi)數(shù)月開(kāi)發(fā)出來(lái)的功能,管理小組甚至期望在他們產(chǎn)品發(fā)布的時(shí)候,那些公司外部的開(kāi)發(fā)者可以迅速跟上。Chris Grams曾經(jīng)把此類(lèi)問(wèn)題歸結(jié)為鋸木匠湯姆的社區(qū)參與模型,公司總是希望別人可以幫他們把工作都做了。首先要確保你不會(huì)誤入這些陷阱。
建設(shè)好社區(qū)軟件需要耐心,有時(shí)你把自己的所有東西都做好了,但你還有些東西你沒(méi)辦法做好。
所以,從哪里開(kāi)始?在參與社區(qū)開(kāi)發(fā)之前,你首先得好好想想你究竟想得到什么?開(kāi)源是否能讓你的產(chǎn)品增長(zhǎng),讓你的發(fā)布渠道得以拓寬,最終獲取業(yè)內(nèi)領(lǐng)先的地位? 你是否需要在你的平臺(tái)上引入一些系統(tǒng)開(kāi)發(fā)者?你是否需要為了降低成本而在你的產(chǎn)品里采用現(xiàn)有的開(kāi)源項(xiàng)目,或是自己開(kāi)發(fā),以便它能滿(mǎn)足你的需要?所有這些目 標(biāo),或者所有那些參與開(kāi)源項(xiàng)目的原因,需要特定的策略和工具來(lái)裁定是否成功。事實(shí)上,你成功與否取決于你的目標(biāo)。
有兩種普遍的情形可以選擇,一種是公司加入現(xiàn)有的開(kāi)源社區(qū),另一種是自己建立一個(gè)與你的產(chǎn)品相關(guān)的社區(qū)。
加入社區(qū)
加入社區(qū),并贏得信任和聲譽(yù)都需要耐心。在參與社區(qū)工作之前,首先你需要理解社區(qū)的組織結(jié)構(gòu)。誰(shuí)是領(lǐng)導(dǎo)人,哪些是他們的優(yōu)先項(xiàng)目?如果社區(qū)文化不符合你的商業(yè)目的,肯定會(huì)在最初就影響你加入社區(qū)的決定。
如果你發(fā)現(xiàn)可以加入這個(gè)項(xiàng)目的工作,而且項(xiàng)目的目標(biāo)與你的一致(至少不是完全不一樣),那你就應(yīng)該開(kāi)始辛苦工作了。比如,HP公司很早就開(kāi)始支持Linux,當(dāng)然也作為支持他們自有產(chǎn)權(quán)Unix-HPUX的花費(fèi)。十年以后,HP賣(mài)出的Linux服務(wù)器占到所有Linux服務(wù)器的40%。相反,Sun公司在2005年決定建立一個(gè)獨(dú)立的的社區(qū),用以發(fā)布GPL兼容(Linux內(nèi)核的許可證)的開(kāi)源版本OpenSolaris。從一開(kāi)始到Sun被Oracle收購(gòu),Sun都沒(méi)有建立起實(shí)際獨(dú)立的開(kāi)發(fā)者社區(qū)。在2010年,Oracle實(shí)際上關(guān)閉了OpenSolaris項(xiàng)目。
當(dāng)你決定參與的時(shí)候,你已經(jīng)選擇了你要工作的項(xiàng)目。接下來(lái),最重要的決定是你們公司誰(shuí)來(lái)參與這個(gè)項(xiàng)目,這經(jīng)常被高層所忽視。這些參與項(xiàng)目工程師的行為代表的 是你們公司。他們的工作包括:獲取項(xiàng)目維護(hù)者的信任,引導(dǎo)項(xiàng)目的開(kāi)發(fā)路線(xiàn),確保他們的工作被接受,保證你們公司的商業(yè)目的。
參與項(xiàng)目人選是非常重要的。就像前GNOME基金會(huì)的前執(zhí)行主管Stormy Peters曾經(jīng)寫(xiě)的:公司不是個(gè)人。換句話(huà)說(shuō),公司從來(lái)不能作為軟件開(kāi)發(fā)社區(qū)的成員,但是個(gè)人可以。公司可以成為項(xiàng)目制度上的伙伴,可以參考Beatles和 Karl Fogel之間的例子,金錢(qián)買(mǎi)不來(lái)感情(或者說(shuō)社區(qū)的支持)。
現(xiàn)在你有一些工程師在參與社區(qū)項(xiàng)目,然后呢?對(duì)于工程師參與行為,Havoc Pennington在1999年寫(xiě)了一些非常好的建議。簡(jiǎn)而言之,就是“在羅馬,就按照羅馬人那樣做事”。
許多社區(qū)經(jīng)常有他們行為規(guī)范的文檔,比如Linux內(nèi)核和GNOME模塊項(xiàng)目,有名為HACKING的文件放在源代碼文檔,還有郵件列表準(zhǔn)則,開(kāi)發(fā)者都可以參考。對(duì)于大多數(shù)社區(qū)來(lái)說(shuō),這些規(guī)范可以概括為“順著慣例走,不要打破它”。GNOME項(xiàng)目的創(chuàng)始人和Novell公司開(kāi)發(fā)平臺(tái)的副總裁,Miguel de Icaza寫(xiě)了一篇文章來(lái)解釋這些準(zhǔn)則背后的原因。
你應(yīng)該盡力避免公司干涉開(kāi)發(fā)者與其他開(kāi)發(fā)者的的交流。這最終只會(huì)在你的項(xiàng)目里產(chǎn)生工程師害羞綜合癥。
通過(guò)各種方式,讓你們公司年長(zhǎng)的社區(qū)開(kāi)發(fā)工程師帶小組里新的成員,教他們社區(qū)的這些流程,但要避免這些年長(zhǎng)者成為守門(mén)人,將你的小組和社區(qū)隔絕開(kāi)來(lái)。因?yàn)檫@會(huì)導(dǎo)致一些意向不到的問(wèn)題,比如當(dāng)你的“守門(mén)人”離職以后,社區(qū)發(fā)現(xiàn)其他人提交的代碼與社區(qū)的規(guī)范不符。
成立一個(gè)社區(qū)
現(xiàn)在轉(zhuǎn)到第二個(gè)情景,如何建立一個(gè)社區(qū)。如果你決定以標(biāo)準(zhǔn)的自由軟件許可證發(fā)布你的軟件,首先應(yīng)該決定是否讓這個(gè)項(xiàng)目成為社區(qū)項(xiàng)目,并開(kāi)放到哪種程度。
Simon Phipps寫(xiě)了一篇關(guān)于開(kāi)源軟件項(xiàng)目成長(zhǎng)起來(lái)的不同社區(qū)類(lèi)型。他把社區(qū)開(kāi)發(fā)者分為這幾類(lèi):核心開(kāi)發(fā)者,非核心的插件開(kāi)發(fā)者,負(fù)責(zé)發(fā)布和配置但不涉及開(kāi)發(fā)的整合人員,***就是軟件的用戶(hù)。所有這些成員有不同的需求,有不同的對(duì)待方式。
如果你想圍繞你的項(xiàng)目建立起一個(gè)社區(qū),下面有些你應(yīng)該遵照的非常好的準(zhǔn)則:
- 控制權(quán):如采用一些規(guī)則,來(lái)確保你來(lái)決定哪些代碼可以加入你的產(chǎn)品代碼,但你將會(huì)失去社區(qū)項(xiàng)目的很多優(yōu)勢(shì)。還有些例子,主要希望控制進(jìn)入核心產(chǎn)品的代碼版權(quán),或者確保只有你的雇員才可以修改主分支上的核心產(chǎn)品代碼。為了維護(hù)核心代碼的版權(quán),這是很好的做法。這當(dāng)然會(huì)阻礙社區(qū)核心開(kāi)發(fā)者的進(jìn)入。但并不妨礙其他類(lèi)型的成員,比如插件開(kāi)發(fā)者或整合人員。
- 進(jìn)入的障礙:社區(qū)開(kāi)發(fā)者要避免設(shè)置一些障礙:使用不常見(jiàn)的工具,復(fù)雜費(fèi)解的bug報(bào)告處理方式、功能需求提交方式、補(bǔ)丁接受方式和在開(kāi)發(fā)之前合法的簽證方式。
- 工具和架構(gòu)體系:確保讓你的用戶(hù)有機(jī)會(huì)將他們的工作成果分發(fā)到其他用戶(hù)。無(wú)論是通過(guò)某個(gè)模塊,或者通過(guò)Gitorious、Bazaar之類(lèi)代碼控制平臺(tái)都可以。讓項(xiàng)目里的代碼修改成為一項(xiàng)社交行為。
- 社區(qū)處理流程:創(chuàng)建這樣一個(gè)環(huán)境,沒(méi)有人會(huì)被認(rèn)為是二等公民。將如何獲取權(quán)限的方式文檔化,比如管理bug報(bào)告的權(quán)限、將代碼提交到主分支的權(quán)限或者項(xiàng)目網(wǎng)站的編輯權(quán)限。
- 相應(yīng)預(yù)算:投入適當(dāng)?shù)馁Y源--建立社區(qū)需要時(shí)間和精力,那意味著投資--主要是一些人力資源。
讓一個(gè)人成為管理者,處理社區(qū)的日常事務(wù)。成立一個(gè)由10個(gè)人左右恒定的核心法人小組,用來(lái)進(jìn)行決策及保障各方面的利益。就像PostgreSQL的Josh Berkus"如何殺死你的社區(qū)(中文版)"的報(bào)告。如果社區(qū)成員覺(jué)得被怠慢了,他們就會(huì)離去。
發(fā)布社區(qū)項(xiàng)目就像發(fā)布一項(xiàng)新的產(chǎn)品,吸引一個(gè)社區(qū)開(kāi)發(fā)者比用戶(hù)更久而且更難。跟公司為新產(chǎn)品追蹤SAC一樣,吸引一個(gè)開(kāi)發(fā)者的花費(fèi)(DAC)是衡量你的社區(qū)發(fā)展是否良好的關(guān)鍵因素。
開(kāi)發(fā)者有很多項(xiàng)目可以選擇,如果協(xié)作成為規(guī)范以后,他們會(huì)加速進(jìn)入項(xiàng)目。這時(shí)你得經(jīng)??紤]參與者的經(jīng)驗(yàn),并衡量外部開(kāi)發(fā)者的價(jià)值。
一幅清晰而又矚目的藍(lán)圖,兼有很多的開(kāi)發(fā)機(jī)會(huì),比較低的參與門(mén)檻,可以幫助降低吸引開(kāi)發(fā)者的成本,也可以降低吸引新用戶(hù)和付費(fèi)客戶(hù)的成本。
避免非常規(guī)的模式
如果采取了那些***策略,想抄近路,但社區(qū)的那些非常規(guī)模式證明***策略是錯(cuò)誤的。如果***策略背后的原因被誤解了,你不會(huì)得到你想要的結(jié)果。就像太平洋的貿(mào)易崇拜運(yùn)動(dòng),僅僅建了很多飛機(jī)場(chǎng),沒(méi)有多大的市場(chǎng),就希望飛機(jī)會(huì)降落。調(diào)味料終究是調(diào)味料,加太多就會(huì)毀了整盤(pán)菜。
歸納起來(lái):當(dāng)你看到下面的一些模式在你的社區(qū)或者你的合伙人出現(xiàn)的時(shí)候,你應(yīng)該去著手應(yīng)對(duì)它們。下面的模式都是很普遍而且有誘惑性的,因?yàn)樗鼈兙褪撬^的***策略,但不合時(shí)宜。每一條都會(huì)削弱社區(qū)的健康。
這些你應(yīng)該避免的非常規(guī)模式有:
1. 控制和命令 - 社區(qū)成員之間是合伙人的關(guān)系。而公司之于產(chǎn)品則是控制關(guān)系。當(dāng)你嘗試把公司的這種關(guān)系放到一個(gè)你想發(fā)展成為社區(qū)軟件的產(chǎn)品中時(shí),導(dǎo)致的結(jié)果只能是冷淡的回 應(yīng),因?yàn)槠渌瞬幌氤蔀槎裙瘛n?lèi)似的,加入一個(gè)你沒(méi)有控制權(quán)的社區(qū)是很有挑戰(zhàn)性的。有時(shí)你為了擴(kuò)大影響,不得不用控制權(quán)來(lái)交換。
2. 水冷卻器 - 當(dāng)你團(tuán)隊(duì)過(guò)多的忙于你們的私人業(yè)務(wù)時(shí),社區(qū)其他成員也許會(huì)懷疑你們的動(dòng)機(jī)和工作優(yōu)先權(quán)。在公開(kāi)的郵件列表、論壇或者其他公開(kāi)可讀的地方時(shí),你應(yīng)當(dāng)允許你的雇員和公司外部的人工作進(jìn)度是一致的。
3. 無(wú)意義的討論(Bikeshed) - 為了一個(gè)相對(duì)很小的決定,卻需要經(jīng)過(guò)長(zhǎng)時(shí)間的討論。當(dāng)你感覺(jué)到社區(qū)成員正在拖你的后腿的時(shí)候,你應(yīng)該知道什么結(jié)束討論,然后開(kāi)始干活。
4. 黑洞 - 有時(shí)雇傭一個(gè)社區(qū)里面已有的開(kāi)發(fā)者是很有誘惑力的,因?yàn)樗麄儞碛心阆雲(yún)⑴c項(xiàng)目的能力。但是當(dāng)心,當(dāng)你雇傭社區(qū)開(kāi)發(fā)者的時(shí)候,社區(qū)可能會(huì)變得更糟。因?yàn)樗麄儽旧砭褪窃谏鐓^(qū)工作的,他們的工作本來(lái)是沒(méi)有多少利益動(dòng)機(jī)的。
5. 曲奇舔食者 - 想象一下,一個(gè)孩子有很多的曲奇餅干,但是吃完之前他想留下***一塊。所以他從盤(pán)子里拿出其中的一塊,然后經(jīng)常舔一下,確保其他人不會(huì)吃掉它。在社區(qū)項(xiàng)目 里也會(huì)有類(lèi)似的問(wèn)題 - 那些主導(dǎo)社區(qū)的成員經(jīng)常把那些關(guān)鍵功能保留給他們自己開(kāi)發(fā),從而剝奪了其他成員做貢獻(xiàn)的好機(jī)會(huì)。這就會(huì)有些人貢獻(xiàn)過(guò)多,有些人餓死。在開(kāi)發(fā)路線(xiàn)表里給其他 人留一些任務(wù)。你應(yīng)該清楚你們想做什么,哪些你們不想做。
快樂(lè)的耕耘你們的社區(qū)
社區(qū)軟件開(kāi)發(fā)會(huì)成為你們產(chǎn)品很好的助推器,也是很好的加分經(jīng)歷。在已有的社區(qū)項(xiàng)目上工作可以節(jié)省時(shí)間和金錢(qián),幫助你們比其他方式更快更好地推出產(chǎn)品。原來(lái)做 產(chǎn)品時(shí),是雙選題--“自己做或者買(mǎi)別人的”,現(xiàn)在已經(jīng)完全變成三選題--“自己做、買(mǎi)別人的或者分享別人的”。如果你是在 Android,MeeGo,Linaro還是Qt上做開(kāi)發(fā),你肯定會(huì)理解社區(qū)開(kāi)發(fā)是很重要的。當(dāng)你擁抱開(kāi)源運(yùn)動(dòng)以后,你會(huì)發(fā)現(xiàn)投資資源變寬了,你的聲譽(yù) 與日俱增,你已經(jīng)培養(yǎng)起了給與與的良性關(guān)系,所有人都是贏家。而這所有的關(guān)鍵點(diǎn)是,你應(yīng)該把社區(qū)所有成員當(dāng)做你們產(chǎn)品開(kāi)發(fā)的合伙人。
避免那些危險(xiǎn)的誘惑,投入適當(dāng)?shù)臅r(shí)間和精力,你最終會(huì)得償所愿的。就像園丁耕耘他們的植物,使用適當(dāng)?shù)姆柿?、工具和資源,待到春暖時(shí),百花就會(huì)盛開(kāi)。
【編輯推薦】
- 建立開(kāi)源社區(qū)開(kāi)發(fā)創(chuàng)新機(jī)制
- 深度報(bào)道:中國(guó)Linux開(kāi)源社區(qū)緩慢崛起
- 開(kāi)源社區(qū)是如何運(yùn)作的——KDE篇
【責(zé)任編輯:李晶 TEL:(010)68476606】