开源社区的工作涉及方方面面:测试、撰稿、翻译、测试、美工、宣传及开发等,不一而足。作为一个自由、开放的生态,开源正在让这个世界变得更加丰富多彩。Linux Story将推出一系列中国国内开源人的访谈文章,这一群国内最活跃最重要最娴熟、也最大咖的开源人,将为你讲述他们自己的故事,为普通开源社区的参与者和还未参与进来的新手介绍纯粹的开源精神与第一手的开源人理念。同时也非常欢迎大家留言跟我们交流,聊聊你关于开源的想法与经历。
1.能否先介绍一下你自己(技术背景、工作经历、学习经历)以及你的个人爱好?
我本科毕业于华中科技大学机械学院,由于对计算机和编程有着强烈的兴趣,研究生转到了计算机学院。技术方面最开始接触过一段时间嵌入式开发,DSP,嵌入式Linux之类的,后来也做过一年机器人比赛,基于实时系统开发机器人的控制程序。读研之后,实验室的方向是计算机视觉,做的主要工作偏研究和算法层面。
目前还未正式入职,不过有两段实习经历,分别是在Oracle北京研发中心(前Sun工程研究院)以及阿里云的飞天部门,这些经历对我个人的帮助很大,使我了解到了工作大概是个什么样子,对技能的要求以及初步认识到如何跟同事合作,与上级相处等。在这里,也要特别感谢实习时带我的mentor们,真的教给我很多东西!
学习经历的话,自学比较多一点,也是没有办法,本科的专业跟计算机差的太远了,只好自己多看书,多向他人请教。中间走了很多弯路,现在也是比较菜的水平吧!不过让人欣慰的是,目前掌握了一些学习的要领和技巧,也培养起来了自学的习惯和兴趣。
个人比较喜欢运动,平常打篮球多一些,也玩过一点轮滑,其余时间可能就是喜欢看书,coding多一些:-) 对旅游也十分向往,总是想趁着年轻多跑跑看看:-)
2.你在社区中扮演什么角色/参与哪些开源项目的开发?
说实话自己真正参与社区的时间不算长,虽然从本科一年级就接触到了Linux(从Ubuntu8.10的一本官方指导书开始的),从此开始对开源着迷,但当时仅限于使用一些开源的东西,崇尚开源精神,期待自己也能对开源事业做出贡献。真正开始接触开源社区,是读研之后加入了中科院开源软件协会(www.opencas.org),从此开始走上了社区之路。在这里要特别感谢当时的会长,李智华,是他把我们真正领进了开源的殿堂!一开始是作为参与者,对大大小小的开源社区活动都十分感兴趣(各种发行版的Release Party,BLUG的聚会等),之后在开源协会慢慢开始帮忙组织一些活动,直到研二开始担负起了开源协会会长的职责。在担任会长的一年期间,组织协助开展了不少开源活动(UbuntuKylin发布会,软件自由日,PyCon 2013,哲思社区RMS之行等)。
因此在社区中,个人更多是作为参与者,同时也作为某些活动的协助组织者,为开源社区的建设出一份微薄之力。
开源项目方面,目前没有长期跟进的项目,参与过的比较有代表性的项目有KGTP(CSDN开源夏令营)和JdeRobot(GSoC 2015)。
3.最初接触开源是什么时候? 是什么让你与开源结缘?
最初接触开源是在大一的时候,当时在ACM集训队,看到一些学长的桌面系统十分怪异(相比于Windows),关键是操作起来看起来非常酷,很有点黑客的感觉。借这个机会认识了Ubuntu 8.10,并了解到了开源的世界。后来Ubuntu的各个版本自己都在用,还有机会承办了UbuntuKylin的首次发布会。因此可以说,是Ubuntu和其它的Linux发行版让我和开源结缘,在这里向为发行版辛勤工作的人们致敬!
4.你的收入来源是什么?平时花多少精力在开源项目上,如何平衡工作与开源项目?
目前还是穷学生一个,就读于中国科学院自动化研究所,基本生活依靠所里发的补助。实验室的课题压力还是比较大的,因此参加开源项目的时间就比较有限了,不过计算机视觉领域的开源项目多如牛毛(大名鼎鼎的OpenCV和PCL都是开源项目的典范),且开发环境目前一般都是Linux,所以在做实验室工作的同时,也会偶尔给一些开源的计算机视觉工具提交一些小的补丁。综合来看,开源作为一个兴趣爱好,在工作之余会比较积极地参与。现在很多开源项目都有很好的商业运作了(比如OpenStack和Docker),这些项目的开发者很多都是全职参与的,当然这本身跟开源精神不违背,我反倒觉得这种方式很好,可以一定程度上保障开源产品的质量。我非常佩服那些利用工作之余的时间开发出高质量开源软件的人,以后有机会了自己极有可能也会在这方面做一些尝试和努力。
5.你是如何参与进开源项目的?
能够比较积极地参与开源项目的人,我觉得基本都是对项目本身充满兴趣的人,否则他不会无偿参与,即使参与了,没有兴趣的驱动也很难长久。我个人比较喜欢编程和软件开发,也十分崇尚自由软件和开源的精神,因此选择自己感兴趣的技术方向和社区,并参与进去,是一件非常自然的事情。
我个人是从GSoC 2013开始尝试参与开源项目的,当时借着申请的机会,看了很多开源项目的主页和wiki,了解了他们的项目定位、社区文化和开发流程等。虽然最后没能成功申请,但是在这个过程中,个人感觉GitHub和git越来越亲切了,也发现了参与开源项目的乐趣所在。之后在GitHub上发布了自己的一些小作品(其实基本都是自己写的玩具,不具有太高的实用价值,但自己觉得很开心,很有成就感),在实验室工作中用到一些开源工具并发现bug后,基本都会提交一些补丁(时间不允许或者不知道如何解决就只能提issue了)。后来参与了首届CSDN开源夏令营,在这里要特别感谢朱辉老师,给了我参与 KGTP 项目的机会。再到现在,借着之前的经验教训,成功申请了GSoC 2015,参与了JdeRobot 项目。
总结来说,开源社区有很多的事情可以做,设计,开发,测试,文档都需要人。我个人的体会是,挑选一些自己真正感兴趣的项目,最好是一些有挑战性的,这样的参与会让你非常有代入感,能够和核心的开发者充分地交流,在为开源项目做贡献的同时,对自己也是一次非常好的历练。
6.是否在学习及开发的过程中遇到瓶颈,又是如何克服的?
每个人都会遇到瓶颈,只是瓶颈也分高低。我最不适应的地方也许还是从机械专业到计算机专业的转变,在最开始做开发的时候,总感觉自己基础知识薄弱,虽然知道很多概念,但是知识非常凌乱,不成体系。这就导致,很多时候你coding的时候是知其然却不知其所以然,有点囫囵吞枣的感觉。
为了克服这个问题,只能看书自学,本来试图把计算机系的课程自己过一遍,但感觉不太现实,所以就重点读了一些经典书目,数据结构,算法导论,操作系统,计算机网络相关的。随着看书越来越多,也掌握了一些学习的技巧,目前开发就觉得没有那么不知从何下手了,基本上按着认识问题,分析问题,解决问题的思路都能够慢慢走下来。
7.在协作开发过程中你觉得好玩的是什么(嘴仗,愚蠢的代码提交,成就感)?
根据现阶段认知的回答,沟通+成就感!
8.你对想进入开源项目的新手有什么建议?
自己多探索,从自己最感兴趣的项目入手,一定要勇敢提问,勇敢写邮件,勇敢提bug,勇敢提patch!尤其是很多开源项目都是国外开发者主导的,这时候更是要自信,不要让英文成为障碍,哪怕再简单的问题,也可以大胆问出来。Don’t be shy, just try!
心态上调整好之后,还要学习一些开源社区的基本礼仪,比如ESR的“提问的智慧”(www.catb.org/esr/faqs/smart-questions.html),熟悉一些基本的开发工具和流程等。
总结来讲的话,就是热情+正确的方法,最后一点就是,如果你有参与开源项目的想法,不要犹豫,即刻就开始吧!
9.你是如何规划今后的学习及开发的?
马上要走上工作岗位了,未来虽然有很多未知的因素,但学习是永恒的,只要自己还保有对技术的热情,会持续不断地追求更高的境界。
目前深知自身实力尚浅,对未来的规划可以从三个角度来说,第一是继续学习计算机基础(操作系统,编译原理,计算机网络,要知其所以然);第二是结合工作的具体内容,针对性地学习一些技能,提高自己分析问题,解决问题的能力;第三是准备在某一个专业方向上长时间积累,看看有没有一些创业的机会。
10.你最喜爱的发行版以及开发工具是什么?你的系统上一般运行哪些常用程序?
一开始喜欢折腾,恨不得一台电脑同时装5个发行版,随着时间推移,阅历增长,现在越来越发现解决问题才是王道。所以现在使用Ubuntu多一些(软件包比较齐全,社区庞大,你遇到的问题很多时候已经被别人提出来并解决了),基本开发工具就是Vim,GCC,CMake这些吧!编程语言使用C++多一点,Python偶尔也会用。不管是Ubuntu还是MacOS,系统上一般运行两个必不可少的程序:浏览器+Terminal。
11.如何看待大陆对开源社区索取大于回馈的说法?
有这种说法,必然有其背后的理由。我个人觉得对于这个问题的争论本身不重要,关键是要认清楚大陆开源社区的现状,找到存在的一些不太合理的地方,然后各位开源人士一起努力,把大陆的开源社区建设好。开源本身就是为了造福大家,在不违背开源精神和基本规则的前提下,我想也不必太在意索取和回馈孰重孰轻。就像世界经济一样,每个地区都是不一样的,发达地区和欠发达地区的情况差异很大。再回到开源社区,不可否认的是,大陆开源事业还有不少可以提高和改进的地方。不过我们也需要看到一个事实,目前很多核心的开源项目(Linux Kernel,Hadoop等)都有不少中国开发者参与其中,而且国内的各大开源社区也都在积极地组织一些活动,这无疑都是在为世界开源事业做贡献。因此,开源无国界,个人觉得不必太拘泥于索取和回馈的讨论,开源精神和理念的传播,开源技术的分享,最终让开源更多地深入人心才是所有开源人士应该共同关注并为之一起奋斗的!
12.作为高校开源社区资深成员,组织中科院开源协会的过程中让你收获最大的是什么?
实在不敢当,个人在开源方面也是初入茅庐,在组织开源协会活动的过程中,有幸结识一批开源爱好者,大家一起分享开源技术,探讨和传播开源理念,是一件让人很振奋的事情!论收获的话,我想第一个是结识了一批志同道合的朋友,第二个就是通过开源活动大大拓展了自己的视野!
13.你认为一直以来大陆的 Linux 发行版最欠缺的一点是什么?
个人对大陆的Linux发行版没有做过太深入的研究,因此也不敢妄自指出什么缺点。这里谈一点愿景吧!不仅要做出有中国味的Linux发行版,更希望大陆的Linux发行版能在原创技术上下更多功夫(比如开发一套新的高效易用的桌面环境)。
14.一句话说明你对开源是真爱。
是不是真爱不好说,但我对开源是热爱的!
15.近来你最看好的开源项目是什么?
个人对计算机视觉,云计算,机器人比较关注,觉得OpenCV,PCL,ROS,Docker都是非常有前景的开源项目。
16.在哪里可以找到你(线下沙龙、会议、邮件列表、GitHub、常用SNS)?
GitHub:https://github.com/hustcalm
Website:http://hustcalm.me