特別聲明
本文擁有創(chuàng)作共用授權(quán)之相同方式共享授權(quán)4.0版國(guó)際許可協(xié)議(Creative Commons Attribution ShareAlike 4.0 International License)授權(quán)許可。 開(kāi)源之道獨(dú)立精心翻譯分享,歡迎同道中人商討。
01
—
創(chuàng)建一個(gè)開(kāi)源項(xiàng)目
一旦企業(yè)已經(jīng)參與到開(kāi)源社區(qū)足夠長(zhǎng)時(shí)間,而且也建立了一定的聲譽(yù),那么這個(gè)時(shí)候就有了創(chuàng)建自己的開(kāi)源項(xiàng)目的資格了。處于此階段的企業(yè)由于參與了開(kāi)源,也已經(jīng)意識(shí)到從開(kāi)放的協(xié)作中可以獲得的益處。那么就會(huì)考慮將專(zhuān)有的項(xiàng)目開(kāi)源出來(lái),社區(qū)也許會(huì)用得著。另外一個(gè)常見(jiàn)做法是從頭開(kāi)始創(chuàng)建新的開(kāi)源項(xiàng)目,并從一開(kāi)始就受益于外部開(kāi)發(fā)人員之間的協(xié)作。
本文旨在幫助那些已經(jīng)熟悉開(kāi)源的企業(yè),他們希望學(xué)習(xí)和了解更多信息,用以啟動(dòng)他們自己的開(kāi)源項(xiàng)目。全文會(huì)帶著讀者完成整個(gè)開(kāi)源的過(guò)程:從覺(jué)得開(kāi)源什么、到預(yù)算和法律的考量等等,非常細(xì)致的各個(gè)方面。讀者你可能覺(jué)得創(chuàng)建開(kāi)源項(xiàng)目相對(duì)比較陌生,但是要知道,Google 、IBM 、FaceBook 、Twitter 、微軟等公司已經(jīng)開(kāi)源了很多項(xiàng)目了,他們?cè)缫呀?jīng)為我們開(kāi)辟好了開(kāi)源這條道路。按照本文所提供的建議和提示做,你一定不會(huì)走偏。
02
—
為什么要?jiǎng)?chuàng)建開(kāi)源項(xiàng)目?
讀者你所在的公司有一萬(wàn)個(gè)理由去開(kāi)啟一個(gè)開(kāi)源項(xiàng)目?;蛟S是想加速創(chuàng)新、又或者是加快上市速度、亦或是收集新的創(chuàng)意、還是為了增強(qiáng)互操作性或事實(shí)上的標(biāo)準(zhǔn)而希望雇傭有天分的開(kāi)發(fā)者、以及收集多種多樣的觀(guān)點(diǎn)、再就是希望能夠生產(chǎn)出更好的代碼和更棒的產(chǎn)品,等等??偠灾_(kāi)源好處多多。
以上種種好處,都是建立在貴司使用和貢獻(xiàn)開(kāi)源項(xiàng)目所應(yīng)得的,但是一個(gè)更富戰(zhàn)略意義的開(kāi)源是應(yīng)該去創(chuàng)建自己的開(kāi)源項(xiàng)目。
無(wú)論是從頭創(chuàng)建的項(xiàng)目還是已有的項(xiàng)目,將其開(kāi)源,是希望能夠在社區(qū)找到付出與接納的感覺(jué),這樣不僅可以進(jìn)一步建立公司在開(kāi)源社區(qū)的聲譽(yù),而且可以讓公司在吸引人才方面更具吸引力,當(dāng)然還有能夠在所貢獻(xiàn)的項(xiàng)目中突顯自身的影響力。能夠讓自身的代碼開(kāi)放,供大家公開(kāi)討論是非常不錯(cuò)的起點(diǎn),也可以帶來(lái)更多的益處,因?yàn)檫@是吸引合作伙伴、供應(yīng)商、以及用戶(hù)等公司外部的生態(tài)的途徑。
通過(guò)將公司的代碼和開(kāi)發(fā)實(shí)踐開(kāi)放,從而讓外部的人們來(lái)使用和貢獻(xiàn),那么公司就是真正意義上的擁抱開(kāi)放式創(chuàng)新,利用開(kāi)源來(lái)將自己的業(yè)務(wù)最大化?;陂_(kāi)源許可證之下發(fā)布代碼,允許任何人來(lái)貢獻(xiàn)、審視、改進(jìn)現(xiàn)有項(xiàng)目,這種開(kāi)放式的協(xié)作開(kāi)發(fā)方法是目前構(gòu)建軟件默認(rèn)的方式,也是經(jīng)過(guò)實(shí)際驗(yàn)證的技術(shù)創(chuàng)新動(dòng)力。
其實(shí),無(wú)論你身處哪個(gè)行業(yè),金融服務(wù)、醫(yī)療保健、物流運(yùn)輸、零售、航空和客運(yùn)、道路和橋梁等等不一而足,都面臨同樣的問(wèn)題,這些企業(yè)當(dāng)然希望能夠通過(guò)提供應(yīng)用和技術(shù)來(lái)為他們的客戶(hù)提供核心價(jià)值,但是事實(shí)上,他們?cè)跇?gòu)建自己的服務(wù)的時(shí)候,會(huì)依賴(lài)大量的代碼和軟件,而這些非業(yè)務(wù)的代碼和軟件對(duì)于這些組織來(lái)說(shuō)并沒(méi)有任何的競(jìng)爭(zhēng)力,即體現(xiàn)出一定的差異來(lái)。那么將這些所依賴(lài)的,又不是核心業(yè)務(wù)的代碼開(kāi)放出來(lái),可以為這些項(xiàng)目的繼續(xù)增長(zhǎng)以及創(chuàng)新提供進(jìn)一步的機(jī)會(huì)和可能性。
“無(wú)論公司雇傭了多少聰明的員工,而總是還會(huì)有更加聰明的人沒(méi)有招進(jìn)來(lái)。不過(guò)我們發(fā)現(xiàn)了一種利用公司外部聰明的人的做法,那就是參與到開(kāi)源去,我們先分享我們的代碼,然后會(huì)發(fā)現(xiàn)收獲的更多,那些外部的聰明提交的想法真是棒極了!”
– Jared Smith, Capital One 開(kāi)源社區(qū)經(jīng)理
企業(yè)之所以選擇開(kāi)源,是當(dāng)他們想往前積極的推進(jìn)項(xiàng)目的時(shí)候,公司人手緊張,希望通過(guò)開(kāi)源,能夠讓工作進(jìn)度加快,并希望和其他人協(xié)作來(lái)完成軟件的實(shí)現(xiàn),在降低了成本的同事,還改進(jìn)了他們的產(chǎn)品。可謂一舉多得。
開(kāi)源項(xiàng)目提供的自由協(xié)作–甚至是同一行業(yè)內(nèi)相互競(jìng)爭(zhēng)的友商——也因?yàn)橛泻芏嗟娜藚⑴c,可以加速項(xiàng)目的開(kāi)發(fā)。通過(guò)緊密的合作,開(kāi)發(fā)者們可以公開(kāi)的分享,收獲大量的反饋,并共同構(gòu)建可擴(kuò)展,高效和高質(zhì)量的代碼。

03
—
什么時(shí)候創(chuàng)建開(kāi)源項(xiàng)目?
貴司選擇從頭開(kāi)始創(chuàng)建一個(gè)開(kāi)源項(xiàng)目,還是將已有的項(xiàng)目開(kāi)源,要根據(jù)自身的實(shí)際情況而定。不過(guò)無(wú)論哪種情況,貴司首先要在開(kāi)源軟件的使用和對(duì)現(xiàn)有開(kāi)源項(xiàng)目的貢獻(xiàn)有一定的實(shí)際成果,因?yàn)橹挥凶约菏情_(kāi)源軟件的實(shí)際使用者和消費(fèi)者,才能懂得如何利用外部的項(xiàng)目以及開(kāi)發(fā)人員來(lái)構(gòu)建自身的產(chǎn)品,而且已經(jīng)參與了開(kāi)源,不僅能夠提升在開(kāi)源社區(qū)的影響力,也能夠?qū)﹂_(kāi)源的文化有一定程度的了解。但是一旦在開(kāi)源社區(qū)中站穩(wěn)了腳跟,對(duì)其開(kāi)發(fā)流程、溝通方式、文化習(xí)慣等了如執(zhí)掌的時(shí)候,就應(yīng)該“盡早”且“不間斷”的啟動(dòng)一些自身的項(xiàng)目。

