这是一个真实的小故事。
虽然有人生来就懂得这个道理,也有人写一辈子代码也未必会明白,但是我相信更多的人要用整个职业生涯去体会这里的精髓。
OpenSource
故事概要
一个小程序猿(代号小Y)闲来无事,决定探索一个陌生的开源消息组件ZeroMQ,以图未来有一天可以为改变世界做出贡献,可是他遇到了一个installing的问题——所有问题中最低级的那种。
confiure failed ! make failed ! Fuck !
Search & Open Issue
Baidu.com >> Google >> issues (正确的姿势应该反过来!)
20160417-issue-filter.png
常规首发看起来,没什么收获,万般无奈之下,小Y操着瘪犊子英文勇敢地open 了一个Issue。
Disscution
configure log
make log
balala balala
**其实此刻小Y是不抱什么希望的。
**I can’t believe !
地球另一头,正在喝着咖啡的同行居然回复了:
Does the same problem happen with libzmq master from this repository?
I've got no way to test it, but in theory at least the "select" method should work.
Maybe it's the lack of #include <time.h> in acinclude.m4, line 871? If I'm reading it correctly, the SunOS 5.1 manpage says it should be used: http://www.unix.com/man-page/sunos/3c/select/
Revert
Could you please run: git revert b6080a798
经过一番勾搭,以及小Y诚恳无耻的描述,对方似乎开始怀疑自己啦,开始建议切换代码版本试试。
有戏!
New branch for Me !
几天的等待后,他们居然为我开了一个branch(分支)!**
Could you please try from this branch of mine?
git remote add bluca https://github.com/bluca/libzmq.git
git fetch bluca
git checkout solaris_fixes
I've got a couple of changes that should fix that problem and the one caused by the commit you reverted. But I have no Solaris box to test them (trying to setup a VM with Solaris 10 x86) so I wanted to be sure it works before sending them. Thanks!
Surprise!!
回归合并
Pull & Merge
bluca的分支代码修改不仅解决了小Y的问题,还通过Pull request
正式成为官方版本的一部分。
头一次以这样的方式体验“分支-合并”流程,小Y还是非常震撼的!
20160417-fix-4.png 20160417-fix-3.png贡献(Contribution)
鉴于小Y的贡献,社区决定为他颁发勋章!
是的。小Y甚至还看不懂该项目,也没有提交一行代码,他获得了和开发者一样的勋章。
这个体验真不错哈!
Contributions that are counted
20160417-contribution-1.pngIssues and pull requests
Issues and pull requests will appear on your contributions graph if they meet both of these conditions:
They were opened within the past year.
They were opened in a standalone repository, not a fork.
Commits
Commits will appear on your contributions graph if they meet all of the following conditions:
The commits were made within the past year.
The email address used for the commits is associated with your GitHub account.
The commits were made in a standalone repository, not a fork.
The commits were made:
In the repository's default branch (usually master)
In the gh-pages branch (for repositories with Project Pages sites)
In addition, at least one of the following must be true:
You are a collaborator on the repository or are a member of the organization that owns the repository.
You have forked the repository.
You have opened a pull request or issue in the repository.
You have starred the repository.
总结
基于Github的开源管理流程故事流程图,真是回味无穷。
在小Y的习惯的文化中,似乎只有提交代码才算是贡献,发起的问题会潜意识被认为是负担,是非常令人厌恶的。
这完全符合人性。只是基于长期的工程实践,开源社区通过一系列制度设计:Issues List, (勋略)contributions graph 等,不断鼓励社区普通用户参与到项目的建设中来。
从开发者的角度看,积极主动地融入社区交流,平时注意跟踪项目演进、新版本特性等,应用实践中的问题积极反馈、甚至帮助其他开发者,也是提高自身水平的重要方法,应成为一种习惯。
此时此刻,无数的小白用户在检索问题,open issue....
也有无数的大神在利用业余时间回馈社区:回答问题、fix bug、create respository .....
强大的、世界级的信息基础设施,正是由于这些小白和大神们的贡献,周而复始,水滴石穿。
网友评论