Soft_Job 板


LINE

很开心看到原PO分享GitHub open source的心得 私以为台湾软体在有资源的不懂软体,懂软体的没资源情况下, 靠open source似乎是唯一的出路,所谓 "自己的软体业自己救" ! 小弟也在这分享自己的open source小小心得, 虽然自己没有repo,但有靠发PR(Pull Request)成为collaborator的经验 :) 先附上在PyConTW 2015 lightning talk的slide: http://goo.gl/fTUPGC 小弟比较有贡献的repo是 (工商一下...XD) * https://github.com/djacobs/PyAPNs * https://github.com/mher/tornado-celery < 重点心得 > PR能不能被merge的关键似乎不在於coding多厉害,解决多复杂的问题, 而是 "PR解决的问题大家觉得重不重要" < 基本 > 必须了解repo解决了甚麽问题,用了甚麽方法,coding structure/convention, patch加在哪边最适合,会不会影响到原本structure,有没side effect等 < 让别人好review/merge > code diff保持很乾净,尽量做到让reviewer好auto-merge, 技巧如 1. push上remote前先git squash整理一下 2. 开PR专用branch,里面只放PR的change 3. 如自己的fork要发PR但是upstream已经变很多 => 先fork最新upstream成新branch再cherry-pick要PR的部分 4. 如PR发很久还没被merge, upstream又变动到conflict的话, 自己先merge from upstream < 提升PR的重要性 > 如果owner迟迟不merge的话,有几种可能, 1. 他懒 2. 他觉得不重要 3. 他觉得PR不够好 要验证是何者的话,就用对PR做点PR(Public Relations)试试看吧...XD * 我会先发一个issue,蒐集遇到类似问题的人,强化重要性。 下面我会贴我的fork/PR请遇到问题的人回去试试看,通常试成功的人会回文 就变成很好的"见证"...XD * 另外,我也会在相关issue,stackoverflow相关问题上贴我的fork/PR, 累积到一定的量,其他user会反过来push owner来merge PR e.g. https://github.com/djacobs/PyAPNs/pull/78 * 积极回应网友issue与对你发的PR的challenge * 经我实验本来PR 2个月没人理,用上述方法後没多久就被merge惹 < 成就 > * 在贡献过程中看到自己的code有帮助到人,如user会在GitHub上或是mail表示 这个code work! 或是表达感谢,自己也会觉得鸠甘心,进而化为继续贡献的动力 * 有些conference可以用contributor的名义申请票就不用跟别人抢...XD < 後记 > 有时候该专案已经跟目前工作/side project距离太远时,会觉得懒得去maintain/ 回应user问题,这时候就是该放手让对此专案更有热情的人接手了。 这也是原PO说的open source精神之一~ ※ 引述《huei90 (huei90)》之铭言: : 本鲁在 Soft_Job 版吸收了各位大大的精华,久而久之也变成了一个 Coding 乡民,我相信每个乡民都有自己的专业,卖鸡排也是个专业,而我很荣幸成为一位程式开发者! : 这篇拖了一年了,我想是时候把两年多在 Github 上开发 Open Source Project 的经验分享给各位,虽然不及神级的开发者,但我始终相信,分享、自由、开放、讨论和开发者是 Open Source 的精神。 : 如果你不懂什麽是 Github,但你多少也应该听过 Bitbucket, CodePlex, Google Code, GitCafe 等等。如果都没听过,那就左转出去吧~ : 文长,对着电脑的各位,夜深了,进入正题前,记得泡好咖啡! : [接触 Github] : N 年前听教授介绍 Open Source 有多威,国外是怎麽玩 Open Source 的,就从那一刻开始,接触了 Github(Github Private Repo 要付费,Bitbucket 免费喔)。用过 Github 应该可以感受到,大众还是趋向 Github,而不是 Google Code。UI/UX、效率、社群都是 Github 优势的关键。 : 开始玩一玩就立马上手,根本就是快快乐乐学 Git/Github,透过 Github 才慢慢了解 Git。一开始使用 Github 提供的 Github Desktop 来 commit push,但後来好像 bug 很多并开始接触 command line,就一直用到现在,现在已经回不去 GUI 了。 : 有付费买 Github Private Repo 的人和公司也不少,但费用也不便宜。还记得之前在公司直接用 Github Importer 把整个公司专案复制一份到 Github 上,不费吹灰之力就完成了,如果你的专案是 svn,转过去 git 也是没有问题的喔! : [前辈] : 两年前自己很菜(现在还是很菜),前辈开始教我多看看别人的专案、学习模仿等等的,到现在我还是很感激这位前辈,没有他推我一把,我可能就没继续 Open Source 下去了。看了几个星期後,前辈让我开一个专案,刚好公司专案是使用 angularjs 当前端架构开发,那就写一个前端验证工具吧。定义需求、规则、功能,再来定义最重要的 SPEC,接着开始 Coding 主要模组,其中当然少不了被前辈念说这怎麽这样写等等之类的。 : 我还记得很清楚,前辈说:那开始写测试吧,写测试的时间是写模组的两倍喔(吓!笑)。问题是,我怎麽知道该如何写测试,而且是用该死的 angularjs,哪懂什麽 protractor,又一堆什麽 BDD/TDD, JUnit, QUnit, Jasmine, Mocha, blablabla。就直接模仿了前辈的程式,也终於把完整的测试给写出来了。从开始写到结束大概花了三个月的时间,前辈也已经离职了。大致初步功能也完成了,DEMO 页面也写好了,就立马开源,这里简称 A-V!(原谅我一下 Open Source 一下开源) : [N4J] : 其实在 A-V 出来之前,我只会 jQuery,正在学习 jQuery 写第三方套件的时候开发了 N4J 的前端工具,N4J 是纯粹学习用的,学习如何使用 Github、结构的 Coding 以及书写 Document。还记得自己写得很开心,多年回去看还记得那时候的兴奋,後来毕业後也用 N4J 拿到了 Offer,无缝接轨毕业没有失业即马上就业。 : [A-V] : 先说说 A-V 目前的状况,有 2xx commits、1x releases、2x contributors,比起大型专案这个数字没什麽,但对我来说,这些数字都是一个肯定,一个成就,我想这是 Open Source 带给我的好处之一,也是让我持续投入时间的原因。 : 完成第一个版本後就马上上线了,写过程式的人都知道,这时候就会出现上线臭虫,版本 1.0.5, 1.0.6, 1.1.0 後,才开始慢慢稳定下来。 : 很快的,我试着在各论坛发表自己的作品,也包括台湾的前端社群,分享自己这几个月下来的成果,但很可惜没人理我,也许是作品没有爆炸性,毕竟只是个前端验证工具。其实不免有点小小的失望,没有人讨论,没有任何回馈。但有一点值得注意的是,angularjs 在这方面还没有太多相关的套件和讨论,所以我算是进入了对的时间点。 : 几个月下来,我持续开发、增加功能、把程式写得更好,来了第一个 issue,後来也陆续来了几个,应该是我之前在某个论坛发文,有人看到进来给我意见。当然我就立即回覆谢谢他们的提议,马上修改或者问说有什麽建议等等之类的。因为有人看到,star 了过後就会更多人看到,甚至有人开始丢 PR 给我,在这里我学到,有人丢 PR 给你,你一定要接受,除非他的程式充满问题,但也不能马上拒绝,要提出自己的理由决定是否要对方修改还是继续讨论下去。其实我在别人的 Open Source 也是这样,丢了一个 : PR,几天内没有人回覆会觉得很伤心,但一旦被接受或者回覆,心理会很开心,太棒了,被接受了!这是一种被肯定,支持的动作。所以只要有人丢 PR 我大部分都会接受。 : 接下来的几个月,更多的 issue 更多的 PR,一个人无法承担所有的问题,所以很多我回覆後就没有继续了,一旦有时间可能是一个月後,才有时间回来看到底发生什麽问题,就这样慢慢把 bug 修复。还记得有一次,有个 issue 几个月下来都解不了,某天晚上到了咖啡厅坐下,瞬间就解掉了,这一定要上一个新 tag 说 “fix feature or major improvement”,其实这是开发 Open Source 的小确幸,只有你知道发生了什麽事,即使你公告了你修复这个功能,会理你的人没有多少。 : 中间当然有停下的时候,完全没有任何声音自己也没动力继续开发解 bug,但突然有人丢了一个 bug 或者 PR 过後,又会瞬间热血起来,不修掉不行的那种感觉,修掉後会很开心,然後又会安静一阵子。大概就是这样来来回回的状况。 : 当然如果你的专案是那种爆炸性的,比如说 pageres、express、awesome,不会是以上的故事 : 前几个月,因为自觉专案掉入了谷底,很久没有更新也没有人问说进度,开了一个 issue “Looking for Collaborators”,自以为会有人自告奋勇的说:“我来”,结果一个都没有。在这里我学习到的是,Open Source 这东西,就是要让他慢慢的酝酿,果然某一天有人丢了个 PR 几乎大改了我整个专案的架构,改着改着他的兴趣就来了,我就问他说要不要当 Collaborator,他也就马上说好。後来我们也开了个 Slack 群组,讨论着 A-V 的开发。也许有人觉得这没什麽,但是这种与网友一起奋斗,讨论着彼此的专业,这份经历是工作永远无法取代的。 : 以上故事就是不停的 loop,持续了两年,直到现在不是一个人在开发修 bug,而是有 collaborators 一起讨论,彼此给意见,这就是 Open Source 的魅力所在。 : A-V 过後,陆陆续续展开对 Open Source 的兴趣,看了很多 license 的选择(还是觉得迷迷糊糊的),期间也开了不少的专案,像是 I-G、G-E、S.S.S、J-S-D 等等的,虽然没有像 A-V 那麽精彩,但难免还是有 issue 有 PR(真的很珍贵)。 : [A-J] : A-J 专案虽然不是我开始的,是我主动寄信给作者要求成为 Collaborator 。A-J 属於爆炸性的专案,现在已经有四位数的星星,通常这类型的专案 issue 和 pr 会多到你接手软会想吐,大概会忽略他一阵子,然後一段时间後再来慢慢处理。但是既然是自己主动要求帮忙的,就有责任继续维护它,Open Source 要学习的其中一点就是-主动,包括提出问题、意见、结果、拒绝,你的任何一个动作都在帮助一个 Open Source 专案的进步,这里就真的是责任制了。每个专案都有自己的步调,你也可以不要主动,让 owner 自行决定专案方向。 : [Gitter] : 其实我觉得 Github 提供的 Issue 已经很好用了,整个专案的讨论都能在 Issue Comment 完成,有必要还能互相 reference,甚至下 label 来整理 Issue 分类。但有时候不是所有人都喜欢在 Issue 问问题,也有可能担心问到重复的问题。 : 如果你的专案很大,你可以建议大家到 stackoverflow/irc 寻找问题,但对於比较小的专案,可以使用 Gitter。Gitter 是一个聊天室,会自动整合 Github 专案,任何的动向都会纪录在 Gitter 内,让所有人进入一个独立的空间讨论问题。多一个管道让大家凝聚,其实多少也能帮助到你,因为一个聊天室里面,大家都能发言,你不回答其他人会帮你回答的。 : [已死?] : 常常逛 Github,你会发现有很多有趣的专案,但看到最新的更新时间,什麽!是一年前。这时候就会开始脑补,是不是专案已经没有在开发了,作者似乎也消失了,有好多 issue 好多 PR 都没有被接受。自己也尝试丢了 issue 询问专案开发进度,当然也没得到任何回应。偶尔还是会觉得很可惜,这麽棒的一个专案是不是被抛弃了。 : 但是不要气馁,就因为这是 Open Source,这是一个开放的社群,任何人都有权利查看修改更新(有的 License 是不允许的),先查查看 fork 分支,有时候分支的星星数还会比原本的专案多,再看看 issue 里面有没有人在讨论替代方案。最後一招就是自己 fork 自己改,当然你也可以开一个全新的专案来做一样的事情。 : [END] : 以上是我在 Github 上学习 Open Source 的经验分享。对我来说,逛 Github 和 Facebook 一样重要,都成为生活中的一部分。打开 Github 点击 Explore 常常会有意想不到的新专案,也是吸收新知识、新趋势的好地方。 : 有人说,维护 Open Source 专案,就像是开一间公司,你要不停的对他持续开发,对的时机对的功能,持续研究并找寻突破点,公司才能活得久。 : 原谅我把专案的名字都缩写了,因为这不能是个广告文,但 : 不瞒各位,我就是来骗赞数的啦,骗星星为其次,再来骗 followers,但我一定会做好做满,继续 Open Source。 : 不知道大家的开发 Open Source 经验是什麽呢? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.114.196
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1451014129.A.D43.html
1F:推 j84255801912: 学习了 12/25 12:58
2F:推 Starflyx: 推 12/25 16:21
3F:推 Hevak: 推这篇XD 12/25 19:00
4F:推 rx1304: 推推 12/26 10:04
5F:推 andreli: 推推推 12/26 10:41
6F:推 arenda: 推! 12/27 19:00







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP