陳皓:關(guān)于開源軟件和閉源軟件我個(gè)人Naive的看法
好吧,我來回答我制造的話題。
首先,我先表達(dá)一下開源軟件的偉大,并向開源的人們致于我最真誠的敬意。但,即使這樣,我們也要很客觀的承認(rèn)大多數(shù)開源軟件是存在大量問題的。就像我這個(gè)人主觀上并不喜歡微軟和IBM,但是我必需要承認(rèn),沒有微軟和IBM,計(jì)算機(jī)這個(gè)行業(yè)不會(huì)有今天這樣的爆炸。(插曲:我94年上大學(xué)選的專業(yè)是計(jì)算機(jī)科學(xué),當(dāng)時(shí)很多人都覺得計(jì)算機(jī)專業(yè)是一個(gè)ZB的專業(yè),因?yàn)閹缀鯖]有哪個(gè)企業(yè)在用電腦,但我幸運(yùn)的是95年的時(shí)候微軟出了Win95,Sun出了Java,然后互聯(lián)網(wǎng)極度膨脹,才導(dǎo)致我選的專業(yè)最終變得很火)不可否認(rèn),IBM和微軟里有相當(dāng)NB讓人五體投地的人。
至于我說的這兩句話,我知道是有爭議的,尤其是我用了“抄”,在此請(qǐng)?jiān)徫矣迷~不當(dāng),像從事開源的朋友道歉。這個(gè)“抄”其實(shí)是“模仿”的意思。
要是沒有開源,我們中國人的軟件公司能做出云平臺(tái)嗎?能做出手機(jī)嗎?能大數(shù)據(jù)嗎?真心感謝開源!呵呵。
簡單地說一下開源的歷史
簡單的回顧一下歷史,而開源源自Unix最初的發(fā)展史,然后,就被商業(yè)化了,于是N多的Unix變種就出來了,那些Unix老牌黑客們一下就被成了像羅賓漢一樣的成了叢林草莽,以至于Microsoft用次等的技術(shù)占領(lǐng)了市場,而RMS也開始了他的GNU項(xiàng)目,但是GNU并沒有獲得那些Unix老牌黑客的青睞,因?yàn)樗麄冇X得RMS就像當(dāng)年馬克思滿世界鼓吹共產(chǎn)主義一樣鼓吹他人的GNU,最終Linus出來把這些Unix老牌黑客召集了起來,讓Unix的開源精神重生。這段歷史起源于Ken/Dennis,再次向他們致敬!詳細(xì)的歷史大家可以看看我7年前寫的:Unix傳奇(上篇)、Unix傳奇(下篇)
我個(gè)人以為開源軟件自Unix以來,最殺手級(jí)的組合是LAMP,今天,Apache 基金會(huì),Linux基金會(huì)……讓開源的力量越來越大,很多商業(yè)公司都參與開源,比如IBM、Yahoo、SUN、Intel、Google……,開源的確成為了不可忽視的一股力量。
但是,我們可以看出,商業(yè)公司支持開源其中有一個(gè)很主要的原因是為了阻擊競爭對(duì)手,理由很簡單——用眾包這種不花錢不花人的模式來牽制競爭對(duì)手實(shí)在是一個(gè)“低投入,大收益”的事。比如IBM支持Linux和Java,目的主要是阻擊微軟和Sun。Google的Android和Chrome目的也是蘋果和微軟。而對(duì)于這些商公司的很多核心技術(shù)是不會(huì)開放的,包括Google,連Google Reader都寧可自廢都不愿意捐給開源社區(qū)維護(hù)(注:有人說是不是因?yàn)椴幌腴_源,而是因?yàn)镚oogle Reader后面牽扯太多東西,說白了就是牽扯google的核心技術(shù)),更別說Google的那三篇論文的東西了,以及Google的搜索引擎的技術(shù)了。
這里,我是想說,如果開源是像Unix那樣,有幾個(gè)在那些頂尖的牛人以最純粹的目的來搞開源的話,才可能還能搞得非常地好。
關(guān)于我觀點(diǎn)中的邏輯
我觀點(diǎn)中的邏輯其實(shí)很簡單:
如果有人掌握了一個(gè)很核心技術(shù),這個(gè)技術(shù)足以改變世界(其實(shí)并不需要改變世界,只需要遏制競爭對(duì)手),你覺得會(huì)有多少人會(huì)開源?基本不會(huì)有人的。
你看看這個(gè)世界上的引領(lǐng)軟件潮流的技術(shù)基本上都是商業(yè)公司做出來的。因?yàn)榧夹g(shù)研發(fā)要花時(shí)間,花精力,更重要的是要花錢。如果你花了2-3年的時(shí)間,花費(fèi)成百上千萬的財(cái)力,你會(huì)開源嗎?
大量開源軟件都是受不了這些商業(yè)公司對(duì)技術(shù)的壟斷以及非常高的價(jià)格。所以,基于這個(gè)動(dòng)機(jī),結(jié)果很自然就出現(xiàn)了“模仿”。
了解這些因果關(guān)系后,我相信你大約知道為什么閉源的東西要牛一些,以及為什么開源會(huì)模仿。
關(guān)于各種軟件的對(duì)比
很多人對(duì)我的這個(gè)觀點(diǎn)例了一些例子,但這些例子面太窄了,他們企圖以點(diǎn)代面。我在這里幫大家補(bǔ)充一些吧,這樣會(huì)更客觀一些(眼界不妨放大一些):
注意:千萬不要用“用戶量”來定義“技術(shù)含量”,如果你覺得:“有技術(shù)含量”===“有絕對(duì)的用戶量”,那么,你就會(huì)得出“QQ空間甚至hao123可能是這世上最有技術(shù)含量的軟件或網(wǎng)站”這樣荒謬的結(jié)論。
- 1) VMWare 和 Xen/KVM
- 2) Google的三篇論文 和 hadoop
- 3) AWS 和 OpenStack
- 4) Google Reader和一干開源的reader
- 5) Websphere/Weblogic和Jboss, tomcat (注:互聯(lián)網(wǎng)的大多數(shù)應(yīng)用都比較簡單)
- 6) 輸入法,你是用sogou的還是google的,還是微軟的?還是fcitx?
- 7) iOS和Android,你覺得哪個(gè)質(zhì)量做得更高一些呢?
- 8) Windows/MacOS 和 Linux (對(duì)此需要分開:桌面、服務(wù)器、嵌入式) (再注:蘋果公司開放了Mac OS的內(nèi)核Darwin的源代碼,但沒有包括GUI)
- 9) 多媒體方面的軟件,比如:3D動(dòng)畫、音頻、圖像……Photoshop, Maya, 3DMax...開源的:Blender,GIMP,Inkscape……
- 10) 閉源的游戲和開源的游戲,你更喜歡玩哪個(gè)的呢?
- 11) 各種辦公用的OA軟件,MS Office,還有SAP和PeopleSoft的軟件。開源的……
- 12) 用于出版行業(yè)排版的軟件,Adobe的inDesign, PageMaker, MS的publisher,開源的Tex
- 13) 安全方面的軟件,大家見得最多的就是殺毒軟件了。(花絮:OpenSSL的代碼大家看過嗎?的確寫得很ugly)
- 14) 軟件測(cè)試相關(guān)的:PurifyPlus, VTune, CodeAnalyst, JProfiler……開源的:valgrind, gprof..
- 15) 企業(yè)內(nèi)部的IT管理軟件,大家可以看一下三個(gè)公司:IBM,BMC,CA,大家可以看看他們做了些什么樣的ITIL的軟件(關(guān)于ITIL請(qǐng)大家自行Google吧)。
- 16) 行業(yè)軟件:集成電路設(shè)計(jì)的軟件、石油勘探的軟件、航空軟件、汽車?yán)锏那度胧降能浖?、醫(yī)療設(shè)備用的軟件、金融行業(yè)的軟件、建筑設(shè)計(jì)方面的(AutoCAD)……
- 17) 聊天軟件:ICQ,QQ,Skype,YY,F(xiàn)aceTime,YIM
- 18) 編程IDE:關(guān)于IDE的比較,請(qǐng)移步參看Wikipedia:Comparison of integrated development environments (注:IntelliJ IDEA是半開源的)
- 19)網(wǎng)頁制作:Dreamwaver, Fireworks, Flash...還有開源的一堆……
- …………
我還可以一直把例子舉下去,因?yàn)檫€有很多地方的軟件很少人見過的軟件,比如,NASA的、CERN的、DreamWorks,等等。
希望你的視野比我更寬一點(diǎn),別只看自己編程用的那些東西,多看看這個(gè)世界高精尖的地方。
其它
我有這樣的觀點(diǎn)主要是因?yàn)槲业某砷L史主要是在商業(yè)公司,我能看得到這些商業(yè)公司中有很多比開源軟件很NB的東西。我為什么喜歡進(jìn)這些頂尖的商業(yè)公司,因?yàn)橹挥羞M(jìn)到這些公司我才能看有權(quán)限看到這些令人驚嘆的軟件是怎么做出來的。
這也是我沒有花精力貢獻(xiàn)開源的原因——因?yàn)槲也⒉挥X得只有貢獻(xiàn)在開源才算是對(duì)社會(huì)的貢獻(xiàn)。
這和我不寫書的原因是一樣的。我不寫書的原因是因?yàn)槲铱催^Effective C++,TCP/IP詳解,Unix編程藝術(shù),等等這類經(jīng)典的書,我覺得我根本就沒有資格寫書,如果我有他們的兩三成的功力,我都會(huì)考慮出書,但是我真的不行。(另一方面再看看書店里那些95%以上的垃圾的書,真是令人惡心)
同理,我沒有做開源的原因也是一樣,因?yàn)槲铱催^很多商業(yè)公司里的那些令人驚嘆的東西,我覺得我還沒有資格去干個(gè)開源軟件,最多跟隨幾個(gè)我力能及而且覺得還不錯(cuò)的開源軟件。不過,我更愿意把我的時(shí)間和精力花在向這些商業(yè)公司學(xué)習(xí)之上,以獲得更有技術(shù)含量的知識(shí)。
更新:以前也做過些開源,比如:我在讀過TCP/IP的書后就去寫了一個(gè)類似Wireshark的東西,也開過源,但后來出現(xiàn)了Wireshark,覺得自己寫完全寫過不Wireshark,差距太大,相比之下,我一個(gè)人干出來的東西只能算是垃圾。之后又出來了兩次這樣的事。所以,后來,我就不轉(zhuǎn)向更多的學(xué)習(xí)了,而不倉促地去做開源了。原因就是——因?yàn)槲矣X得開源不是為了開源而開源,也不是為了裝逼而開源,更不是為了吸社會(huì)的血把項(xiàng)目分包給社會(huì),開源就是為了給社會(huì)做貢獻(xiàn),我對(duì)給社會(huì)做真正的貢獻(xiàn)的能力還達(dá)不到。
人生苦短,我又沒有那個(gè)聰明的DNA,這世界上的垃圾已經(jīng)有很多了,我就不必再為垃圾添磚加瓦了。我還是把精力放在多看和多學(xué)上吧。因?yàn)槲疫B一個(gè)C++ STL或JDK中的一個(gè)容器類都沒有信心能寫好。
當(dāng)然,我并不是說干開源的人不行。只不過,我沒有信心貢獻(xiàn)罷了。說得好聽點(diǎn),我標(biāo)準(zhǔn)比較高,說得難聽點(diǎn),我能力差。你對(duì)我的這兩種理解都對(duì)。我的技術(shù)的確水,我在我的博客上的個(gè)人簡介也說了我不是牛人。
最后,謝謝大家看我的這個(gè)冗長的答案。