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