關於開源軟體和閉源軟體我個人Naive的看法

左耳朵耗子發表於2014-07-28

對開源軟體來個可能會引發爭議的觀點:對於絕大多數的軟體產品來說,1)閉源的軟體產品的技術含量要比開源的要大得多。2)大多數的開源軟體都在抄閉源的商用軟體。

  我來回答我製造的話題。(知乎上的:http://www.zhihu.com/question/24616693/answer/28430044)

  首先,我先表達一下開源軟體的偉大,並向開源的人們致於我最真誠的敬意。但,即使這樣,我們也要很客觀的承認大多數開源軟體是存在大量問題的。就像我這個人主觀上並不喜歡微軟和IBM,但是我必需要承認,沒有微軟和IBM,計算機這個行業不會有今天這樣的爆炸。(插曲:我94年上大學選的專業是電腦科學,當時很多人都覺得計算機專業是一個ZB的專業,因為幾乎沒有哪個企業在用電腦,但我幸運的是95年的時候微軟出了Win95,Sun出了Java,然後網際網路極度膨脹,才導致我選的專業最終變得很火)

  至於我說的這兩句話,我知道是有爭議的,尤其是我用了“抄”,在此請原諒我用詞不當,像從事開源的朋友道歉這個“抄”其實是“模仿”的意思

  另外,要是沒有開源,我們中國人的軟體公司能做出雲平臺嗎?能做出手機嗎?能大資料嗎?真心感謝開源!

  簡單地說一下開源的歷史

  簡單的回顧一下歷史,而開源源自Unix最初的發展史,然後,就被商業化了,於是N多的Unix變種就出來了,那些Unix老牌黑客們一下就被成了像羅賓漢一樣的成了叢林草莽,以至於Microsoft用次等的技術佔領了市場,而RMS也開始了他的GNU專案,但是GNU並沒有獲得那些Unix老牌黑客的青睞,因為他們覺得RMS就像當年馬克思滿世界鼓吹共產主義一樣鼓吹他人的GNU,最終Linus出來把這些Unix老牌黑客召集了起來,讓Unix的開源精神重生。這段歷史起源於Ken/Dennis,再次向他們致敬!詳細的歷史大家可以看看我7年前寫的:Unix傳奇(CSDN和CoolShell都可以搜到)

  我個人以為開源軟體自Unix以來,最殺手級的組合是LAMP,今天,Apache 基金會,Linux基金會……讓開源的力量越來越大,很多商業公司都參與開源,比如IBM、Yahoo、SUN、Intel、Google……。

  但是,我們可以看出,商業公司支援開源有一個很主要的原因是為了阻擊競爭對手,理由很簡單——用眾包這種不花錢不花人的模式來牽制競爭對手實在是一個“低投入,大收益”的事。比如IBM支援Linux和Java,目的主要是阻擊微軟。Google的Android和Chrome目的也是蘋果和微軟。而對於這些商公司的很多核心技術是不會開放的,包括Google,連Google Reader都寧可自廢都不願意捐給開源社群維護,更別說Google的那三篇論文的東西了,以及Google的搜尋引擎的技術。

  關於我觀點中的邏輯

  我觀點中的邏輯其實很簡單:

  1)如果有人掌握了一個很核心技術,這個技術足以改變世界,你覺得會有多少人會開源?基本不會有人的。

  2)看看這個世界上的引領軟體潮流的技術基本上都是商業公司做出來的。因為技術研發要花時間,花精力,更重要的是要花錢。如果你花了2-3年的時間,花費成百上千萬的財力,你會開源嗎

  3)大量開源軟體都是受不了這些商業公司對技術的壟斷以及非常高的價格。所以,基於這個動機,結果很自然就出現了“模仿”

  關於各種軟體的對比

  很多人對我的這個觀點例了一些例子,但這些例子面太窄了,他們企圖以點代面。我在這裡幫大家補充一些吧,這樣會更客觀一些(眼界不妨放大一些):

  注意:千萬不要用“使用者量”來定義“技術含量”,如果你覺得:“有技術含量”===“有絕對的使用者量”,那麼,你就會得出“QQ空間甚至hao123可能是這世上最有技術含量的軟體或網站”這樣荒謬的結論

  1) VMWare 和 Xen/KVM

  2) Google的三篇論文 和 hadoop

  3) AWS 和 OpenStack

  4) Google Reader和一干開源的reader

  5) Websphere/Weblogic和Jboss, tomcat (注:網際網路的大多數應用都比較簡單)

  6) 輸入法,你是用sogou的還是google的,還是微軟的?

  7) iOS和Android,你覺得哪個技術和質量做得更高一些呢?

  8) Windows/MacOS 和 Linux (對此需要分開:桌面、伺服器、嵌入式) (再注:蘋果公司開放了Mac OS的核心Darwin的原始碼,但沒有包括GUI)

  9) 多媒體方面的軟體,比如:3D動畫、音訊、影象……Photoshop, Maya, 3DMax...開源的:Blender,GIMP,Inkscape……

  10) 閉源的遊戲和開源的遊戲,你更喜歡玩哪個的呢?

  11) 各種辦公用的OA軟體,MS Office,還有SAS和PeopleSoft的軟體。開源的……

  12) 用於出版行業排版的軟體,Adobe的inDesign, PageMaker, MS的publisher,開源的Tex

  13) 安全方面的軟體,大家見得最多的就是防毒軟體了。(花絮:OpenSSL的程式碼大家看過嗎?的確寫得很ugly)

  14) 軟體測試相關的:PurifyPlus, VTune, CodeAnalyst, JProfiler……開源的:valgrind, gprof..

  15) 企業內部的IT管理軟體,大家可以看一下三個公司:IBM,BMC,CA,大家可以看看他們做了些什麼樣的ITIL的軟體(關於ITIL請大家自行Google吧)。

  16) 行業軟體:積體電路設計的軟體、石油勘探的軟體、航空軟體、汽車裡的嵌入式的軟體、醫療裝置用的軟體、金融行業的軟體、建築設計方面的(AutoCAD)

  17) 聊天軟體:QQ,Skype,YY,FaceTime,YIM

  18) 程式設計IDE:關於IDE的比較,請移步參看Wikipedia:Comparison of integrated development environments (注:IntelliJ IDEA是半開源的)

  19)網頁製作:Dreamwaver, Fireworks, Flash...…………

  我還可以一直把例子舉下去,因為還有很多地方的軟體很少人見過的軟體,比如,NASA的、CERN的、DreamWorks,等等。

  希望你的視野比我更寬一點,別隻看自己程式設計用的那些東西,多看看這個世界高精尖的地方。

  其它

  我有這樣的觀點主要是因為我的成長史主要是在商業公司,我能看得到這些商業公司中有很多比開源軟體很NB的東西。我為什麼喜歡進這些頂尖的商業公司,因為只有進到這些公司我才能看有許可權看到這些令人驚歎的軟體是怎麼做出來的。

  這也是我沒有花精力貢獻開源的原因。這和我不寫書的原因是一樣的。我不寫書的原因是因為我看過Effective C++,TCP/IP詳解,Unix程式設計藝術,等等這類經典的書,我覺得我根本就沒有資格寫書,如果我有他們的兩三成的功力,我都會考慮出書,但是我真的不行。(另一方面再看看書店裡那些95%以上的垃圾的書,真是令人噁心)

  同理,我沒有做開源的原因也是一樣,因為我看過很多商業公司裡的那些令人驚歎的東西,我覺得我還沒有資格去幹個開源軟體。我更願意把我的時間和精力花在向這些商業公司學習之上。(看看開源社群裡的那些開源專案,90%的開源專案其實跟書店裡的爛書沒什麼差別)

  人生苦短,而我覺得我自己沒有那個聰明的DNA,而這世界上的垃圾已經有很多了,我就不必再為垃圾添磚加瓦了。我還是把精力放在多看和多學上吧。因為我連一個C++ STL或JDK中的一個容器類都沒有信心能寫好。

  當然,我並不是說幹開源的人不行。只不過,我沒有信心貢獻罷了。說得好聽點,我標準比較高,說得難聽點,我能力差。你對我的這兩種理解都對。我的技術的確水,我在我的部落格上的各人簡介也說了我不是牛人。

  謝謝大家。

  轉自: 左耳朵耗子

相關文章