04
—
從哪里開(kāi)始?
或許你決定創(chuàng)建一個(gè)新的項(xiàng)目是因?yàn)槟闼龅降募夹g(shù)問(wèn)題是你自己短時(shí)間內(nèi)無(wú)法解決的,又或者是你找不到一個(gè)想加入的項(xiàng)目能夠滿(mǎn)足你想要的,不管怎么樣,從哪里開(kāi)始,沒(méi)有絕對(duì)的答案,總而言之,就是你需要一個(gè)解決問(wèn)題的項(xiàng)目,然而又從現(xiàn)實(shí)中無(wú)法找到滿(mǎn)意的,那么就去創(chuàng)建一個(gè)。
對(duì)于企業(yè)來(lái)說(shuō),考慮開(kāi)源項(xiàng)目則會(huì)多一重考量,那就是回答——“為什么要開(kāi)源?”,最好是準(zhǔn)備好一大堆問(wèn)題,對(duì)于你的公司來(lái)說(shuō)什么是重要的?一定要重視起來(lái)這個(gè)問(wèn)題,企業(yè)開(kāi)源項(xiàng)目一定要有充足的理由去做。否則不如不做。
“我以為對(duì)于企業(yè)來(lái)講,考慮好新的開(kāi)源項(xiàng)目能夠?qū)崿F(xiàn)什么目標(biāo)是至關(guān)重要的,企業(yè)必須考慮項(xiàng)目對(duì)于社區(qū)的價(jià)值,外部開(kāi)發(fā)者的意義,以及自身可以獲得什么樣的結(jié)果。然后,還必須去理解在社區(qū)需要做的所有的事情,以正確的方式去看待法律、治理、基礎(chǔ)設(shè)施、創(chuàng)建社區(qū)等等,這些都是我經(jīng)常和大家提到的,想要開(kāi)源自己的項(xiàng)目,這些都非常的重要?!?
– John Mertic, Linux基金會(huì)項(xiàng)目管理總監(jiān)
項(xiàng)目啟動(dòng),包括項(xiàng)目的編碼部分,是不應(yīng)該讓企業(yè)成為該項(xiàng)目的權(quán)威的。更何況,開(kāi)源本身就是希望有一大波來(lái)自全球的技術(shù)人員來(lái)幫助企業(yè)解決問(wèn)題的。對(duì)于企業(yè)來(lái)講,如果不是關(guān)鍵業(yè)務(wù)的代碼,那么將之作為開(kāi)源的備選是非常不錯(cuò)的選擇。無(wú)論怎樣,作為發(fā)起的企業(yè),應(yīng)該積極的進(jìn)行使用和維護(hù)。這些代碼一旦被其它企業(yè)所采用,形成商業(yè)上的依賴(lài),那么就會(huì)有持續(xù)不斷的反饋,如修復(fù) bug 、打補(bǔ)丁、甚至是開(kāi)發(fā)新的功能。
Facebook 開(kāi)源出來(lái)的很多項(xiàng)目均是自己內(nèi)部正在使用的項(xiàng)目,F(xiàn)acebook極力的推動(dòng)正在生產(chǎn)中的代碼開(kāi)源,這也就意味著,正是由于Facebook的規(guī)模,說(shuō)明了這些項(xiàng)目是經(jīng)過(guò)了實(shí)際的考驗(yàn)的和驗(yàn)證的,F(xiàn)acebook貢獻(xiàn)給社區(qū)的是專(zhuān)業(yè)級(jí)別的。還有另外一件重要的事情是,我們Facebook使用這些項(xiàng)目,所以不希望這些項(xiàng)目被遺棄或者不被支持,F(xiàn)acebook的工程師們太需要他們了?!?
?– Christine Abernathy, Facebook 開(kāi)源開(kāi)發(fā)者布道師
另外需要考慮的一個(gè)問(wèn)題就是,貴司所開(kāi)發(fā)的項(xiàng)目是否是獨(dú)一無(wú)二的,亦或是其它公司因?yàn)橛龅筋?lèi)似的問(wèn)題已經(jīng)開(kāi)發(fā)了類(lèi)似的項(xiàng)目。那么就要問(wèn)問(wèn):此開(kāi)源項(xiàng)目是否是貴司很重要的業(yè)務(wù)?貴司是否會(huì)作為公司的策略而進(jìn)行支持和管理?是否有用戶(hù)在尋求類(lèi)似的問(wèn)題解決方法?如果這些問(wèn)題的答案都是肯定的話(huà),那么就表明這個(gè)項(xiàng)目是非常有意義的。
還有,作為項(xiàng)目主管的你還要決定是否打算將項(xiàng)目捐贈(zèng)給中立的、非營(yíng)利性的組織,換句話(huà)說(shuō),你是否會(huì)將自己親手打造的項(xiàng)目,從具有絕對(duì)控制權(quán)的位置上退下來(lái)。和以往的回答一樣,我們給出的答案是這取決于你自己,以及你想要達(dá)到何種目的。
“你之所以去開(kāi)源一個(gè)項(xiàng)目,大約是意識(shí)到潛在項(xiàng)目中的內(nèi)容對(duì)于貴司來(lái)說(shuō)不是特別的重要,但是你又不樂(lè)意放棄控制權(quán),期望還能控制它未來(lái)的走向。這些都沒(méi)有關(guān)系的,相信你明白了當(dāng)其他開(kāi)發(fā)者參與到項(xiàng)目中時(shí),隨著項(xiàng)目的發(fā)展和壯大,你自己會(huì)做出明智的決定的。所以,簡(jiǎn)單的平衡一下利弊,就開(kāi)源吧!”?
?– John Mertic, Linux基金會(huì)項(xiàng)目管理總監(jiān)

