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