開(kāi)源時(shí)代 開(kāi)源軟件為何還未摧毀競(jìng)爭(zhēng)?
我最近遇到的針對(duì)開(kāi)源軟件和社區(qū)的批評(píng)是開(kāi)源永遠(yuǎn)不會(huì)勝出;專有和封閉源碼(closed-source)軟件永遠(yuǎn)都會(huì)存在。事實(shí)盡管如此,但這并不是開(kāi)源的失敗使然。
那些認(rèn)為相互競(jìng)爭(zhēng)的模型、方法或項(xiàng)目的存在就是一種 “失敗” 的論調(diào)與開(kāi)源的整個(gè)理念恰好背道而馳。自由重點(diǎn)之一就是人們可以選擇做自己喜歡的事情。
雖然很多軟件都會(huì)得益于共享和合作式的開(kāi)發(fā)模型,但可能并非所有軟件都會(huì)如此。我的一位朋友是自由軟件項(xiàng)目的積極貢獻(xiàn)者,但他對(duì)每年付費(fèi)使用稅務(wù)軟件毫無(wú)怨言,因?yàn)楦鶕?jù)稅法更新軟件的研究成本足以使想要投身此類軟件的志愿者敬而遠(yuǎn)之。在某種程度上即便是這些公司已經(jīng)開(kāi)始為個(gè)人提供免費(fèi) 軟件,但他們大都對(duì)真正意義的自由 軟件望而卻步。
防病毒軟件供應(yīng)商常常不愿分享其代碼,他們有自己的理由;病毒制作者具有破譯代碼庫(kù)的能力,當(dāng)然不能讓這些病毒制作者輕易得逞。
開(kāi)發(fā)開(kāi)放源碼的派生物
開(kāi)源倡導(dǎo)者之間也存在一個(gè)重要分歧,即該如何劃分 GPL 方式的許可和 BSD 方式的許可。如果您基于此代碼構(gòu)建了一個(gè)新的項(xiàng)目,那么您也要在相同的許可條款下發(fā)布該項(xiàng)目么?
人們通常都會(huì)將此視為是一場(chǎng)宗教式的戰(zhàn)爭(zhēng)。我想這也是公說(shuō)公有理婆說(shuō)婆有理的一個(gè)典型例子,完全取決于個(gè)人的偏好。雙方的支持者常常還會(huì)有些偏激并會(huì)做出一些不合理的爭(zhēng)辯,但本質(zhì)上,二者都是可行的策略。
您請(qǐng)便,我的工作到此為止了
BSD 方式的許可的理念(也為其他的幾個(gè)許可所用)是生成軟件的目標(biāo)是制作它并讓它可用,而其他人對(duì)此軟件的使用都是額外的獎(jiǎng)勵(lì)。 如果某個(gè)開(kāi)發(fā)者想要把這些代碼嵌入到一個(gè)閉源的應(yīng)用程序內(nèi)并從中獲利,且不回饋給社區(qū),這種做法也是合理的,因?yàn)殚_(kāi)發(fā)者也是在使用代碼,而且這也是代碼的一個(gè)用途所在。
這種策略的支持者趨向于強(qiáng)調(diào)這種策略 “更為自由”,因?yàn)樗鼘?duì)軟件的使用者的限制更少。而批評(píng)者則大多會(huì)稱這種策略有可能會(huì)讓軟件的變體最終演變成高度受限的軟件。對(duì) BSD 許可下的軟件最常見(jiàn)的偽評(píng)判是認(rèn)為有人會(huì) “奪取” 這種許可所賦予的自由。但是,他們不能。BSD 許可下的原始軟件總是存在的,可自由使用,而不管從其派生的項(xiàng)目是何狀況。
共享即是關(guān)愛(ài)、分享
GPL 方式的許可的理念是著名的 “傳染性” 許可;其目標(biāo)不只是此軟件應(yīng)該是免費(fèi)的,而且所有派生物也必須是同等程度免費(fèi)的,所以不允許任何人使用此類軟件作為非免費(fèi)軟件的一個(gè)組件。
此策略的支持者也趨向于強(qiáng)調(diào)該種許可 “更為自由”,因?yàn)樗鼙WC對(duì)這類軟件及其派生軟件的持續(xù)的自由和開(kāi)放性。而反對(duì)者則多糾纏于這類軟件無(wú)法用于為數(shù)不多(但卻實(shí)際存在)的禁止為給定代碼段使用開(kāi)源模型的情況。對(duì) GPL 許可下的軟件最常見(jiàn)的一種偽評(píng)判是這種許可的傳染性如何如何厲害。有些人曾告訴過(guò)我,當(dāng)然是很真誠(chéng)的,如果允許人們利用我在更為寬松的許可下發(fā)布的代碼并將其鏈接到 GPL 許可下的代碼,那么我就必須要將我的代碼也變成是 GPL 許可的并且必須將類似的限制施加給所有其他的用戶。這,很顯然是無(wú)稽之談。
GPL 的變體很多;而其中有些就是為了解答這類疑問(wèn)的。
如何選擇
我遇到過(guò)有關(guān)哪種方式的許可更為恰當(dāng)?shù)膯?wèn)題。上述兩種方式對(duì)不同的場(chǎng)景有各自的優(yōu)勢(shì)。我總結(jié)了一些原則,可幫助我為某個(gè)項(xiàng)目決定適合的許可方案。
Linux 內(nèi)核是從 GPL 許可獲益良多的典型例子。依我看來(lái),是共享進(jìn)展中的開(kāi)發(fā)工作的重要性使然。尤其是,如果沒(méi)有 GPL,供應(yīng)商就可以借助硬件驅(qū)動(dòng)程序?qū)⑹褂谜哝i定到它們提供的內(nèi)核,因?yàn)橹挥羞@個(gè)內(nèi)核可以支持某個(gè)特定的硬件。有了 GPL,內(nèi)核驅(qū)動(dòng)程序必須能作為源向他人開(kāi)放,允許他人將這些驅(qū)動(dòng)程序用于其他內(nèi)核,并在需要的時(shí)候做適當(dāng)?shù)恼{(diào)整。
X Windowing System 則在更少限制的 MIT 許可下發(fā)展得不錯(cuò)。盡管人們可以開(kāi)發(fā)商業(yè)系統(tǒng),但由于人們使用的是標(biāo)準(zhǔn)的服務(wù)器,所以事實(shí)是若硬件驅(qū)動(dòng)程序不能用于標(biāo)準(zhǔn)的 X 服務(wù)器,那么肯定會(huì)影響硬件的銷售。
在某些情況下,很難分辨哪種策略更為適合。BSD 內(nèi)核的偏好者看起來(lái)能夠坦然接受商業(yè)產(chǎn)品使用其內(nèi)核而又不向其發(fā)回任何驅(qū)動(dòng)程序的可能性(盡管 這種情況似乎非常少)?,F(xiàn)在有一些協(xié)議或文件格式庫(kù)是在 GPL 條款下發(fā)布的,且得到了一些使用。
如下的這些原則可幫助您做決定:
假設(shè)您已經(jīng)發(fā)布了代碼,您發(fā)現(xiàn)有人正在使用它。但您尚不知道他們是否會(huì)發(fā)送回更改,您只是聽(tīng)說(shuō)他們之所以使用您的代碼是因?yàn)槟拇a可以正確解決他們的某個(gè)技術(shù)問(wèn)題。
如果上述情形讓您很高興,那么您就可以使用兩種許可中的任何一種來(lái)允許他們這么做。如果這種情形讓您擔(dān)心他們有可能不會(huì)共享,那么就使用一種許可來(lái)要求他們共享。如果這種情況讓您很惱火,因?yàn)樗麄儧](méi)有付費(fèi)給您,那么就不要使用任何開(kāi)源許可。放松些!
開(kāi)源和 DRM
Digital Rights Management (DRM) 備受爭(zhēng)議,因它不合理地限制了付費(fèi)用戶的權(quán)利。但是也有一些情況例外。我曾經(jīng)使用過(guò) GNU Compiler Collection (GCC) 的修訂版,內(nèi)含了一個(gè)對(duì)許可管理器的調(diào)用。這看起來(lái)可能有點(diǎn)奇怪;但顯然,它是一個(gè)客戶請(qǐng)求??蛻魮碛幸唤M使用了 GCC 的工具的開(kāi)發(fā)者許可,但由于某種原因,對(duì)于他們,如果 GCC 能夠進(jìn)行某些許可檢查,那么他們將能很容易地跟蹤許可使用情況。所以,這些工具使用的 GCC 版本被合理地修改成調(diào)用一個(gè)外部的許可檢查程序。(默認(rèn)地,它自帶總是能立即返回成功結(jié)果的外部程序;實(shí)際的許可檢查是可選的,并且必須被顯式啟用。)
令人開(kāi)心的是:由于 GCC 使用的是 GPL 許可,它自帶了全部源代碼,分為上游版本和供應(yīng)商補(bǔ)丁。因此,調(diào)用許可管理器的代碼已經(jīng)在補(bǔ)丁里了,如果用戶愿意,可以刪除它,重新構(gòu)建。
這會(huì)創(chuàng)建一個(gè)有趣的替代。任那些想要跟蹤它的人自愿使用的許可是存在的,但卻不適合您。開(kāi)源模型幫助抵制了諸如構(gòu)建用 rootkit 來(lái)隱匿 DRM 軟件這樣的荒唐事的誘惑。(后者就是我為何現(xiàn)在只購(gòu)買無(wú) DRM 的游戲的原因。我厭煩了雖付了錢,程序卻還是最終跨掉的情況,而有人下載了它不怎么樣的拷貝卻仍能順利運(yùn)行。)
與專有軟件共存
專有軟件的繼續(xù)存在對(duì)于很多開(kāi)源支持者而言無(wú)疑是一個(gè)痛心的話題。我有時(shí)也會(huì)介意某些包是閉源的,尤其是當(dāng)這些包不能正常工作,而其供應(yīng)商又毫不在乎時(shí),就更是如此。不過(guò),總的來(lái)說(shuō),專有軟件的存在,我是不介意的,而且,如果閉源軟件物有所值,我甚至還會(huì)購(gòu)買。
雙方都需要接受共存的事實(shí)。(您可能已經(jīng)注意到在涉及不止一個(gè)人的人類存在的每個(gè)方面,這句話幾乎無(wú)一例外都是適用的。 ) 推崇開(kāi)源解決方案的很多人對(duì)于那些制作并致力于開(kāi)源而又與閉源供應(yīng)商合作的實(shí)體過(guò)于敵對(duì)。同樣地,一些對(duì)閉源市場(chǎng)十分積極的供應(yīng)商對(duì)開(kāi)源也心懷敵意。雙方的陣營(yíng)中各有一些人積極地助推了對(duì)對(duì)方的恐懼、懷疑和不信任。
事實(shí)是很多閉源供應(yīng)商并不那么地邪惡或惡毒,也并不故意要隱藏 rootkit,他們只不過(guò)是在試圖借助自己的所知所能謀生而已。同樣地,很多開(kāi)源提供者也并非是要肆意破壞所有的物權(quán),也不是要把對(duì)手置于死地;他們只是想要追求一種基于真實(shí)成本而非人工成本的理想國(guó)。
兩個(gè)模型都是可以工作的,至少在某些程度上是可以的;人們可以參加進(jìn)來(lái),借此盈利,保住職位以及提供好的股東價(jià)值。若二者能夠合作,我們將能獲得雙方更好的產(chǎn)品和服務(wù)。
Linux 桌面之年
“下一年” 將是 “Linux 桌面系統(tǒng)之年” 的說(shuō)法有些過(guò)時(shí)。Linux 桌面系統(tǒng)時(shí)代尚未真正到來(lái),但它還是超出某些人的想象,離我們更近了。
平心而論,在大型的零售賣場(chǎng),仍看不到很多運(yùn)行 Linux 的一般用途的計(jì)算機(jī)在售。但的確可以看到幾個(gè)本質(zhì)上構(gòu)建于開(kāi)源之上的運(yùn)行內(nèi)核和用戶空間環(huán)境的計(jì)算機(jī),并且?guī)缀趺總€(gè)東西都包括了至少幾個(gè)這類組件。離 Linux 在大眾市場(chǎng)真正流行還有一段距離。如果說(shuō) 10 年前,這僅僅是因?yàn)?Linux 桌面環(huán)境不那么好用,特別是對(duì)于終端用戶而言。那么現(xiàn)在,更要緊的是熟悉度和網(wǎng)絡(luò)效應(yīng),比如某些軟件包不支持 Linux。
自愿開(kāi)發(fā)工作往往關(guān)注的是開(kāi)發(fā)人員的需要。這也是為何開(kāi)源在編程工具方面做得很好,而桌面和用戶界面則總是被置后考慮。不過(guò),現(xiàn)在,在為 Linux 桌面提供好的用戶界面的工作上已經(jīng)有實(shí)際的資金支持了,并且效果已經(jīng)開(kāi)始顯現(xiàn)。我并不期望著會(huì)出現(xiàn)排他的、純粹的 “Linux 桌面系統(tǒng)時(shí)代”。我期望的是,隨著時(shí)間的推移,使用 Linux 作為桌面環(huán)境的用戶會(huì)有所增加,并且軟件開(kāi)發(fā)人員也會(huì)開(kāi)始更為積極地針對(duì)于 Linux。我亦期望網(wǎng)絡(luò)效應(yīng)能從壓制技術(shù)上的轉(zhuǎn)換迅速轉(zhuǎn)變?yōu)榧铀偌夹g(shù)上的轉(zhuǎn)換。
盡管如此,我仍堅(jiān)持我自己的信念:就采用開(kāi)源而言,其意義并不那么顯著。要緊的是開(kāi)源現(xiàn)在到處皆是,從烤面包機(jī)到火星登陸器,運(yùn)行在各種設(shè)備上,從電話到電視機(jī)。
在很多方面,軟件已經(jīng)完成了 “后蕭條” 經(jīng)濟(jì)的轉(zhuǎn)變。前面還有很長(zhǎng)的路要走,但當(dāng)下,您起碼能構(gòu)建一個(gè)硬件并有信心別人能夠免費(fèi)獲得開(kāi)發(fā)其上功能所需的基本軟件。這在以前是不可想象的遙遠(yuǎn)的夢(mèng)想;但現(xiàn)在它是一個(gè)那么司空見(jiàn)慣并習(xí)以為常的事實(shí)。
原文:http://www.ibm.com/developerworks/cn/opensource/os-changeworld3/index.html
【編輯推薦】