開(kāi)源軟件的這12個(gè)文化基因,能得到你的認(rèn)可嗎
譯文【51CTO.com快譯】開(kāi)源軟件意味著什么?當(dāng)你需要向別人解釋時(shí),如何省心又省力地傳達(dá)開(kāi)源的價(jià)值和精髓?自開(kāi)源這個(gè)短語(yǔ)在1997年首次提出以來(lái),業(yè)界在開(kāi)源方面已經(jīng)獲得了許多來(lái)之不易的經(jīng)驗(yàn)教訓(xùn),我們不應(yīng)該忘記這些經(jīng)驗(yàn)教訓(xùn)。
為此,我收集了12個(gè)文化基因(meme),在我看來(lái)它們有助于分享歷史、搭建舞臺(tái),并為開(kāi)源的定義以及它對(duì)整個(gè)軟件行業(yè)的意義提供上下文。
這頭幾個(gè)文化基因涉及軟件的構(gòu)建。我認(rèn)為,它們定義了我們所認(rèn)為的成功的開(kāi)源項(xiàng)目,因?yàn)樗鼈兙褪巧婕败浖旧淼幕痉矫妗A私膺@些文化基因的項(xiàng)目才會(huì)成功。采用寬松許可證、注重社區(qū)的軟件可能是我們用來(lái)構(gòu)建和維護(hù)優(yōu)秀軟件的最出色、最高效的軟件重復(fù)使用機(jī)制。
第一個(gè)文化基因:自我們編寫(xiě)軟件以來(lái)就共享軟件。
上世紀(jì)50年代末,IBM開(kāi)辦了一場(chǎng)計(jì)算機(jī)大會(huì),這個(gè)大會(huì)一直持續(xù)到今天,名叫SHARE。DEC在60年代開(kāi)辦,支持DECUS社區(qū),你可以在其會(huì)議上購(gòu)買裝滿其他人編寫(xiě)和貢獻(xiàn)的軟件的磁帶。USENIX起源于70年代,當(dāng)時(shí)適逢使用磁帶發(fā)布早期UNIX版本。但是這種共享的做法完全可以追溯到40年代普林斯頓高級(jí)研究所的第一臺(tái)可編程計(jì)算機(jī)上的開(kāi)發(fā)工作。
第二個(gè)文化基因:編寫(xiě)優(yōu)秀軟件是艱苦的工作。
我認(rèn)為,共享歸結(jié)為這個(gè)簡(jiǎn)單的現(xiàn)實(shí):編寫(xiě)優(yōu)秀軟件很困難。軟件開(kāi)發(fā)領(lǐng)域有兩大比率:開(kāi)發(fā)人員在一天之內(nèi)平均可以編寫(xiě)的代碼行數(shù),合理開(kāi)發(fā)流程出來(lái)的每千行代碼的錯(cuò)誤數(shù)量。從語(yǔ)言進(jìn)化到架構(gòu)重復(fù)使用的所有軟件方面的進(jìn)展圍繞這個(gè)中心思想:用更少行的代碼編寫(xiě)出更多更優(yōu)秀的軟件。軟件構(gòu)建可靠性、配置管理、審查工具和流程以及測(cè)試方面的進(jìn)步,都旨在減少合理的軟件交付流程出來(lái)的錯(cuò)誤數(shù)量。
第三個(gè)文化基因:沒(méi)有毫無(wú)章法的規(guī)模擴(kuò)展。
編寫(xiě)優(yōu)秀軟件離不開(kāi)章法。如果你看一下作為成功產(chǎn)品或者開(kāi)源項(xiàng)目的軟件,構(gòu)建時(shí)通常會(huì)由同行審查,實(shí)行版本控制和配置管理,構(gòu)建自動(dòng)化和測(cè)試框架與軟件一同完善。要是沒(méi)有審查、配置管理以及構(gòu)建和測(cè)試自動(dòng)化,軟件無(wú)法在用戶社區(qū)里面進(jìn)行擴(kuò)展,作為一款產(chǎn)品也無(wú)法在成千上萬(wàn)的用戶當(dāng)中進(jìn)行擴(kuò)展。需要維護(hù)軟件的核心小組一定要能夠回答“軟件執(zhí)行什么”。
林納斯定律可以籠統(tǒng)地表述為“給予足夠的關(guān)注,所有代碼錯(cuò)誤都會(huì)浮現(xiàn)出來(lái)。”我認(rèn)為這實(shí)際上表明了提交審查過(guò)程的重要性。研究表明,審查環(huán)節(jié)發(fā)現(xiàn)的錯(cuò)誤比測(cè)試環(huán)節(jié)發(fā)現(xiàn)的還多。一個(gè)健康的社區(qū)勢(shì)必在代碼簽入(check-in)方面有一套嚴(yán)格的審查流程。
第四個(gè)文化基因:軟件天生是動(dòng)態(tài)的。
程序因使用而完善。錯(cuò)誤被發(fā)現(xiàn)后要加以修復(fù)。發(fā)現(xiàn)新的用途,從而推動(dòng)新功能。程序不斷得到磨練和加強(qiáng)。程序從一個(gè)環(huán)境移植到另一個(gè)環(huán)境。遺憾的是,版權(quán)在1980年成了“保護(hù)”軟件發(fā)布管道的機(jī)制。人們也許不明白軟件的發(fā)展有多快、衍生版的開(kāi)發(fā)有多快,或者也許不明白物聯(lián)網(wǎng)和萬(wàn)維網(wǎng)問(wèn)世后,這種動(dòng)態(tài)性只會(huì)加快。我們共享網(wǎng)絡(luò)帶寬已從磁帶大小的口袋、會(huì)議日程表和雜志出版延遲變成了全天候的實(shí)時(shí)全球構(gòu)建、發(fā)布和維護(hù)。
不妨看一下與開(kāi)源軟件的社區(qū)方面有關(guān)的幾個(gè)文化基因。
第五個(gè)文化基因:你得到的總是多過(guò)給予的。
這是社區(qū)協(xié)作式開(kāi)發(fā)的經(jīng)濟(jì)效率。不斷貢獻(xiàn)可謂是項(xiàng)目軟件發(fā)展的生命線。貢獻(xiàn)者貢獻(xiàn)代碼或提供修正版沒(méi)有多大的風(fēng)險(xiǎn),但是得到的好處是,整個(gè)軟件可以按貢獻(xiàn)者覺(jué)得合適的方式來(lái)使用。而至于路過(guò)式貢獻(xiàn),這可能是開(kāi)發(fā)人員給予的唯一重大貢獻(xiàn),不管他們的經(jīng)驗(yàn)和專長(zhǎng)如何。
得到的回報(bào)大于貢獻(xiàn)既適用于個(gè)人,也適用于公司。來(lái)自紅帽、英特爾和IBM等幾家大公司的專用資源和投入讓它們得以借助整個(gè)Linux操作系統(tǒng)來(lái)實(shí)行不同的商業(yè)戰(zhàn)略。公司可以將優(yōu)秀的軟件項(xiàng)目變成解決客戶問(wèn)題的產(chǎn)品。
第六個(gè)文化基因:有人吃白食是成功的關(guān)鍵。
坊間傳聞,在一個(gè)開(kāi)源項(xiàng)目的每1000個(gè)用戶中,有100人可能報(bào)告軟件錯(cuò)誤,其中10人貢獻(xiàn)潛在的修正版,其中只有1人仔細(xì)閱讀貢獻(xiàn)準(zhǔn)則。實(shí)際上,社區(qū)成功有三條途徑(社區(qū)成功的衡量標(biāo)準(zhǔn)是代碼貢獻(xiàn))。一個(gè)是軟件需要異常容易安裝和使用,那樣項(xiàng)目才會(huì)獲得大量用戶。二是用戶群當(dāng)中會(huì)有開(kāi)發(fā)者。軟件需要異常容易構(gòu)建和測(cè)試,那樣想要更改(為了自己的私利)的開(kāi)發(fā)者很容易更改。三是需要異常容易能夠回過(guò)頭來(lái)向項(xiàng)目貢獻(xiàn)變更,那樣貢獻(xiàn)才會(huì)源源不斷。有大量吃白食的人意味著你干得不賴。這樣,如果有大量用戶,對(duì)開(kāi)發(fā)者來(lái)說(shuō)會(huì)大有潛力,貢獻(xiàn)的可能性也會(huì)隨之而來(lái)。但是項(xiàng)目的責(zé)任是確保容易。
試圖構(gòu)建開(kāi)源項(xiàng)目的公司常常很難了解社區(qū)。他們想,有人得為自己提供東西。他們習(xí)慣于向社區(qū)(比如開(kāi)發(fā)者網(wǎng)站)發(fā)號(hào)施令,而不是協(xié)作。有三個(gè)文化基因適用于公司和開(kāi)源。
第七個(gè)文化基因:不混淆產(chǎn)品和項(xiàng)目。
項(xiàng)目其實(shí)是一組安裝和運(yùn)行后可以解決某個(gè)問(wèn)題的切實(shí)可行的軟件。它是一種以代碼來(lái)說(shuō)話的協(xié)作和交流。你需要了解項(xiàng)目不是產(chǎn)品。產(chǎn)品是以解決客戶的問(wèn)題來(lái)盈利的東西。雖然很多出色的軟件來(lái)自于運(yùn)作良好、為工程技術(shù)減少一些工作的開(kāi)源項(xiàng)目,但是仍有艱巨的工作要做,才能將它變成對(duì)客戶而言解決問(wèn)題的產(chǎn)品。比如Linux內(nèi)核是項(xiàng)目,F(xiàn)edora是發(fā)行版項(xiàng)目,RHEL卻是產(chǎn)品。產(chǎn)品以滿足客戶對(duì)價(jià)值的期望來(lái)盈利。產(chǎn)品可默認(rèn)安裝、運(yùn)行,附帶保證和賠償,還有服務(wù)(支持、升級(jí)、培訓(xùn)和咨詢)以及針對(duì)特定產(chǎn)品的說(shuō)明文檔。它們可能是包括硬件和服務(wù)的更龐大產(chǎn)品組合的一部分。
這個(gè)文化基因的一個(gè)推論可能是:“沒(méi)有人來(lái)為你構(gòu)建你的產(chǎn)品。”
第八個(gè)文化基因:不混淆客戶和社區(qū)。
如果說(shuō)第七個(gè)文化基因涉及工程技術(shù)和商業(yè)模式,那么第八個(gè)文化基因就涉及訊息和銷售。社區(qū)和客戶的價(jià)值觀不一樣。客戶是花錢(qián)來(lái)加快解決問(wèn)題,消除風(fēng)險(xiǎn),而社區(qū)(及社區(qū)中的個(gè)人)通過(guò)合作,構(gòu)建自己的解決方案。使用開(kāi)源軟件的一些公司認(rèn)為,項(xiàng)目社區(qū)是產(chǎn)品管道的一部分;他們?cè)谏鐓^(qū)論壇中找到客戶時(shí),就會(huì)進(jìn)一步這么認(rèn)為。他們甚至可能認(rèn)為,社區(qū)項(xiàng)目是一種先試后買的東西。可是,這一切都是錯(cuò)誤的。
公司與相關(guān)社區(qū)的交流跟其與付費(fèi)客戶的交流不一樣。每次交流都有特定的工具和交戰(zhàn)規(guī)則,以及需要記錄和考慮的度量指標(biāo)。社區(qū)成員非常具有價(jià)值,但他們不是客戶。
第九個(gè)文化基因:早在開(kāi)源定義之前,公司就共享寬松許可證的軟件。
Project Athena(X11,Kerberos)始于1983年。開(kāi)放系統(tǒng)基金會(huì)(OSF/Motif,OSF / 1)始于1988年。DEC和Sun從早期的BSD版本分別開(kāi)發(fā)出了Ultrix和SunOS。這不是新的行為。
最后,幾個(gè)文化基因涉及開(kāi)源軟件方面的許可和法律討論。
第十個(gè)文化基因:軟件自由和開(kāi)源許可是不同的討論話題。
爭(zhēng)論軟件自由與開(kāi)源軟件就好比爭(zhēng)論民主主義是否比資本主義更好,或者爭(zhēng)論言論自由是否比自由市場(chǎng)更重要。它們本身都是重要的討論,人們往往對(duì)于某個(gè)主題有天然的傾向性,但它們是不一樣的討論。軟件自由語(yǔ)言由用戶權(quán)利來(lái)界定,開(kāi)源軟件語(yǔ)言則由許可證的屬性來(lái)界定。這些是不同的討論。
第十一個(gè)文化基因:每個(gè)開(kāi)源項(xiàng)目都需要許可證。
許可證定義了別人可以如何使用軟件。軟件受版權(quán)法保護(hù),需要選擇經(jīng)OSI批準(zhǔn)的許可證。你選擇的許可證聲明了你在社區(qū)中想要的那種社會(huì)契約。雖然近年來(lái),很多人默認(rèn)選擇Apache軟件許可證為“對(duì)商業(yè)友好”的許可證,但它未必就是如此。互惠許可證還是隨意許可證并不是談?wù)撁赓M(fèi)軟件還是開(kāi)源軟件。互惠許可證也許是對(duì)生態(tài)系統(tǒng)友好的最佳許可證。
第十二個(gè)文化基因:基金會(huì)有一席之地。
非營(yíng)利性組織可提供公平的競(jìng)爭(zhēng)環(huán)境和IP(知識(shí)產(chǎn)權(quán))所有權(quán)的中立性,從而讓公司能夠?qū)iT(mén)致力于一家運(yùn)行良好的開(kāi)源項(xiàng)目。
結(jié)束語(yǔ)
上世紀(jì)90年代中期至末期,我和同事利用寬松許可證軟件開(kāi)辦了一家軟件公司,那時(shí)候開(kāi)源軟件這個(gè)術(shù)語(yǔ)還沒(méi)有問(wèn)世。這其實(shí)沒(méi)有太大的神秘性可言。我們收集并移植了大約250個(gè)采用25個(gè)不同許可證的程序包(這些許可證包括伯克利許可證、MIT許可證和GPLv2),并結(jié)合我們自己的軟件,還有一些重要軟件是微軟擁有的,其許可證允許我們使用。我們把它開(kāi)發(fā)成了一款我們公司全力支持的產(chǎn)品,這款產(chǎn)品采用了我們自家產(chǎn)品的許可證。我們以不同方式參與了那些不同的協(xié)作社區(qū)。作為一批工程師和商界人士,我們能夠在UNIX系統(tǒng)社區(qū)中不斷成長(zhǎng),得益于悠久的協(xié)作和共享歷史。
回頭看看這些文化基因,我認(rèn)為它們與我在20年前會(huì)寫(xiě)下來(lái)的文化基因一模一樣。
你會(huì)補(bǔ)充什么樣的文化基因?你有什么樣的經(jīng)驗(yàn)之談?歡迎留言交流。
原文標(biāo)題:12 memes of open source software,作者:Stephen R. Walli
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】