怎样成为一位贡献者
中国开发社区一向是对开发软件索取无度,贡献却微乎其微。如此现状原因有很多,借口更多。 中国软也一向是年轻化,长江水后浪退前浪,前浪死在沙滩上,并没有像海浪一样,推向高潮。 能够在开源设区有影响力的灵魂人物屈指可数,影响力也十分有限。
文章出处(http://netkiller.github.io/)
有很多年轻一代人对开源十分向往,也有激情投入进去,想有一翻作为,但是因素阻碍了他的向前进。
没有开源文化,没有社区气氛,无处投奔。 十分需要领路人 为什么要成为一位贡献者
你是不是发现你比较健忘的人,经常一分钟之前想做的事情,一分钟之后都忘记了。一年之前很精通的知识,可能一年之后也忘记的一干二净。 年轻时你可能更依赖大脑,但到了而立之年你就会像上面所说的。那么这么多年学的东西,等你突然用到一个几年前的技术,你会发现你必须重新学习。 但是你如记录下文档,便可以通过索引章节快速回忆,同时章节中的例子你可以拷贝复制直接使用。 另外我们也需要将经验留给后人
成为贡献者有什么好处?
当然有好处,最直接的就是社区影响力,把自己推销出去。
之前你为了一份工作可能需要投许多简历,然后被动的等待HR通知你面试,面试过程相当短暂,在短暂的时间里你要展现自己是非常困难的。但当你有一定影响力的时候,很多人会主动了解你,你会发现被动成主动,很多公司邀请你加入。 成就感,你会发现没加入一个群都有人认识你,叫你“大神” 学习更有条理,更系统。之前你只懂得使用某一个软件的某一功能,因为写作需要,你必须搞清楚他所有的功能,才能传授给他人。 写作方式
我的写作方式,并不是刻意去写,也不会占用业余时间(私人时间,如节假日),而是在工作中记录概要,待空闲时完善章节。 工作中要到什么我就写什么,例如: 需要开发一个功能需要用到pthread.h, 如果我用过这个库,我会直接翻看我的文档pthread章节。我没有用过pthread便会google查找 pthread.h 用法以及例子,同时在我的文档中增加pthread章节,以及例子,以待下次可以直接从该章节获得帮助。
文章出处(http://netkiller.github.io/)
你会发现自己的文档与官方文档的不同:
经过细心过滤,上面的例子都是常用的,大部分人会用到的。 这些章节都是经过安排的,形同于索引,定位准确且迅速。 而官方文档太过庞大,找到你需要的内容真要花点时间。 我的文档就是这样一点一点积累起来的,所有内容都是工作中遇到,如果再次遇到相关内容,便完善章节。
怎样切入
在参加项目之前我要说明一下,这可能是给你泼冷水。很多爱好者都出于三分钟热血,头脑发热。 你不要想着立即加入项目,作一番轰轰烈烈事情,写文档也好,写程序也好,都是苦修行,在相当长的一段时间你会非常寂寞,没有人理解你的贡献,都不看好你,认为你不会成功。
选择一个你感兴趣的项目,多看看历史提交,看看别人怎么做 做一些利索能及的事情,如改改错误,为文档增加索引 要熟悉项目风格与结构 你有大量的东西需要学习,包括各种工具,团队协作,团队沟通 前期条件
你需要懂得怎样使用GIT版本控制工具 你必须熟练使用Docbook XML标签 你需要了解开源项目的运作方式 懂得使用GITHUB网站提供的服务 新手指引
这里给新手安排的一个学习计划,学习完成即可参加项目
首先去http://www.github.com 注册一个账号,熟悉一下github.com提供的各种服务 fork 我们的项目到自己的账号下,你可以随意修改这些代码 学习 Docbook XML 创建基本实例 学习 GIT 版本控制工具
文章出处(http://netkiller.github.io/)
团队协作 什么是团队合作?
团队合作就是做好你自己的事情,不给其他人找麻烦。 ------ 我是这样认为的
开源团队合作与企业团队合作的不同是,企业团队更多是以项目为中心,开源团队是以精神为中心。不过越来越多企业将开发员文化融入其中。 国内倡导的团队合作又有一层理解,例如“华为”人人都加班,你不加班怎么融入团队?其实国内嘴边挂的“团队合作”更多是相互帮助, 原因是外国团队核心都是高级(Senior)工程师,而国内主力是Junior,需要少量Senior带着些Junior。
如果你不能理解什么是“团队合作”其实很简单看“足球”;还有一个例外“排球”,排球运动中有一个特别的位置“自由人”,很符合国情:)
开源团队队员之间合作更要默契,对成员要求也比较高,团队合作的精神是最重要的。 由于参与者过于分散,可能跨域,甚至跨时区,无法实现面对面沟通。 首先沟通就是一大问题,其次是解决冲突,冲突是指代码,文档出现多位队员的同时修改,出现了多个版本,需要你手工找出正确的部分。
提高自身能力
在团队中学习是非常有趣的,也是非常有效率的,你能感觉到你的差距与不足,会有种紧迫感,跟不上节奏,促使你去学习。 持续提高自身水平,减小与队友的差距,至少不会给团队纸制造麻烦。 这里你必须给自己制定一个学习计划,设置几个阶段性的目标,有必要把队友作为超越的对象。
写作前与写作后(开发前与开发后)
你需要每天都做得事情 开发前: 更新项目,每天将新代码/文档更新至本地 解决冲突,解决你的代码与其他队员产生的冲突 编译项目,看看冲突是否解决,项目是否可以编译通过 开发中......
开发后:
编译项目,确认你新增的内容可以编译通过,这个步骤十分重要。 如果你提交的代码其他队员checkout后不能通过编译,会影响所有队员的工作,所有队员都要花时间解决你代码问题后才能干自己的事。完事后所有队员都会提交一个修复你代码bug,这样又产生了数个新冲突。 将新增加的文件添加到版库 提交代码
文章出处(http://netkiller.github.io/)
团队沟通
沟通的差异,中外在沟通上存在很大差异,我总结中国人的沟通方式是“同步”的,欧美人的沟通方式是“异步”的。 所谓同步沟通是指,A 询问 B 一些事情,B 需要立即回答,否则 A 等待 B 直至得到回答。A 结束后才能轮到下一位。 那么异步沟通呢,异步是指 A 将问题发送给 B, A 无需等待回应,这是A可以处理其他事情;同时C,D,E... 也会将问题发送给B,当B会合适的时间同意答复所有问题。 事实上证明异步沟通效率更高。
开发项目采用邮件列表 + IRC 的方案
版本控制与分支
任务分配
解决冲突
合并操作时最烦琐的
fixbug
Release
文章出处(http://netkiller.github.io/)