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

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