05
—
規(guī)劃項(xiàng)目
一旦你啟動(dòng)了自己的開(kāi)源計(jì)劃,那么接下來(lái)就要考慮很多細(xì)節(jié)性的內(nèi)容,從而將此開(kāi)源的計(jì)劃變成現(xiàn)實(shí)的成果。那么現(xiàn)在就讓我們考慮下如何按部就班的實(shí)現(xiàn),首當(dāng)其沖的就是決定發(fā)布或捐贈(zèng)那些代碼。
決定發(fā)布或捐贈(zèng)那些代碼
對(duì)于開(kāi)源一個(gè)項(xiàng)目來(lái)說(shuō),你首要決定的就是從下面二者之間作出抉擇:
1、貴司自己來(lái)創(chuàng)建、發(fā)布、維護(hù)項(xiàng)目的方方面面
2、捐贈(zèng)項(xiàng)目給現(xiàn)有的中立基金會(huì)來(lái)維護(hù)和管理
如果說(shuō)是在考慮將貴司現(xiàn)成的項(xiàng)目開(kāi)源,則需要考慮另外的一個(gè)問(wèn)題:是將項(xiàng)目所有的代碼都開(kāi)源了呢?還是只開(kāi)源部分內(nèi)容?
要做此決定,請(qǐng)不妨退后一步來(lái)考量,對(duì)于代碼來(lái)說(shuō)你腦海中的目標(biāo)是什么?
“作為 Facebook 的工程師決定要開(kāi)源一個(gè)項(xiàng)目的時(shí)候,會(huì)琢磨很多事情。但是首先需要確定的是這幾件事:這個(gè)項(xiàng)目將對(duì) Facebook 公司以外的開(kāi)發(fā)人員有用嗎?且這個(gè)項(xiàng)目將會(huì)是變革性的嗎?這是我們可以展示的東西嗎?以及是否將會(huì)有一個(gè)圍繞此項(xiàng)目建立的社區(qū),維護(hù)此項(xiàng)目的人能否為社區(qū)提供支持?”
– Christine Abernathy, Facebook 開(kāi)源開(kāi)發(fā)者布道師
舉例來(lái)說(shuō),你或許只是打算在非核心業(yè)務(wù)的應(yīng)用程序吸引一些有新鮮見(jiàn)解的開(kāi)發(fā)者,又或許只是想找到系統(tǒng)監(jiān)控應(yīng)用的探測(cè)日志的更優(yōu)算法,相比較將產(chǎn)品的整個(gè)項(xiàng)目開(kāi)源,你可能更加的傾向于將涉及到算法的那部分代碼給開(kāi)源了。這樣可謂是一舉兩得,既能獲得社區(qū)其他人的貢獻(xiàn),又能幫助到和你遇到相似問(wèn)題的人們,然而最為重要的,所開(kāi)源的部分也不會(huì)波及到你的核心業(yè)務(wù)。
從頭開(kāi)啟一個(gè)項(xiàng)目并維護(hù)全部的控制權(quán),也會(huì)讓你擁有監(jiān)督的權(quán)力,也會(huì)讓你根據(jù)需要來(lái)打磨項(xiàng)目,以及擁有為正在做貢獻(xiàn)的開(kāi)發(fā)者們賦予自由和控制的權(quán)力,從而讓他們能夠更好的完成工作。
相比較而言,將項(xiàng)目捐贈(zèng)給基金會(huì)是完全不同的體驗(yàn)。它意味著你放棄一些控制權(quán),需要交接這些權(quán)力給其他的維護(hù)者和管理員。這些代碼可能對(duì)于貴司來(lái)說(shuō)已經(jīng)過(guò)時(shí),但可能對(duì)于其它公司還是有用處的,因?yàn)閷?duì)于用戶(hù)來(lái)講,這中間是有一定的利基存在的。如此這些代碼,貴司可能不會(huì)花過(guò)多的時(shí)間去維護(hù)它,但是開(kāi)源社區(qū)還是非常歡迎的,而且交給開(kāi)源社區(qū),可能會(huì)發(fā)展出一個(gè)長(zhǎng)久的項(xiàng)目來(lái)。當(dāng)然有時(shí)候貴司所開(kāi)源的代碼是相當(dāng)重要的,這也沒(méi)有問(wèn)題了,你為項(xiàng)目找到了一個(gè)中立的環(huán)境,可以吸引更多的參與者,并發(fā)展出一個(gè)廣泛的生態(tài)系統(tǒng)。
以上而言都是可行的選擇,但是千萬(wàn)不要去做一些讓人看起來(lái)很不舒服的事情,如你所捐贈(zèng)的項(xiàng)目是沒(méi)有用的、不再使用的、你本身對(duì)它也沒(méi)有任何興趣的,而你只是希望社區(qū)去維護(hù)它。不要心存什么僥幸心理,想讓那些過(guò)時(shí)的項(xiàng)目通過(guò)開(kāi)源社區(qū)來(lái)重新獲得活力。如果你的項(xiàng)目沒(méi)那么的重要,你捐贈(zèng)出來(lái),則會(huì)讓開(kāi)源界對(duì)你失去信任,那樣的話(huà),即使你以后在貢獻(xiàn)出好的項(xiàng)目來(lái),這些開(kāi)發(fā)者們也不會(huì)對(duì)你產(chǎn)生任何的興趣。對(duì)于這些高傲的開(kāi)發(fā)者來(lái)說(shuō),你的項(xiàng)目只是在浪費(fèi)他的時(shí)間,這一定不是你想看到的。
“假如你今年創(chuàng)立了三個(gè)開(kāi)源項(xiàng)目,而且它們貨真價(jià)實(shí),那么就會(huì)被好的社區(qū)所吸引,進(jìn)而生產(chǎn)出高價(jià)值的項(xiàng)目,這要比一年創(chuàng)建10個(gè)開(kāi)源項(xiàng)目強(qiáng)太多了。誠(chéng)懇的說(shuō),開(kāi)源社區(qū)是一個(gè)重視質(zhì)量勝過(guò)一切的地方,開(kāi)源社區(qū)不在乎數(shù)量,而且擁有自我過(guò)濾優(yōu)秀項(xiàng)目的天然屬性。假如你創(chuàng)建了十個(gè)糟糕的項(xiàng)目,你不會(huì)有任何的吸引力。你唯一的選擇就是開(kāi)源優(yōu)秀的項(xiàng)目,別無(wú)他路!”
- Guy Martin
06
—
創(chuàng)建開(kāi)源項(xiàng)目
構(gòu)建業(yè)務(wù)場(chǎng)景
在已經(jīng)完成了一個(gè)業(yè)務(wù)場(chǎng)景之后啟動(dòng)開(kāi)源項(xiàng)目是一個(gè)絕佳的時(shí)機(jī),正如和市面上的其它產(chǎn)品一樣將之打入市場(chǎng),那么業(yè)務(wù)場(chǎng)景的實(shí)現(xiàn)就是指日可待的。當(dāng)然了,項(xiàng)目還需要管理層的認(rèn)同,因?yàn)閺墓芾淼慕嵌鹊某霭l(fā),需要搞清楚幾樣事情:為什么要開(kāi)源?目標(biāo)是什么?需要多少預(yù)算?是否有清晰的產(chǎn)品路線(xiàn)圖?需要開(kāi)放那些知識(shí)產(chǎn)權(quán)?以及那些代碼開(kāi)源?哪些代碼不開(kāi)源?
分配資源
構(gòu)建完業(yè)務(wù)場(chǎng)景之后,你還需要決定一些必要的資源,其中包括能夠貢獻(xiàn)到項(xiàng)目的開(kāi)發(fā)者的時(shí)間。開(kāi)發(fā)者的時(shí)間在項(xiàng)目初始階段和企業(yè)內(nèi)部開(kāi)發(fā)所花費(fèi)的時(shí)間是類(lèi)似的。額外考慮的是開(kāi)源之后的,為初期的開(kāi)發(fā)者提供資源來(lái)讓他們?cè)谛律鐓^(qū)中幫助新來(lái)的趕上進(jìn)度,如時(shí)間、材料等。當(dāng)然還有法律團(tuán)隊(duì)也需要資源來(lái)參與到創(chuàng)建開(kāi)源項(xiàng)目中來(lái),因?yàn)楦?jìng)爭(zhēng)對(duì)手也可能參與近來(lái)。市場(chǎng)的投入是必須的了,這樣才可能確保項(xiàng)目開(kāi)源之后的支持和宣傳。
另外還需要為項(xiàng)目的啟動(dòng)和維護(hù)所支撐的基礎(chǔ)設(shè)施考慮預(yù)算,其中包括:項(xiàng)目托管和源代碼版本控制站點(diǎn),(當(dāng)然這個(gè)可以選擇如 GitHub 這樣的第三方專(zhuān)門(mén)的站點(diǎn)),以及缺陷跟蹤、其它必須的工具等。
測(cè)試代碼質(zhì)量
作為工程師的你,對(duì)于在開(kāi)源項(xiàng)目中所涉及到的代碼考量肯定是完備性和成熟度,肯定是在計(jì)劃之前就優(yōu)先做的事情。你打算確保代碼擁有優(yōu)質(zhì)的形態(tài),正如原先我們所提到的,其實(shí)糟糕的代碼并不是導(dǎo)致開(kāi)源社區(qū)產(chǎn)生信用危機(jī)的原因。
要小心那些誘人的陷阱,比如苛求完美的代碼。如果你認(rèn)為代碼必須是完美無(wú)缺的,那么你的工作將永遠(yuǎn)不會(huì)開(kāi)始。承認(rèn)當(dāng)下的盡力而為,然后在未來(lái)慢慢改善。當(dāng)然你還需要解決另外一些問(wèn)題:一定要確保開(kāi)源的代碼中不會(huì)包含帶有商業(yè)機(jī)密的代碼注釋?zhuān)蛘呤撬接械慕涌?,以及不適合公開(kāi)的內(nèi)容,切記要不要將這些東西帶入到社區(qū)中來(lái)。
確保項(xiàng)目是解決了某一具體問(wèn)題
當(dāng)你通過(guò)一些傳統(tǒng)的市場(chǎng)分析等手段,看到那些正在為自己的IT問(wèn)題尋找答案時(shí),并親身驗(yàn)證了你的項(xiàng)目對(duì)于他們是很有用處的,那么你的項(xiàng)目就算是走入正常軌道了。那么你一定希望確保這些人找對(duì)了項(xiàng)目,而且會(huì)積極的參與進(jìn)來(lái),因?yàn)橹挥羞@樣項(xiàng)目才可能成功?,F(xiàn)在你明白找到用戶(hù)們所面臨問(wèn)題的重要性了吧?一定要去做好這方面的工作,仔細(xì)的進(jìn)行研究,并積極的去詢(xún)問(wèn)。要去參加一些開(kāi)源的會(huì)議,和開(kāi)發(fā)者們進(jìn)行積極的探討,要去領(lǐng)會(huì)他們提到的問(wèn)題以及對(duì)項(xiàng)目有何期望。
還有一種情況,那就是如果你發(fā)現(xiàn)已經(jīng)有人啟動(dòng)了類(lèi)似的項(xiàng)目,解決的問(wèn)題也極為相似,那么這時(shí)你該考慮加入到他們的項(xiàng)目中去,而不是再去重復(fù)制造輪子。更有甚者,你可能發(fā)現(xiàn)一個(gè)極為類(lèi)似的項(xiàng)目早就存在了,而且擁有很強(qiáng)大的團(tuán)隊(duì),競(jìng)爭(zhēng)對(duì)手在驅(qū)動(dòng)著項(xiàng)目的進(jìn)展,那么你也要想辦法參與進(jìn)去,因?yàn)榉e極的協(xié)作在開(kāi)源社區(qū)中是很重要的一部分。
在開(kāi)源項(xiàng)目上,和競(jìng)爭(zhēng)對(duì)手一起工作這件事要極為重視。如果貴司所啟動(dòng)的開(kāi)源項(xiàng)目而且競(jìng)爭(zhēng)對(duì)手也參與進(jìn)來(lái)了,那么你就有責(zé)任去構(gòu)建良好的協(xié)作環(huán)境和擁有良好的意愿,這樣對(duì)于項(xiàng)目本身是有益處的,當(dāng)然要在領(lǐng)導(dǎo)力上下功夫,而不是簡(jiǎn)單的追隨。
為團(tuán)隊(duì)做咨詢(xún)
以上即是我們所考慮到的所有事項(xiàng),技術(shù)團(tuán)隊(duì)和和管理團(tuán)隊(duì)做出最終的決定,并指導(dǎo)整體的流程,以確保項(xiàng)目最終的成功。開(kāi)發(fā)者和IT人員可以表明哪里以及何時(shí)對(duì)協(xié)作變得有用。
“如果我們找不到我們正在尋找的東西,或者如果我們發(fā)現(xiàn)過(guò)去發(fā)揮作用的東西在我們前進(jìn)的過(guò)程中不再適用于我們,我們將啟動(dòng)一個(gè)開(kāi)源項(xiàng)目。有時(shí)這是出于性能的原因。有時(shí)候,這只是成本原因,又或是供應(yīng)商鎖定的原因。有的時(shí)候是我們正在將一大堆基礎(chǔ)架構(gòu)移植到更為前沿的技術(shù)上,有的時(shí)候是我們過(guò)去使用的一些傳統(tǒng)供應(yīng)商沒(méi)有跟上節(jié)奏,或者不愿意在云或容器化環(huán)境中運(yùn)行他們的軟件?!?/i>
?- Jared Smith, Capital One 開(kāi)源社區(qū)經(jīng)理
07
—
啟動(dòng)開(kāi)源項(xiàng)目
經(jīng)過(guò)了上述的考量,你已經(jīng)對(duì)自己的項(xiàng)目計(jì)劃做到了胸有成竹,那么接下來(lái)要做的事情就是稍微正式一些的對(duì)項(xiàng)目進(jìn)行設(shè)置,當(dāng)然先從法律部門(mén)開(kāi)始,其中包括諸如代碼掃描、清理工作,以確保代碼是100%安全使用,為項(xiàng)目選擇合適的開(kāi)源許可協(xié)議。規(guī)劃項(xiàng)目治理以在未來(lái)平穩(wěn)的運(yùn)營(yíng)它,這部分的工作包括:建立適當(dāng)?shù)幕A(chǔ)設(shè)施、準(zhǔn)備好開(kāi)源的代碼,最后是向社區(qū)傳達(dá)項(xiàng)目啟動(dòng)的消息,然后就是持續(xù)的更新文檔。
法律審核
項(xiàng)目可能發(fā)生的最糟糕的事情之一就是社區(qū)對(duì)代碼庫(kù)的法律清白缺乏信任。確保您發(fā)布的代碼具有明確的許可證和出處是非常重要的。完整的法律審查通常有助于確保獲得貢獻(xiàn)的內(nèi)容將被社區(qū)中的其他人接受。這個(gè)審查的一個(gè)重要方面是驗(yàn)證貴公司是否有權(quán)發(fā)布所有代碼。您的法律審查應(yīng)包括商標(biāo)盡職調(diào)查和注冊(cè)。請(qǐng)注意,如果您將項(xiàng)目貢獻(xiàn)于基金會(huì),請(qǐng)確保您在開(kāi)源您的代碼庫(kù)之前與商標(biāo)戰(zhàn)略形成一致。
您還需要為您的項(xiàng)目選擇許可證。記錄所有許可證或知識(shí)產(chǎn)權(quán)的要求是很重要的。知識(shí)產(chǎn)權(quán)政策可以成為創(chuàng)建的一個(gè)有用的文件,以明確所有許可證和貢獻(xiàn)要求。此外,請(qǐng)確保您的代碼具有嵌入每個(gè)文件中的許可證標(biāo)題或 SPDX 許可證標(biāo)識(shí)符。另一個(gè)最佳實(shí)踐是在每次提交時(shí)都要求開(kāi)發(fā)者原產(chǎn)地證書(shū)(DCO)‘簽名’,以幫助改進(jìn)代碼的出處。例如,GitHub 已經(jīng)構(gòu)建了一個(gè)要求用于所有存儲(chǔ)庫(kù)的工具,該工具可在 https://probot.github.io/apps/dco 上獲取。
熟悉常見(jiàn)的開(kāi)源許可證及其交易是很重要的。一些有明確的專(zhuān)利授權(quán),一些有防御性的終止權(quán)利,一些保護(hù)用戶(hù)的權(quán)利,一些提供措施條款,有些只是在您的行業(yè)中更簡(jiǎn)單或更普遍地被接受。您還需要為了您的依賴(lài)性考慮您的軟件可能與其相結(jié)合或與之整合的其他代碼庫(kù)中正在使用的許可證。
除了軟件源代碼之外,還應(yīng)考慮項(xiàng)目其他方面的許可證要求。如果您預(yù)計(jì)需要公司對(duì)專(zhuān)利授權(quán)的承諾,或者稍后重新授權(quán)項(xiàng)目的能力,那么您可能需要查看一些更常見(jiàn)的貢獻(xiàn)者許可協(xié)議(通常稱(chēng)為 CLA)。并非所有的CLAs(貢獻(xiàn)者許可協(xié)議)都是相似的,所以仔細(xì)考慮這個(gè)選項(xiàng)。還要注意,-CLAs(貢獻(xiàn)者許可協(xié)議)可能成為參與的障礙,因?yàn)殚_(kāi)發(fā)人員通常需要經(jīng)過(guò)艱苦的審批流程才能簽署協(xié)議。
您的項(xiàng)目也可能產(chǎn)生不是軟件的交付物。如果您的項(xiàng)目正在生成文件,請(qǐng)討論您是否應(yīng)該為文件使用特定的許可證。例如,許多開(kāi)源項(xiàng)目將開(kāi)源許可證用于軟件,而將 Creative Commons license( 創(chuàng)作共用授權(quán))用于文件。此外,有些項(xiàng)目尋求創(chuàng)建可能由其他人以各種方式實(shí)施的規(guī)范。這些項(xiàng)目應(yīng)考慮使用規(guī)格許可證的選項(xiàng)。其中一個(gè)例子就是開(kāi)放容器倡議(OCI),它使用了 OWFa 1.0 版 —— 專(zhuān)利專(zhuān)用許可證,以及他們正在構(gòu)建的開(kāi)源軟件實(shí)施的 Apache 許可證2.0版。
許可證的另一個(gè)常見(jiàn)問(wèn)題是在著作權(quán)許可和許可證許可之間進(jìn)行選擇。著作權(quán)通常用于描述需要相互共享的許可證,并且通常試圖保證用戶(hù)接收他們被提供的軟件的源代碼的權(quán)利。許可證許可傾向于使其他人無(wú)需履行下游義務(wù)即可輕松參與和分享貢獻(xiàn)。這特別有利于軟件部分,這些軟件部分要求軟件生產(chǎn)商能夠基于開(kāi)源代碼庫(kù)分發(fā)專(zhuān)有軟件,而不泄露其變更。
每種許可方式都有其優(yōu)點(diǎn)和缺點(diǎn),但要注意分裂項(xiàng)目的潛在風(fēng)險(xiǎn),這是要求互用性或?yàn)楦鞣N供應(yīng)商解決方案提供可移植性的軟件的一個(gè)特殊問(wèn)題。如果商業(yè)解決方案通過(guò)了社區(qū)創(chuàng)建的測(cè)試或一組要求,那么通常會(huì)通過(guò)創(chuàng)建允許使用項(xiàng)目商標(biāo)的一致性程序來(lái)解決此問(wèn)題。預(yù)先考慮這一點(diǎn)將有助于預(yù)示您的法律審查和項(xiàng)目計(jì)劃。(有關(guān)開(kāi)源法律問(wèn)題和注意事項(xiàng)的更多信息,請(qǐng)參閱我們推薦的閱讀清單。)
總結(jié)一下,法律上的審核流程可以包括下面幾步:
[1]請(qǐng)慎重思考開(kāi)源對(duì)于貴公司的知識(shí)產(chǎn)權(quán)影響
[2]確保完全符合開(kāi)源許可證
[3]為源代碼的發(fā)布選擇一個(gè)開(kāi)源的許可證,要對(duì)項(xiàng)目所有許可證要求作出清晰的說(shuō)明
[4]如果需要一份貢獻(xiàn)者意向書(shū)的話(huà),也請(qǐng)考慮
[5]考慮社區(qū)可能提供的非軟件輸出和適當(dāng)?shù)脑S可證,例如文檔和規(guī)范
[6]考慮所有和商標(biāo)有關(guān)的事情
[7]決定是否還有其他因素可以納入您的生態(tài)系統(tǒng)計(jì)劃中,例如一致性測(cè)試
技術(shù)審核
技術(shù)審核是驗(yàn)證源代碼中不可以包含其它內(nèi)部代碼的依賴(lài),或者是開(kāi)發(fā)實(shí)踐,當(dāng)然更加不能含有第三方的其它公司的代碼,這些都是在項(xiàng)目發(fā)布時(shí)絕不允許出現(xiàn)的。
你要確保所要開(kāi)源的項(xiàng)目中沒(méi)有任何部分是違反了其它公司的諸如專(zhuān)利之類(lèi)的知識(shí)產(chǎn)權(quán)的。有大量的以專(zhuān)利訴訟為“飯碗”的人在瞅著這一塊了,他們就是以發(fā)現(xiàn)人們非法使用他人的專(zhuān)利而生存,所以你要特別的小心,這對(duì)于貴司來(lái)說(shuō)是一個(gè)不容忽視的大問(wèn)題,必須要在項(xiàng)目啟動(dòng)之前就將之消除。為此,公司可以選擇一些專(zhuān)門(mén)的掃描工具來(lái)進(jìn)行掃描,確保代碼是”干凈的”。確保添加了諸如許可協(xié)議、版權(quán)申明、以及該項(xiàng)目是干什么的、如何使用等文檔。
技術(shù)審核須包括驗(yàn)證所有的許可協(xié)議、版權(quán)聲明、以及是否有私有的代碼注釋未清理,其步驟包括:
[1]將嚴(yán)重依賴(lài)但不能公開(kāi)的組件去掉
[2]請(qǐng)?zhí)峁┪臋n和案例
[3]刪除內(nèi)部的注釋、引用、以及其他內(nèi)部的代碼等等
[4]確保代碼風(fēng)格的一致
[5]在源代碼文件中更新版權(quán)所有的信息
[6]在源代碼文件中更新許可證信息
[7]在倉(cāng)庫(kù)的根目錄中添加許可證文件
這些資源是與TODO(公開(kāi)對(duì)話(huà),開(kāi)放式開(kāi)發(fā))小組 – Linux基金會(huì)的專(zhuān)業(yè)開(kāi)源程序網(wǎng)絡(luò)小組合作創(chuàng)建的。特別感謝那些貢獻(xiàn)自己的時(shí)間和知識(shí)來(lái)制作這些綜合指南的開(kāi)源項(xiàng)目經(jīng)理。參與的公司包括Autodesk,Comcast,Dropbox,F(xiàn)acebook,Google,Intel,Microsoft,Netflix,Oath(Yahoo + AOL),Red Hat,Salesforce和Samsung。要了解更多信息,請(qǐng)?jiān)L問(wèn)?todogroup.org。我們邀請(qǐng)您在GitHub上下載、傳播,如果可以請(qǐng)積極的參與這些指南。
08
—
開(kāi)始創(chuàng)建開(kāi)源項(xiàng)目
治理
在項(xiàng)目正式啟動(dòng)之前,你必須為項(xiàng)目治理定義好所必要的技術(shù)需求。所謂的項(xiàng)目治理,意指項(xiàng)目的策略、發(fā)布、方向、以及開(kāi)發(fā)優(yōu)先級(jí)等需要作出決策的流程。決策的制定必須是公開(kāi)和開(kāi)放的,從而能夠確保所有的參與者均能夠了解項(xiàng)目的變化,并幫助項(xiàng)目保持永久的透明度。另外,關(guān)于項(xiàng)目治理還可以考慮一下解決爭(zhēng)端的路徑。
對(duì)于項(xiàng)目治理的主體來(lái)說(shuō),在項(xiàng)目的早期建立起參與的標(biāo)準(zhǔn)是非常重要的。諸如特性和缺陷如何跟蹤、代碼如何提交、發(fā)布流程如何管理之類(lèi)的重要決定是需要很正式的規(guī)定的。
關(guān)于如何運(yùn)營(yíng)和維護(hù)項(xiàng)目的一些工具和介紹,請(qǐng)移步,參閱文章公司如何創(chuàng)建開(kāi)源項(xiàng)目辦公室。
“你需要確保人們將一些事情做好,從而保證項(xiàng)目邁向成功。你還要注意:不要將項(xiàng)目的業(yè)務(wù)部分和技術(shù)部分混為一談,它們分別需要不同的領(lǐng)導(dǎo)力。如果你忽視任何一部分,都會(huì)導(dǎo)致不良的后果——項(xiàng)目發(fā)展停滯不前。你不可能讓一個(gè)外行人做出最佳的決定。技術(shù)人員獲得業(yè)務(wù)部門(mén)的幫助會(huì)如虎添翼,成功的幾率就會(huì)更大?!?/i>
-John Mertic, Linux基金會(huì)項(xiàng)目管理總監(jiān)
技術(shù)流程
在開(kāi)源項(xiàng)目正式啟動(dòng)之前,創(chuàng)建標(biāo)準(zhǔn)的發(fā)布流程來(lái)規(guī)劃定期的發(fā)布代碼事宜,對(duì)于項(xiàng)目的維護(hù)者變更和改進(jìn)代碼是非常有幫助的。一個(gè)良好的規(guī)劃應(yīng)該被良好的定義,在細(xì)節(jié)上見(jiàn)功夫,這無(wú)論是開(kāi)發(fā)社區(qū)還是業(yè)務(wù)部門(mén)均是有益處的。
至于多久發(fā)布則要取決于你對(duì)社區(qū)的期望。如果項(xiàng)目是企業(yè)很重視的,而且你希望打造出相當(dāng)實(shí)力的產(chǎn)品,你或許可以每年發(fā)布2次。如果項(xiàng)目的范圍較小,而且也更為敏捷,且你嘗試從社區(qū)獲得一些零碎的內(nèi)容,或許你考慮每周、每月發(fā)布一次都是可以的。規(guī)劃的關(guān)鍵在于社區(qū)必須能夠根據(jù)事情定義出時(shí)間線(xiàn)來(lái),如對(duì)項(xiàng)目支持力度的了解、同時(shí)還要為用戶(hù)提供他們需要的和期望的。
而且要根據(jù)社區(qū)本身的反饋來(lái)進(jìn)行一些微調(diào),發(fā)布的太過(guò)頻繁,又或者發(fā)布的過(guò)于緩慢,均不是最佳選擇,要審視自己的流程而定。重要的是一致性、可預(yù)測(cè)性、以及可見(jiàn)性。
領(lǐng)導(dǎo)力角色
在項(xiàng)目正式開(kāi)源之前,對(duì)于領(lǐng)導(dǎo)力角色的設(shè)置是非常之重要的一步。不同的項(xiàng)目意味著不同的事情。如果你啟動(dòng)的將會(huì)是一個(gè)由眾多企業(yè)參與的多個(gè)公司的項(xiàng)目,那么項(xiàng)目會(huì)需要更加正式的治理,如設(shè)立治理委員會(huì)、亦或是其他的管理小組。如果是較為單一的公司項(xiàng)目,則可以簡(jiǎn)化一些,如設(shè)立技術(shù)委員會(huì)從技術(shù)的角度來(lái)監(jiān)督開(kāi)源項(xiàng)目的各項(xiàng)內(nèi)容。技術(shù)委員會(huì)的組成主要包括技術(shù)領(lǐng)導(dǎo)和社區(qū)經(jīng)理,社區(qū)經(jīng)理的角色主要是向管理團(tuán)隊(duì)報(bào)告關(guān)于項(xiàng)目進(jìn)展和項(xiàng)目需求的最新信息。只要技術(shù)成員和管理人員認(rèn)為合適,法律團(tuán)隊(duì)也可以隨時(shí)被引入。
你的最高級(jí)別的架構(gòu)智囊團(tuán)一定是屬于領(lǐng)導(dǎo)力角色的,當(dāng)然,還有那些對(duì)代碼了如執(zhí)掌的工程師們,這些人共同在一起,擔(dān)任技術(shù)領(lǐng)導(dǎo)角色的委員會(huì)成員要對(duì)項(xiàng)目有一個(gè)愿景,項(xiàng)目的走向是何方,以及開(kāi)發(fā)者社區(qū)的支持程度等??偠灾?,這些人就是參與項(xiàng)目規(guī)劃必須的角色。
作為開(kāi)源項(xiàng)目領(lǐng)導(dǎo)者角色的職責(zé)是為貴司做出代碼的貢獻(xiàn),進(jìn)而確保和董事會(huì)成員、股東、以及受知識(shí)產(chǎn)權(quán)委托的人是站在一條線(xiàn)上的。你必須確保他們是一致的,但是,你仍然要考慮潛在的負(fù)債、風(fēng)險(xiǎn)、等諸如導(dǎo)致項(xiàng)目失敗的問(wèn)題,不要輕視這點(diǎn) “?
?– John Mertic, Linux基金會(huì)項(xiàng)目管理總監(jiān)
基礎(chǔ)設(shè)施
只要是業(yè)內(nèi)人士都知道,你要啟動(dòng)一個(gè)軟件項(xiàng)目,一定要為它準(zhǔn)備好代碼倉(cāng)庫(kù)。也就是能夠讓貢獻(xiàn)者們?nèi)旌虿婚g斷的貢獻(xiàn)代碼的基礎(chǔ)設(shè)施。很多項(xiàng)目都托管在著名的 GitHub 或 GitLab 上,當(dāng)然也有使用諸如 Gerrit 來(lái)自己進(jìn)行搭建。你可以根據(jù)自己的實(shí)際情況進(jìn)行選擇,但是請(qǐng)記住,你所選擇的代碼倉(cāng)庫(kù)一定是易于讓開(kāi)發(fā)者們參與和認(rèn)同的。選擇平臺(tái)、開(kāi)設(shè)賬戶(hù)、為代碼準(zhǔn)備好空間、開(kāi)啟工作流、接下來(lái)就是“見(jiàn)證奇跡的時(shí)刻”。
缺陷、問(wèn)題、特性等跟蹤通常也是項(xiàng)目基礎(chǔ)設(shè)施規(guī)劃的一部分,你打算為貢獻(xiàn)者們提供舒心悅目的地方,從而讓他們能夠心無(wú)旁騖的去撰寫(xiě)解決實(shí)際問(wèn)題的代碼、以及添加非常有用的酷炫功能,還有自動(dòng)化的構(gòu)建流程、測(cè)試系統(tǒng)的流程等這些都是必須的,甚至更進(jìn)一步你需要保證項(xiàng)目的流程平滑,在你的GitHub 倉(cāng)庫(kù)周邊添加掃描和監(jiān)測(cè)代碼來(lái)保證代碼的質(zhì)量,這些都是應(yīng)該去做的。
網(wǎng)站
接下來(lái)就是創(chuàng)建公司中立的網(wǎng)站以及項(xiàng)目的維基百科頁(yè),網(wǎng)站應(yīng)提供社區(qū)的一些信息或?qū)ふ衣窂?,如關(guān)于項(xiàng)目的文檔、下載代碼的鏈接等等,當(dāng)然網(wǎng)站也要盡可能的提供更多的細(xì)節(jié),如項(xiàng)目的領(lǐng)導(dǎo)者、范圍、用戶(hù)和貢獻(xiàn)者、治理方式、等等。
溝通交流渠道
為社區(qū)提供溝通交流的渠道對(duì)于人們尋問(wèn)和咨詢(xún)問(wèn)題是很重要的通道,你得想法將這些用于溝通的工具集成到整個(gè)的開(kāi)發(fā)流程當(dāng)中來(lái)(如當(dāng)項(xiàng)目有請(qǐng)求、代碼提交、錯(cuò)誤日志等等任務(wù)時(shí)有及時(shí)的通知),你還得提供供大家討論話(huà)題的論壇,以及社區(qū)成員們彼此能夠快速的相互提問(wèn),這些對(duì)于項(xiàng)目的發(fā)展都是至關(guān)重要的。對(duì)于溝通交流渠道來(lái)說(shuō),所有重要的事就是實(shí)時(shí)的幫助項(xiàng)目邁向成功。
其中一個(gè)可以考慮使用的工具是 Slack,它在線(xiàn)集成團(tuán)隊(duì)項(xiàng)目管理和及時(shí)聊天的平臺(tái),在此平臺(tái)用戶(hù)還可以訪(fǎng)問(wèn)和共享文件、組織工作流、信息檢索等等。然而,Slack是一家專(zhuān)有的公司所提供的工具,不僅閉源,而且可能需要花費(fèi)一定的費(fèi)用才能使用它全部的功能。當(dāng)然,開(kāi)源而且更為古老的工具也是可供選擇的,如 IRC、Gitter.im 等等,這里舉一些實(shí)際的例子,Hyperledger 項(xiàng)目使用的溝通系統(tǒng)叫做:Rocket.Chat,Rocket.Chat 是完全開(kāi)源且和 Slack 非常相似的工具。另外,如果你需要較為酷炫的論壇系統(tǒng),Discourse 會(huì)是一個(gè)不錯(cuò)的選擇,不僅完全是開(kāi)源的項(xiàng)目,而且還有幾家不錯(cuò)的服務(wù)托管提供商。
在選用溝通交流系統(tǒng)的時(shí)候,謹(jǐn)記幾點(diǎn)內(nèi)容:
1、不能有任何形式的鎖定
2、需要花費(fèi)多少錢(qián)
3、在未來(lái)遷移到新的系統(tǒng)的難易程度
隨著項(xiàng)目的成功,你的社區(qū)必然是人氣暴漲,這個(gè)時(shí)候就需要你去不斷適應(yīng)新的溝通渠道,舉個(gè)例子,就在不久的過(guò)去,新聞組還是很多開(kāi)源項(xiàng)目的首選,但是現(xiàn)在成了保守的代名詞了??傊?,溝通渠道要迎合人們的習(xí)慣與口味。
“Autodesk 在其GitHub的賬戶(hù)上集中管理了近190多個(gè)各式各樣的開(kāi)源項(xiàng)目,要知道這190個(gè)項(xiàng)目是AutoDesk的至少14個(gè)部門(mén)所開(kāi)源的項(xiàng)目,通過(guò)使用來(lái)自Twitter的開(kāi)源工具,Autodesk 讓這14個(gè)部門(mén)使用同一個(gè)視圖、同一個(gè)入口,從公司的角度來(lái)講,確保所有人看到正在啟動(dòng)的項(xiàng)目?jī)?nèi)容是非常重要的,而且一定要記得要讓所有人能夠使用同一個(gè)入口來(lái)提交問(wèn)題和建議?!?
?– Gy Martin, Autodesk 開(kāi)放總監(jiān)
啟動(dòng)和維護(hù)
終于走到這一步了,不過(guò)還需要持續(xù)的努力,不可以有懈怠的情緒。在經(jīng)歷了上述那么多的規(guī)劃、準(zhǔn)備、以及多方面的審核、各方面的實(shí)操之后,你可以將項(xiàng)目正式的啟動(dòng),那么你的開(kāi)源項(xiàng)目從此就就進(jìn)入了維護(hù)的階段。你將通過(guò)開(kāi)放的規(guī)劃、開(kāi)放的溝通、以及逐步完善的至頂向下的基礎(chǔ)設(shè)施,來(lái)完善已經(jīng)創(chuàng)建的治理、技術(shù)流程,以及介于它們二者之間的。
一旦上述所有重要的事情都均已落實(shí),那么就到了向全世界開(kāi)放項(xiàng)目的時(shí)刻了!也是恭迎開(kāi)發(fā)者的開(kāi)放時(shí)刻。當(dāng)那些對(duì)項(xiàng)目感興趣的貢獻(xiàn)者們看到項(xiàng)目是經(jīng)過(guò)了仔細(xì)打磨、而且干凈利索,對(duì)他們本身也非常的有價(jià)值,那么他們就會(huì)順利成章的參與到項(xiàng)目中來(lái)的,因?yàn)轫?xiàng)目對(duì)他們意義重大。
發(fā)布之前的基本任務(wù):
1、事先簡(jiǎn)短的啟動(dòng)合作伙伴
2、確保所有項(xiàng)目的基礎(chǔ)設(shè)施都是可運(yùn)行的、安全的和可擴(kuò)展的
3、確保開(kāi)發(fā)者是可以加入和查閱社區(qū)頻道的(IRC、郵件列表等)
4、發(fā)布源代碼
5、?遵循開(kāi)源的開(kāi)發(fā)模式
一定要做市場(chǎng)相關(guān)
眾所周知,僅僅把代碼開(kāi)源了并不意味著工作就結(jié)束了。要想保持項(xiàng)目繼續(xù)的受人關(guān)注,還需要做一些業(yè)務(wù)和營(yíng)銷(xiāo)方面的工作,以保持人們的眼球的活躍度。所要做的事情有:推廣項(xiàng)目、制定成功的運(yùn)營(yíng)戰(zhàn)略、提供切合實(shí)際的預(yù)算、建立項(xiàng)目品牌、以及創(chuàng)建在線(xiàn)的社交媒體賬號(hào)、可用的域名(持久戰(zhàn),將眼光放得更遠(yuǎn)些)。
針對(duì)品牌就需要?jiǎng)?chuàng)建市場(chǎng)確認(rèn)清單。這步特別的重要,其確保了在市場(chǎng)上的信息一致。市場(chǎng)確認(rèn)清單如下示例:
1、設(shè)計(jì)項(xiàng)目的 logo 、顏色標(biāo)識(shí)、網(wǎng)站、以及附屬品等
2、正式制定品牌指南
3、為項(xiàng)目注冊(cè)社交媒體賬號(hào)(Twitter 、Facebook 、LinkedIn 等)
4、為項(xiàng)目注冊(cè)相應(yīng)的域名
走到這里,你已經(jīng)將項(xiàng)目開(kāi)源,接下來(lái),你的工作就是去推廣它,讓更多的人知道這個(gè)項(xiàng)目,并讓更多的人們?nèi)ナ褂盟?,最好是能夠參與進(jìn)來(lái)。作為一名市場(chǎng)人員,這是非常有趣的一個(gè)挑戰(zhàn),你能夠帶領(lǐng)多少工程師來(lái)貢獻(xiàn)代碼、或論壇討論、或修復(fù)缺陷、或提交 bug,是檢驗(yàn)?zāi)愎ぷ鞒晒εc否的最終形式。
“正因?yàn)樯鐓^(qū)對(duì)于市場(chǎng)至為重要,所以你有十足的理由去用心經(jīng)營(yíng)社區(qū)。而如何經(jīng)營(yíng)則體現(xiàn)在一些具體而微的小事上,如快速的處理請(qǐng)求,確保項(xiàng)目提供最棒的幫助體系。所以,要做到,如果有人來(lái)到你的項(xiàng)目,他隨便看一看,就能了解到這個(gè)項(xiàng)目正在做什么?!?/i>
?– Christine Abernathy, Facebook 開(kāi)源團(tuán)隊(duì)開(kāi)發(fā)者布道師
構(gòu)建社區(qū)
在項(xiàng)目啟動(dòng)之后,那么接下來(lái)做的事情就是社區(qū)了,關(guān)注社區(qū)的活力對(duì)于項(xiàng)目來(lái)說(shuō)至關(guān)重要。
社區(qū)的構(gòu)建是適合”佛系”經(jīng)營(yíng)的。在項(xiàng)目的早期階段,是需要主持一些開(kāi)發(fā)者聚會(huì)或贊助一些線(xiàn)下會(huì)議,乃至在重大會(huì)議上露臉。
另外,管理大家的期望以及履行項(xiàng)目治理和透明度的義務(wù)也非常的重要。
持續(xù)的活動(dòng)包括:
1、任命社區(qū)經(jīng)理或社區(qū)布道師
2、確保社區(qū)的變化都能夠很清楚傳達(dá),諸如項(xiàng)目的方向變化、或者是治理方面的內(nèi)容。
3、盡力吸收其它類(lèi)似社區(qū)的最佳實(shí)踐
4、鼓勵(lì)并提供機(jī)會(huì)給面對(duì)面的社區(qū)建設(shè)
5、?參加相應(yīng)的活動(dòng),并鼓勵(lì)大家提交演講
6、考慮定期的舉辦本地的聚會(huì)
通過(guò)構(gòu)建一個(gè)多樣性的貢獻(xiàn)者群組,此時(shí)就可以和其它的一些對(duì)項(xiàng)目感興趣的企業(yè)或組織進(jìn)行一系列的討論,告訴他們你的項(xiàng)目的價(jià)值所在,從而試圖說(shuō)服他們對(duì)項(xiàng)目投入時(shí)間、金錢(qián)或者是其它的資源,以此來(lái)進(jìn)一步的擴(kuò)大項(xiàng)目,以讓項(xiàng)目更上一層樓。如此就能達(dá)到一個(gè)正的循環(huán),通過(guò)獲得外部的資源,項(xiàng)目可以擴(kuò)張并獲得更多的貢獻(xiàn)者。
如此的增長(zhǎng)意味著有更多的企業(yè)會(huì)投入更多的資金來(lái)讓他們的開(kāi)發(fā)者加入到項(xiàng)目中,以實(shí)際的行動(dòng)來(lái)推動(dòng)社區(qū)工作的進(jìn)展,他們也許會(huì)捐贈(zèng) $10,000 或者 $250,0000 ,又或者更多的錢(qián),當(dāng)然要視項(xiàng)目的重要程度,以及對(duì)其它公司的意義而定。一旦你的項(xiàng)目開(kāi)啟了,如果項(xiàng)目可以幫助到某些公司的話(huà),那么這些公司就會(huì)參與進(jìn)來(lái)做貢獻(xiàn),或者是捐獻(xiàn)現(xiàn)金。
這樣的事情,現(xiàn)在看起來(lái)已經(jīng)是司空見(jiàn)慣,因?yàn)楝F(xiàn)代的企業(yè)和組織都意識(shí)到:他們?cè)噲D解決的技術(shù)問(wèn)題不是任何一家獨(dú)立的公司能夠搞得定的。人們逐步的開(kāi)始看到開(kāi)源的戰(zhàn)略?xún)r(jià)值,與其他公司一起參與供應(yīng)商中立的聯(lián)合項(xiàng)目,而這些項(xiàng)目恰是致力于解決企業(yè)所面臨的技術(shù)難題。
采用這樣的方式的開(kāi)源項(xiàng)目例子,如 Hyperledger 由Linux 基金會(huì)贊助合作成立的項(xiàng)目,旨在跨界的區(qū)塊鏈技術(shù),以及 云原生計(jì)算基金會(huì),用于孵化現(xiàn)代公有或私有云的一系列開(kāi)源軟件。企業(yè)不僅可以讓開(kāi)發(fā)者們參與到這些大型的項(xiàng)目當(dāng)中來(lái),還可以提供一定經(jīng)濟(jì)上的資助,共同推進(jìn)和驅(qū)動(dòng)技術(shù)的向前發(fā)展。
寫(xiě)在最后的忠告
大膽啟動(dòng)一個(gè)開(kāi)源項(xiàng)目可能有點(diǎn)神秘,甚至有些可怕,尤其是第一次嘗試進(jìn)入開(kāi)源的時(shí)候。但是當(dāng)您的企業(yè)看到并量化開(kāi)源在流程中所獲得的指數(shù)增長(zhǎng)之時(shí),那么這第一項(xiàng)目就有可能成為貴公司的使用開(kāi)源軟件戰(zhàn)略方式的起步項(xiàng)目。了解其他人如何采取這種方式來(lái)幫助您的下一個(gè)開(kāi)源項(xiàng)目取得成功。
附:啟動(dòng)開(kāi)源項(xiàng)目的檢查列表
慎重考慮項(xiàng)
1、 評(píng)估參與一個(gè)已經(jīng)存在的開(kāi)源項(xiàng)目的可能性
2、評(píng)估公司對(duì)于采用開(kāi)源模式啟動(dòng)和維護(hù)項(xiàng)目的自身能力
3、評(píng)估在開(kāi)始的時(shí)候,其它公司參與進(jìn)來(lái)的可能性
4、評(píng)估開(kāi)源項(xiàng)目的成功因素并設(shè)置相應(yīng)的衡量值
商業(yè)戰(zhàn)略和規(guī)劃
1、為項(xiàng)目做出最終決定并設(shè)置目標(biāo)
2、從相關(guān)干系人處收集開(kāi)源的原因
3、選擇要為項(xiàng)目考慮的代碼
4、決定項(xiàng)目的開(kāi)源部分:是應(yīng)用的全部,還是部分
5、為選擇的建議書(shū)建立商業(yè)案例
6、確定是否有行政人員參與此舉
7、針對(duì)開(kāi)發(fā)者和開(kāi)銷(xiāo)做出資源規(guī)劃書(shū)
8、設(shè)置成本預(yù)算,包括開(kāi)發(fā)時(shí)間,基礎(chǔ)設(shè)施和相關(guān)費(fèi)用
9、 收集高管和技術(shù)人員進(jìn)行項(xiàng)目討論和決策
10、辯論并最終確定項(xiàng)目范圍和代碼選擇
法律審核
[ ]請(qǐng)慎重思考開(kāi)源對(duì)于貴公司的知識(shí)產(chǎn)權(quán)影響
[ ]確保完全符合開(kāi)源許可證
[ ]為源代碼的發(fā)布選擇一個(gè)開(kāi)源的許可證,要對(duì)項(xiàng)目所有許可證要求作出清晰的說(shuō)明
[ ]如果需要一份貢獻(xiàn)者意向書(shū)的話(huà),也請(qǐng)考慮
[ ]考慮社區(qū)可能提供的非軟件輸出和適當(dāng)?shù)脑S可證,例如文檔和規(guī)范
[ ]考慮所有和商標(biāo)有關(guān)的事情
[ ]決定是否還有其他因素可以納入您的生態(tài)系統(tǒng)計(jì)劃中,例如一致性測(cè)試
技術(shù)審核
[ ]將嚴(yán)重依賴(lài)但不能公開(kāi)的組件去掉
[ ]請(qǐng)?zhí)峁┪臋n和案例
[ ]刪除內(nèi)部的注釋、引用、以及其他內(nèi)部的代碼等等
[ ]確保代碼風(fēng)格的一致
[ ]在源代碼文件中更新版權(quán)所有的信息
[ ]在源代碼文件中更新許可證信息
[ ]在倉(cāng)庫(kù)的根目錄中添加許可證文件
治理和流程
[ ]定義項(xiàng)目的治理步驟和結(jié)構(gòu)
[ ]創(chuàng)建代碼倉(cāng)庫(kù)、bug 跟蹤、以及代碼測(cè)試的基礎(chǔ)設(shè)施
[ ]創(chuàng)建支持的 Slack 頻道、論壇和維基
[ ]創(chuàng)立貢獻(xiàn)者可以溝通的開(kāi)放基線(xiàn),以確保項(xiàng)目的成功
品牌和市場(chǎng)
[ ]設(shè)定市場(chǎng)戰(zhàn)略以激勵(lì)活躍的貢獻(xiàn)者社區(qū)
[ ]設(shè)計(jì)項(xiàng)目logo、顏色樣式、官網(wǎng)、以及其它附屬內(nèi)容
[ ]品牌指南具體化
[ ]為項(xiàng)目注冊(cè)設(shè)計(jì)媒體賬號(hào)(Twitter、Facebook、LinkedIn等等)
[ ]為項(xiàng)目注冊(cè)相應(yīng)的域名
啟動(dòng)和維護(hù)
[ ]開(kāi)放項(xiàng)目,并開(kāi)始開(kāi)發(fā)工作,以及貢獻(xiàn)的流程開(kāi)始運(yùn)轉(zhuǎn)
[ ]選定合適的社區(qū)經(jīng)理或社區(qū)布道師
[ ]確保方向和治理的任何變動(dòng)都是經(jīng)過(guò)清晰的溝通過(guò)的
[ ]緊隨其它類(lèi)似社區(qū)的最佳實(shí)踐
[ ]鼓勵(lì)且提供場(chǎng)地讓大家能夠進(jìn)行線(xiàn)下的社區(qū)活動(dòng)
這些資源是與TODO(公開(kāi)對(duì)話(huà),開(kāi)放式開(kāi)發(fā))小組 – Linux基金會(huì)的專(zhuān)業(yè)開(kāi)源程序網(wǎng)絡(luò)小組合作創(chuàng)建的。 特別感謝那些貢獻(xiàn)自己的時(shí)間和知識(shí)來(lái)制作這些綜合指南的開(kāi)源項(xiàng)目經(jīng)理。 參與的公司包括Autodesk,Comcast,Dropbox,F(xiàn)acebook,Google,Intel,Microsoft,Netflix,Oath(Yahoo + AOL),Red Hat,Salesforce和Samsung。 要了解更多信息,請(qǐng)?jiān)L問(wèn)todogroup.org。我們邀請(qǐng)您在GitHub上下載、傳播,如果可以請(qǐng)積極的參與這些指南。