開源人訪談系列之李立杭:我的開源參與歷程
開源社區(qū)的工作涉及方方面面:測試、撰稿、翻譯、測試、美工、宣傳及開發(fā)等,不一而足。作為一個自由、開放的生態(tài),開源正在讓這個世界變得更加豐富多彩。Linux Story將推出一系列中國國內(nèi)開源人的訪談文章,這一群國內(nèi)最活躍最重要最嫻熟、也最大咖的開源人,將為你講述他們自己的故事,為普通開源社區(qū)的參與者和還未參與進來的新手介紹純粹的開源精神與第一手的開源人理念。同時也非常歡迎大家留言跟我們交流,聊聊你關(guān)于開源的想法與經(jīng)歷。
1.能否先介紹一下你自己(技術(shù)背景、工作經(jīng)歷、學習經(jīng)歷)以及你的個人愛好?
我本科畢業(yè)于華中科技大學機械學院,由于對計算機和編程有著強烈的興趣,研究生轉(zhuǎn)到了計算機學院。技術(shù)方面最開始接觸過一段時間嵌入式開發(fā),DSP,嵌入式Linux之類的,后來也做過一年機器人比賽,基于實時系統(tǒng)開發(fā)機器人的控制程序。讀研之后,實驗室的方向是計算機視覺,做的主要工作偏研究和算法層面。
目前還未正式入職,不過有兩段實習經(jīng)歷,分別是在Oracle北京研發(fā)中心(前Sun工程研究院)以及阿里云的飛天部門,這些經(jīng)歷對我個人的幫助很大,使我了解到了工作大概是個什么樣子,對技能的要求以及初步認識到如何跟同事合作,與上級相處等。在這里,也要特別感謝實習時帶我的mentor們,真的教給我很多東西!
學習經(jīng)歷的話,自學比較多一點,也是沒有辦法,本科的專業(yè)跟計算機差的太遠了,只好自己多看書,多向他人請教。中間走了很多彎路,現(xiàn)在也是比較菜的水平吧!不過讓人欣慰的是,目前掌握了一些學習的要領(lǐng)和技巧,也培養(yǎng)起來了自學的習慣和興趣。
個人比較喜歡運動,平常打籃球多一些,也玩過一點輪滑,其余時間可能就是喜歡看書,coding多一些:-) 對旅游也十分向往,總是想趁著年輕多跑跑看看:-)
2.你在社區(qū)中扮演什么角色/參與哪些開源項目的開發(fā)?
說實話自己真正參與社區(qū)的時間不算長,雖然從本科一年級就接觸到了Linux(從Ubuntu8.10的一本官方指導書開始的),從此開始對開源著迷,但當時僅限于使用一些開源的東西,崇尚開源精神,期待自己也能對開源事業(yè)做出貢獻。真正開始接觸開源社區(qū),是讀研之后加入了中科院開源軟件協(xié)會(www.opencas.org),從此開始走上了社區(qū)之路。在這里要特別感謝當時的會長,李智華,是他把我們真正領(lǐng)進了開源的殿堂!一開始是作為參與者,對大大小小的開源社區(qū)活動都十分感興趣(各種發(fā)行版的Release Party,BLUG的聚會等),之后在開源協(xié)會慢慢開始幫忙組織一些活動,直到研二開始擔負起了開源協(xié)會會長的職責。在擔任會長的一年期間,組織協(xié)助開展了不少開源活動(UbuntuKylin發(fā)布會,軟件自由日,PyCon 2013,哲思社區(qū)RMS之行等)。
因此在社區(qū)中,個人更多是作為參與者,同時也作為某些活動的協(xié)助組織者,為開源社區(qū)的建設(shè)出一份微薄之力。
開源項目方面,目前沒有長期跟進的項目,參與過的比較有代表性的項目有KGTP(CSDN開源夏令營)和JdeRobot(GSoC 2015)。
3.最初接觸開源是什么時候? 是什么讓你與開源結(jié)緣?
最初接觸開源是在大一的時候,當時在ACM集訓隊,看到一些學長的桌面系統(tǒng)十分怪異(相比于Windows),關(guān)鍵是操作起來看起來非???,很有點黑客的感覺。借這個機會認識了Ubuntu 8.10,并了解到了開源的世界。后來Ubuntu的各個版本自己都在用,還有機會承辦了UbuntuKylin的首次發(fā)布會。因此可以說,是Ubuntu和其它的Linux發(fā)行版讓我和開源結(jié)緣,在這里向為發(fā)行版辛勤工作的人們致敬!
4.你的收入來源是什么?平時花多少精力在開源項目上,如何平衡工作與開源項目?
目前還是窮學生一個,就讀于中國科學院自動化研究所,基本生活依靠所里發(fā)的補助。實驗室的課題壓力還是比較大的,因此參加開源項目的時間就比較有限了,不過計算機視覺領(lǐng)域的開源項目多如牛毛(大名鼎鼎的OpenCV和PCL都是開源項目的典范),且開發(fā)環(huán)境目前一般都是Linux,所以在做實驗室工作的同時,也會偶爾給一些開源的計算機視覺工具提交一些小的補丁。綜合來看,開源作為一個興趣愛好,在工作之余會比較積極地參與。現(xiàn)在很多開源項目都有很好的商業(yè)運作了(比如OpenStack和Docker),這些項目的開發(fā)者很多都是全職參與的,當然這本身跟開源精神不違背,我反倒覺得這種方式很好,可以一定程度上保障開源產(chǎn)品的質(zhì)量。我非常佩服那些利用工作之余的時間開發(fā)出高質(zhì)量開源軟件的人,以后有機會了自己極有可能也會在這方面做一些嘗試和努力。
5.你是如何參與進開源項目的?
能夠比較積極地參與開源項目的人,我覺得基本都是對項目本身充滿興趣的人,否則他不會無償參與,即使參與了,沒有興趣的驅(qū)動也很難長久。我個人比較喜歡編程和軟件開發(fā),也十分崇尚自由軟件和開源的精神,因此選擇自己感興趣的技術(shù)方向和社區(qū),并參與進去,是一件非常自然的事情。
我個人是從GSoC 2013開始嘗試參與開源項目的,當時借著申請的機會,看了很多開源項目的主頁和wiki,了解了他們的項目定位、社區(qū)文化和開發(fā)流程等。雖然最后沒能成功申請,但是在這個過程中,個人感覺GitHub和git越來越親切了,也發(fā)現(xiàn)了參與開源項目的樂趣所在。之后在GitHub上發(fā)布了自己的一些小作品(其實基本都是自己寫的玩具,不具有太高的實用價值,但自己覺得很開心,很有成就感),在實驗室工作中用到一些開源工具并發(fā)現(xiàn)bug后,基本都會提交一些補丁(時間不允許或者不知道如何解決就只能提issue了)。后來參與了首屆CSDN開源夏令營,在這里要特別感謝朱輝老師,給了我參與 KGTP 項目的機會。再到現(xiàn)在,借著之前的經(jīng)驗教訓,成功申請了GSoC 2015,參與了JdeRobot 項目。
總結(jié)來說,開源社區(qū)有很多的事情可以做,設(shè)計,開發(fā),測試,文檔都需要人。我個人的體會是,挑選一些自己真正感興趣的項目,最好是一些有挑戰(zhàn)性的,這樣的參與會讓你非常有代入感,能夠和核心的開發(fā)者充分地交流,在為開源項目做貢獻的同時,對自己也是一次非常好的歷練。
6.是否在學習及開發(fā)的過程中遇到瓶頸,又是如何克服的?
每個人都會遇到瓶頸,只是瓶頸也分高低。我最不適應(yīng)的地方也許還是從機械專業(yè)到計算機專業(yè)的轉(zhuǎn)變,在最開始做開發(fā)的時候,總感覺自己基礎(chǔ)知識薄弱,雖然知道很多概念,但是知識非常凌亂,不成體系。這就導致,很多時候你coding的時候是知其然卻不知其所以然,有點囫圇吞棗的感覺。
為了克服這個問題,只能看書自學,本來試圖把計算機系的課程自己過一遍,但感覺不太現(xiàn)實,所以就重點讀了一些經(jīng)典書目,數(shù)據(jù)結(jié)構(gòu),算法導論,操作系統(tǒng),計算機網(wǎng)絡(luò)相關(guān)的。隨著看書越來越多,也掌握了一些學習的技巧,目前開發(fā)就覺得沒有那么不知從何下手了,基本上按著認識問題,分析問題,解決問題的思路都能夠慢慢走下來。
7.在協(xié)作開發(fā)過程中你覺得好玩的是什么(嘴仗,愚蠢的代碼提交,成就感)?
根據(jù)現(xiàn)階段認知的回答,溝通+成就感!
8.你對想進入開源項目的新手有什么建議?
自己多探索,從自己最感興趣的項目入手,一定要勇敢提問,勇敢寫郵件,勇敢提bug,勇敢提patch!尤其是很多開源項目都是國外開發(fā)者主導的,這時候更是要自信,不要讓英文成為障礙,哪怕再簡單的問題,也可以大膽問出來。Don’t be shy, just try!
心態(tài)上調(diào)整好之后,還要學習一些開源社區(qū)的基本禮儀,比如ESR的“提問的智慧”(www.catb.org/esr/faqs/smart-questions.html),熟悉一些基本的開發(fā)工具和流程等。
總結(jié)來講的話,就是熱情+正確的方法,最后一點就是,如果你有參與開源項目的想法,不要猶豫,即刻就開始吧!
9.你是如何規(guī)劃今后的學習及開發(fā)的?
馬上要走上工作崗位了,未來雖然有很多未知的因素,但學習是永恒的,只要自己還保有對技術(shù)的熱情,會持續(xù)不斷地追求更高的境界。
目前深知自身實力尚淺,對未來的規(guī)劃可以從三個角度來說,第一是繼續(xù)學習計算機基礎(chǔ)(操作系統(tǒng),編譯原理,計算機網(wǎng)絡(luò),要知其所以然);第二是結(jié)合工作的具體內(nèi)容,針對性地學習一些技能,提高自己分析問題,解決問題的能力;第三是準備在某一個專業(yè)方向上長時間積累,看看有沒有一些創(chuàng)業(yè)的機會。
10.你最喜愛的發(fā)行版以及開發(fā)工具是什么?你的系統(tǒng)上一般運行哪些常用程序?
一開始喜歡折騰,恨不得一臺電腦同時裝5個發(fā)行版,隨著時間推移,閱歷增長,現(xiàn)在越來越發(fā)現(xiàn)解決問題才是王道。所以現(xiàn)在使用Ubuntu多一些(軟件包比較齊全,社區(qū)龐大,你遇到的問題很多時候已經(jīng)被別人提出來并解決了),基本開發(fā)工具就是Vim,GCC,CMake這些吧!編程語言使用C++多一點,Python偶爾也會用。不管是Ubuntu還是MacOS,系統(tǒng)上一般運行兩個必不可少的程序:瀏覽器+Terminal。
11.如何看待大陸對開源社區(qū)索取大于回饋的說法?
有這種說法,必然有其背后的理由。我個人覺得對于這個問題的爭論本身不重要,關(guān)鍵是要認清楚大陸開源社區(qū)的現(xiàn)狀,找到存在的一些不太合理的地方,然后各位開源人士一起努力,把大陸的開源社區(qū)建設(shè)好。開源本身就是為了造福大家,在不違背開源精神和基本規(guī)則的前提下,我想也不必太在意索取和回饋孰重孰輕。就像世界經(jīng)濟一樣,每個地區(qū)都是不一樣的,發(fā)達地區(qū)和欠發(fā)達地區(qū)的情況差異很大。再回到開源社區(qū),不可否認的是,大陸開源事業(yè)還有不少可以提高和改進的地方。不過我們也需要看到一個事實,目前很多核心的開源項目(Linux Kernel,Hadoop等)都有不少中國開發(fā)者參與其中,而且國內(nèi)的各大開源社區(qū)也都在積極地組織一些活動,這無疑都是在為世界開源事業(yè)做貢獻。因此,開源無國界,個人覺得不必太拘泥于索取和回饋的討論,開源精神和理念的傳播,開源技術(shù)的分享,最終讓開源更多地深入人心才是所有開源人士應(yīng)該共同關(guān)注并為之一起奮斗的!
12.作為高校開源社區(qū)資深成員,組織中科院開源協(xié)會的過程中讓你收獲最大的是什么?
實在不敢當,個人在開源方面也是初入茅廬,在組織開源協(xié)會活動的過程中,有幸結(jié)識一批開源愛好者,大家一起分享開源技術(shù),探討和傳播開源理念,是一件讓人很振奮的事情!論收獲的話,我想第一個是結(jié)識了一批志同道合的朋友,第二個就是通過開源活動大大拓展了自己的視野!
13.你認為一直以來大陸的 Linux 發(fā)行版最欠缺的一點是什么?
個人對大陸的Linux發(fā)行版沒有做過太深入的研究,因此也不敢妄自指出什么缺點。這里談一點愿景吧!不僅要做出有中國味的Linux發(fā)行版,更希望大陸的Linux發(fā)行版能在原創(chuàng)技術(shù)上下更多功夫(比如開發(fā)一套新的高效易用的桌面環(huán)境)。
14.一句話說明你對開源是真愛。
是不是真愛不好說,但我對開源是熱愛的!
15.近來你最看好的開源項目是什么?
個人對計算機視覺,云計算,機器人比較關(guān)注,覺得OpenCV,PCL,ROS,Docker都是非常有前景的開源項目。
16.在哪里可以找到你(線下沙龍、會議、郵件列表、GitHub、常用SNS)?
GitHub:https://github.com/hustcalm
Website:http://hustcalm.me