虛擬座談會:GitHub大牛談中國開源
最近,githuber發布了一份“ GitHub中國開發者2014年度報告 ”,比較詳盡地分析了中國開源的發展現狀,其中對star排名前幾位的開源項目負責人進行了訪談,InfoQ整理了其中比較通用的部分,嘗試總結出這些大牛們對中國開源的發展看法和建議。
歡迎 查看InfoQ官方微信今日推送的本系列專題的第一篇內容 : 《GitHub中國開發者年度分析報告》。
githuber采訪的開源大牛分別是:
ECharts——林峰
ThinkJS——李成銀
Cocos2d-x——林順
Pen——小魚
Vue——尤雨溪
對國內開源現狀的看法
李成銀:
目前國內的開源項目基本上都是團隊內部在開發,即使是非常成功的項目 PR 也非常非常少,所以目前來說國內的開源環境仍然不夠活躍不夠開放。一個項目出來會被很多人罵,不過關鍵就是別人罵了我們我們還不知道,也就無法改進。我們 覺得罵本身不是壞事,說明用戶還是需要你的項目的,只是項目不夠好而已。但是關鍵是罵也要去 Issue 里罵,這樣我們才能看到。總體來說國內的開源環境已經比之前要好了,Issue 多起來了,PR 也有一些,不過目前來說還不夠成熟,不能像國外的項目一樣能夠通過 PR 完成很多功能。
其實也不能怪大家,國內和國外的工作情況就不一樣。國外大家把編程當興趣來做,工作也沒有國內這么忙,所以有更多的時間和興趣投入開源項目中。國 內經常加班,壓力很大,大家對于開源的熱情就不高,更多的是把開源項目當做一個寶庫,遇到問題的時候去找現成的解決辦法,而不是參與其中。
此外,大家更喜歡用國外開源項目還有一個原因,就是國外的項目更加穩定,不太容易出現項目無人維護的情況。國內的開源項目有時候開發者會放棄并停 止更新,這樣依賴這些項目構建的項目就會很難處理,而國外的開源項目即使維護者停止更新,他也會找到其他人繼續維護,比如前段時間的Express,這就 讓用戶很有安全感。
個人、團隊、公司在開源項目的不同角色和選擇
可以總結一下 ECharts 的發展模式嗎?比如先從興趣出發最后得到公司支持,或者從誕生就由公司支持和運作等等。如果其他開發者也想遵循這個模式的話,有什么話想對他們說嗎?
林峰:
我很幸運,這事本身就是自己的興趣,也是公司的需要,遇到各種好領導放任自如的讓我隨意發揮,并且當事情越做越大的時候能夠不斷的給于支持和幫助。
做好一個項目,最最重要的,團隊的力量,要找到那些志同道合,才華橫溢的小伙伴與你并肩,ECharts 團隊是個跨部門的虛擬組織,我們面向百度全體FE招募,組建時我立了個規矩,“如果你忙或者沒時間做這件事情,請暫時離開,我們隨時歡迎你歸來”,剛開始 幾個月我兩周清一次場,各種進進出出,但半年后團隊就基本穩定至今了,用叮叮的話我們也成了一個小小的家庭。
你覺得公司在開源項目中扮演的是什么角色呢?在當前國內的大環境下,如何在公司中做一個成功的開源項目呢?
林峰:
公司是不會無緣無故啟動一個跟自身業務無關或者自己都用不到的項目。好的項目能獲得更多人的關注、反饋、代碼貢獻,開源后如果能讓這個項目發展更 好不僅對公司自身項目需求有意義,甚至可以讓公司在某個領域確立自己的技術領導地位(想想看 Android、Linux、jQ、Bootstrap),這無疑是對公司極好的事情。
公司是否可以運作一個開源項目跟公司狀況和基因有關,這個真不好說。只能說一點,在公司內做開源項目,這個項目本身是否對公司帶來價值是關鍵,短期的長期的都最好要有。
什么事都是有利有弊,你覺得公司主導的開源項目相比個人或者社區主導的開源項目利在哪里,弊又在哪里呢?
林順:
有公司或者資本提供支持的開源項目,相對于個人或者沒有資本支持的開源項目的優勢:有更多的資源投入,對開源項目的后期發展至關重 要,允許有更多專職的研發人員,產品的迭代周期和質量也能得到很好的控制,提供更加持續長久的維護,可以讓開源產品走的更高、更遠。至于弊端,那就得看對 開源項目的態度,如果本著服務行業,推動行業升級,用開放的心態來做開源項目,并不會存在著什么弊端,全世界范圍內也并不乏有各個公司支持的開源項目。當 時我們的操作系統公司做的不好了,引擎項目發展的卻是很好,愿意投資我們的有好幾家,但是最后還是覺得陳昊芝思路很開放,能堅持不把一個開源的項目做成閉 源商業項目,最終和他一起做,一路走來,也發現我們當初的選擇是最正確的。
如果其他公司也想走開源路線,有什么話想對他們說嗎?
林順:
非常歡迎一起加入開源路線,開源項目不論是對個人和對公司,能學習到很多寶貴的知識,社區里匯集的智慧是巨大的寶貴的,國外資深程 序員教你兩招,你就能發現原來代碼還能這么寫,框架還能這么設計優雅。另外,和社區做好互動,有效采集用戶需求和反饋,是推動開源項目往正確方向發展的關 鍵,也是產品化和易用化的捷徑。
你覺得作為個人開發者來開發和維護一個開源項目難度大嗎?中間有沒有想要放棄的時候呢?
小魚:
難度還是要看項目吧。不過我相信人多不一定能解決問題,因為技術問題普遍都有天花板,對于核心思想和技術,大多情況下應該是由更少 的人產出的。思想定了,核心技術定了,添加功能可能并沒有想象中那么難。而對于有沒有放棄,我通常是這樣想的,最差的可能就是放棄。堅持會發生很多美好的 事情,比如寫博客。如果有很多緊要的事,時間不多,有時候也只能放棄,只做覺得緊要的。
尤雨溪:
這要看項目的規模了。一般來說適合個人維護的項目,最好是專注于解決一個較小的專門問題的庫,否則可能會占用過多精力。項目的規模 大到一定程度以后,最好是由社區或者團隊來共同維護。說實話 Vue 現在的 issue 增長速度已經挺累人的了,好在現在也有很多社區開發者會積極地幫忙回答問題,讓我省了很多精力。
你覺得純個人開發開源項目和有公司背景的開源項目比起來有什么本質的區別呢,作為一個開發者應該如何選擇?
小魚:
本質上都是開源。個人并沒有統計過個人開源的東西更成功,還是公司開源的東西更成功。不過像 ElasticSearch 大多代碼都是一個人寫的,非常成功;Docker 是一個公司維護的,非常成功;Bootstrap 是 2 個人開發的,公司維護的,非常成功。本質上我覺得是開源的產品真正有用,就會有人用;如果有公司給時間和金錢支持,那相當好;而最好的是有一個社區,大家 一起維護。比如你可以在 Google 上找到關于 jQuery 的幾乎所有答案,這就是社區的力量。所以如果你有一個好的項目,那么嘗試培養一個社區,比一個人寫,或者只有公司支持沒有人開發的僵尸項目好。
尤雨溪:
有公司背景的開源,其背后肯定是有商業利益的推動,所以只要公司的商業利益和項目的發展狀況是正相關的,這個項目就會有比較穩定的 財力和人力支持。但這類項目通常更受公司決策的影響,對社區的意見不如個人開發的項目來得敏感。個人覺得選擇一個項目的時候是個人還是公司開發并不是關 鍵,關鍵是看背后的公司/個人是否靠譜。
開源對程序員的意義
林峰:
太有意義了,學習啊!看大牛們的代碼是一種幸福,從模仿到領悟到融入自己的程序里,這就是成長。身邊很多大牛們都把 GitHub 視為游樂場或者玩具店,不是說兒戲了,是要有玩家的態度和享受玩的快樂,要在上面學會折騰,GitHub 上有無數好的項目,多動手,多折騰,嘗試融入到這些開源社區去做些貢獻,一開始哪怕就是跟 Issue 湊熱鬧,給些使用反饋,文檔錯別字糾正都是有意義的,然后就是貢獻自己的想法,幫助別人解決問題,當你開始貢獻代碼,或許你就能體會到開源對你的意義。
林順:
參與開源項目對于程序員來講是一種高效、快速學習成長的方法,不僅如此,如果你是一個技術愛好者,參與開源項目你有可能找到自己的興趣,擅長結合點。當然,如果能找到和商業的結合點,進而從事自己喜歡的工作,那就更爽了,這點是很難得的。
一般有秩序的開源社區都提供很好的知識和經驗交流平臺,深入參與到開源項目中,對個人的技術成長和視野會有很大的幫助。
GitHub在全球的火爆程度無需多表,提供非常高效的項目開發協作機制,是了解開源項目運作機制的很好入口。在 GitHub 上,開發人員可以隨時與全世界的人共享代碼,也允許接受來自全球不同地方的人貢獻各種 idea,代碼片段,也是社區交流的基礎,越來越多的開源項目遷移到 GitHub 上。
小魚:
開源是一種共享的精神。意義可能有很多種。讓別人受益,自己得到改進反饋,讓更多人從代碼認識你,諸如此類,于每個人不同。開源并沒有直接改變過我的生活,不過我喜歡寫寫代碼,還能幫到人,于我已經是很大的樂趣,而有樂趣的生活就是我的意義。
對于 GitHub,他只是工作/協作平臺,這樣的平臺還有更多選擇。不過我一直用它,是因為其他產品都做的太丑,無論是細節還是體驗,而我更愿意選擇好用的工具,即使付費。
尤雨溪:
我覺得開源的意義對于普通開發者來說,可以看別人的源碼學習自然是最主要的了。在 GitHub 上利用高級搜索去搜自己語言排在前列的項目和開發者,可以學到很多東西。另外每周看看 trending 的新項目也可以發現很多好東西。另一方面,盡可能多地開源自己的代碼也有好處,因為這可以迫使你對自己的代碼保持一個高水準的要求,而不是得過且過。
從GitHub用戶增長數量也可以看到開源的趨勢,隨著國內開源環境的成熟,優質的國產開源項目也越來越多