早期購買軟件,你只能得到軟件的可執行代碼,一般不會有源代碼,好比你買一個陶瓷罐,人家不會把制罐的模子給你一樣,算是一個常識。不僅僅不提供源代碼,而且你購買的軟件許可中常常明確禁止對可執行代碼進行逆向工程。換句話說,你購買的是軟件的功能使用而不是如何制造。 這實際上說明,用戶對購買到的產品的權利主張是受限的,並不能隨便擴展。 在非IT軟件的產品生產中,產品成本由兩方面構成,一方面是設計成本,一方面是生產成本,設計成本通常是一次性投入的,與生產多少無關,而且,設計本身被復制的成本與設計付出的成本相比,常常很低。 一個作為功能使用的產品,僅分攤了一份設計成本,如果產品使用人按照此設計自行組織生產,那麼生產出來的產品就沒有分攤設計成本,這顯然是不合理的,如果這種情況長期存在,投入設計(原創)者的積極性將受打擊。 非IT類產品的生產和使用的界限比較清晰,可以通過專利、知識產權等形式對相關權益進行保護,對於使用者來說,由於購買的產品比較確定,如:杯子的功能就是盛水的,很明確,這種權益保護一般不會過多傷害到用戶的利益。 軟件與傳統的非IT產品卻有著很多的不同,被購買的產品的功能很多並不確定,產品使用者和產品生產者常常需要進行密切的溝通(培訓、交流),在軟件產品的產業鏈上,如果產品只以可執行代碼的形式出現,需要進行再開發的中間環節將面臨很多的不確定性,升級、兼容性居於較高的風險,成本代價也很大。 知識產權的保護是一把雙刃劍,在保證了原創者的權益的同時,實際上也限制了知識的共享和交流,原創者對權益的壟斷也會增加社會付出的成本,這兩個矛盾常通過保護時限來平衡。如果這個觀念帶到軟件行業,就是專有軟件,專有軟件權利人具有排他、壟斷性的權利,由於信息產業軟件創新的周期越來越短,專有軟件的弊端愈加明顯。 開源軟件,顧名思義就是開放源代碼,不過開放源代碼並不等於放棄所有的權利,而是與專有軟件的排他性相對,減少了權利壟斷性,關於專有軟件和開源軟件的關系,不再多說,有興趣的朋友可以參考開源軟件文集。 開源軟件代表了一種開放性思路,鼓勵交流和知識共享,問題是,這種思路能有商業模型嗎?或者說具有比專有軟件更有競爭力的商業模型嗎? 開源軟件放棄了部分權利,從這一點看,設計參與者獲得軟件權益會受到一些影響,但這種影響並不一定總是很大,如果說一套軟件中,開發者獨立勞動占絕大部分,那麼權利放棄是很明顯的,如果開發者獨立勞動占的比例較小,那麼權利放棄就很少,與放棄部分權利換來的交流和共享相比,顯然是值得的。 隨著軟件業日漸成熟,標准化的推進,很多獨立的軟件功能實際上無需進行重復的開發,尤其是基礎性的功能模塊,基本上都是現成的,開發者獨立勞動占到大多數的軟件將會越來越少,軟件開發者更多的是利用這些模塊來“搭積木”,而不是制造積木模塊,這也是為什麼軟件開發越來越需要更多的設計者而不是編碼者的原因,用過J2EE和Visual .net的朋友應該深有感觸。 代碼開放了,購買這個軟件價錢將會大大減少,對於軟件普及的好處不言而喻,Linux迅速成為令Windows緊張的操作系統就在於此,而且現在以Linux為中心,已經形成了豐富的開源產品鏈,開源軟件已經是一支強大的力量。 購買軟件價錢的減少,並不代表整體價值的減少,按照我在制造業沒落與google崛起一文中的說法,當軟件開發成熟之後,價值核心力量將從產業鏈上游推向下游。如果你不相信,試想一下,如果我把新浪網站的全部代碼提供給你,你能重造一個新浪嗎? 開源軟件在個人之間容易形成,由於互聯網的發達,有興趣的人,利用網絡就能夠組成虛擬的開發團隊,他們可以共享知識成果。當然這種方式並不適合需要人員密切合作和需要較高資源投入的場合。 開源軟件不能代表軟件的全部,但更多軟件必將走向開源。 剛開始寫這篇文章的時候,我列了一個題目,傳統產業中有開源的例子嗎?一開始沒想出來,文章快結束的時候,我想出來一些,傳統中一些公開傳播的偏方,已經實施多年的傳統手藝比如紡紗,學校裡的學習,和開源具有同樣道理的東西實際上很多,他們的價值關系大家不妨想一想。