王開源的事情已經(jīng)過去一段時間了,看過太多對這件事情的評論,這些評論或者是口出污言穢語的謾罵或者是狂熱的非理性的力挺(在這件事的初期屬于后者)。很多人對開源的評論也使得我這個投身于開源一年多的新人感到過迷茫。這件事過去好久,我一直在思索一個問題:開源在目前中國的意義究竟是什么,開源在中國這種大環(huán)境下究竟應(yīng)該如何發(fā)展。
開源在國外現(xiàn)在是火的一塌糊涂,Linux、Eclipse、Hibernate、Spring、Python、Ruby、MySQL等等或大或小的開源產(chǎn)品的發(fā)展大大推動了軟件開發(fā)這個行業(yè)的高速發(fā)展,apache、sourceforge等開源社區(qū)中也是百花齊放,開源產(chǎn)品的開發(fā)者、推動者、推廣者也得到了各自想得到的回報,更不用說使用這些開源產(chǎn)品進行開發(fā)的用戶得到的開發(fā)效率的提升。反觀國內(nèi)開源的發(fā)展則相對滯后很多:違背Linux開源協(xié)議進行商業(yè)化Linux開發(fā)的廠家被開源社區(qū)罵的狗血噴頭;屈指可數(shù)的幾個開源愛好者組織的開源團隊在個人的意志與信念的堅守下苦苦支撐著,很多因為種種原因中途夭折;商業(yè)公司對開源社區(qū)的幾次推廣行動也胎死腹中,比如CSDN的開源社區(qū)、Apusic的Operamasks;更有甚者打著開源的旗號卻從事著根本與開源不搭邊的事情。國內(nèi)大部分人對開源更是有著很深的誤解:“你憑什么叫人家開源,不就是想看看Windows的代碼嗎?”、“人家商業(yè)公司做出來的產(chǎn)品是你們幾個技術(shù)瘋子做出來的東西能比的嗎?”、“把別人寫好的東西拿來抄一抄改一改我的任務(wù)就完成了,錢就到手了,開源真好”、“我做的項目用了很多開源的東西,很牛吧!”。
我認為開源對于整個軟件行業(yè)有如下幾個作用:使用開源產(chǎn)品搭建出的產(chǎn)品有更好的安全性和可控性;開源的產(chǎn)品能得到開發(fā)社區(qū)的廣泛支持,從而使得產(chǎn)品能夠成熟的更快;使用開源產(chǎn)品搭建出的產(chǎn)品有更好的安全性和可控性;開發(fā)、學(xué)習(xí)開源產(chǎn)品能夠提升開發(fā)人員的技術(shù)水平。
對于第一個作用這里不做過多解釋,相信大部分人都能理解。
開源產(chǎn)品是在全世界所有技術(shù)牛人的手下開發(fā)出來的,并且有千萬雙眼睛盯著它,眾多的使用者可以完善它,這使得開源產(chǎn)品的成熟速度也十分驚人,Linux、Eclipse的成熟就是最典型的證明。各種開源產(chǎn)品層出不窮,相似功能的產(chǎn)品就有幾十種甚至上百種,一個開源產(chǎn)品如果想要在這些產(chǎn)品中脫穎而出,不僅需要強大的技術(shù)做支撐,更需要非常強的商業(yè)化推廣,否則做出來的產(chǎn)品只能成為少數(shù)技術(shù)人員把玩的玩物。如果沒有IBM對Eclipse的巨額投入,Eclipse會發(fā)展成現(xiàn)在的規(guī)模嗎?這些開源項目的后面通常都是有一個非常強大的開源基金會在做支撐。遺憾的是,目前國內(nèi)還沒有一家公司能夠進行對開源社區(qū)如此大的投入,因此國內(nèi)大部分的開源團隊都是在自己開發(fā)著自己的開源產(chǎn)品,放到網(wǎng)站上供他人下載,然后夢想著自己的開源產(chǎn)品能夠有一天會像Hibernate、Struts一樣成為風(fēng)靡全球的產(chǎn)品,但是如果沒有強大的商業(yè)推廣的話這肯定是一場白日夢。
鑒于此,我認為目前國內(nèi)的開源產(chǎn)品商業(yè)化的可能性是非常小的,因此開源的對于廣大開發(fā)人員的意義更多的在于使用和學(xué)習(xí),而且我們使用開源產(chǎn)品快速的搭建出滿足需求的產(chǎn)品,這本身也是對開源的學(xué)習(xí)過程。這里提到的“學(xué)習(xí)”包含下面幾個含義:學(xué)習(xí)開源產(chǎn)品的使用;學(xué)習(xí)開源產(chǎn)品的實現(xiàn)原理;學(xué)習(xí)模仿開源產(chǎn)品;學(xué)習(xí)開源社區(qū)的運營。
(1)學(xué)習(xí)開源產(chǎn)品的使用:成熟的開源產(chǎn)品是非常優(yōu)秀的,如果能夠?qū)W會它們的使用,這對于開源人員來說就是一種很大的收獲,因為通過使用這些產(chǎn)品就能認識到這些產(chǎn)品的功能、特性以及優(yōu)缺點。
(2)學(xué)習(xí)開源產(chǎn)品的實現(xiàn)原理:開源產(chǎn)品的代碼都是開放的,我們可以深入產(chǎn)品的內(nèi)部學(xué)習(xí)其實現(xiàn)原理,從而提高自身的開發(fā)水平。不得不承認的是國內(nèi)開發(fā)人員的技術(shù)水平還是非常低的,通過學(xué)習(xí)開源產(chǎn)品的代碼,就可以提高整體的技術(shù)水平,從這個層面來講哪怕是非開源的源代碼開放產(chǎn)品(比如Borland的VCL)對我們也是同樣有幫助的。值得高興的是,國內(nèi)很多開發(fā)人員已經(jīng)開始嘗試著深入開源產(chǎn)品的內(nèi)部去探尋這些產(chǎn)品的實現(xiàn)原理,并把它們的學(xué)習(xí)成果與更多人分享。開源對開發(fā)人員的提升也是顯而易見的,最明顯的就是微軟開發(fā)社區(qū)中開發(fā)人員的普遍技術(shù)水平是低于Java等開源社區(qū)中開發(fā)人員的普遍技術(shù)水平的(注意,這里說的是“普遍技術(shù)水平”,請微軟社區(qū)中的高人不要動怒)。中國計算機業(yè)的發(fā)展必須依靠核心技術(shù),而提高技術(shù)水平是擁有核心技術(shù)的大前提!
(3)學(xué)習(xí)模仿開源產(chǎn)品:弄懂了開源產(chǎn)品的實現(xiàn)原理以后就可以嘗試模仿它們開發(fā)自己的產(chǎn)品,這和“重復(fù)造輪子”是沒有關(guān)系的,模仿是學(xué)習(xí)他人技術(shù)的最佳途徑。因此大家應(yīng)該多多的“造輪子”,越多越好,哪怕造完就扔掉也是可以的。
(4)學(xué)習(xí)開源社區(qū)的運營:國外很多開源人員都有在開源社區(qū)中開發(fā)的經(jīng)驗,因此他們對于開源這種協(xié)同開發(fā)方式就有更多的經(jīng)驗,因此我們可以加入他們的開發(fā)團隊,可以幫他們做文檔、界面的本地化,更可以參與產(chǎn)品功能的完善,從而學(xué)習(xí)他們的協(xié)作方式,更可以和他們做朋友,了解更多“外面的世界”。國內(nèi)很多朋友都參與了開源產(chǎn)品的文檔中文化、產(chǎn)品的推廣等工作,這都是有深遠意義的。我們CowNew開源團隊參與JodeEclipse、DWPL等國外項目就是基于這一點考慮的。
相信經(jīng)過一段時間學(xué)習(xí)之后,我們的開發(fā)人員將有能力開發(fā)出世界級的產(chǎn)品,如果我們的民族企業(yè)能夠得到長遠的發(fā)展,并且在商業(yè)上幫助國產(chǎn)開源真正走向強大,從而使得中國的開源社區(qū)也能躋身“世界開源之林”!
上邊是我一點愚蠢的看法,僅供各位看管參考。希望開源能夠在中國發(fā)展、壯大,希望中國早日成為軟件強國!