阅读更多
最近我在GitHub连续冲刺了365天,我想写篇博客,记录下为什么开始每天提交,以及它对我的生活带来了什么变化。



我对贡献代码的要求比较简单:
  • 每次贡献必须有意义,必须有实际影响。我可以提交只有空格的修复,但是它们不应该被算作有影响的提交。
  • 它必须是开源的。

早在2013年夏天我就开始了,略早于John Resig,他写了关于每天提交代码的博客,但是我的第一次尝试失败了。正是他的文章鼓舞了我,告诉我不是一个人在战斗。

我和John有着同样的理由:我热爱业余项目(side project),但是我不乐意为了完成它们而投入整个周末。有时候,我在周末投入一整夜,但是这帮助不大:去做业余项目的时间跨度太大了,我经常想不起来在做什么以及项目的下一个想法是什么。我总要用很长时间才能重新回到项目上。另外,我不想在周末的两天里完全忙于业余项目,因为我想花些时间和朋友在一起,以缓解一直坐在电脑前面的紧张状况。

我开始每天贡献代码的其它原因是,我认为这很可能将提高我的技能。
好的方面

改善我的业余时间管理
我的业余时间整个计划发生了变化。往好了讲,我开始计划和管理我的业余时间了。在此之前,我没有真正考虑过工作之外的时间。在完成白天工作之后,我突然(震惊,震惊!)有了一些业余时间却不知道做什么。

技能提高
每天忙于代码,我没有看到每天的工作真正地提高了我的技能。由于我在学Erlang,用Scheme编写了我的第一个程序,我在简历里增加了新语言。我仍然在写Erlang。

我还学到了,较大型开源项目是如何运作和组织的,以及开源对于公司意味着什么(我甚至可以说,对于每家公司意味着什么,但这需要另一篇博文了)。我不是说,开发不包含任何开源组件的产品就不赚钱,据我看来,每个项目都拥有大量的开源组件,盈利并在长期从更好的代码上获益,这是有可能的事情。

另外,我在数不胜数的知识点上提高了我的知识和技能,列举一些:解析和词法分析、分布式计算、架构、安全、项目(代码规范)之间快速切换、理解代码以及代码review。我也提高了软技能:沟通、团队精神、解决冲突、指导和处理高难度/突发情况下的问题。

一份新的工作
刚开始时,我有很多自己的小型业余项目,十分有趣,但是到了某个阶段,我感到不开心了,没人fork,貌似没人使用。我是唯一的开发者,我没有伙伴可以讨论解决方案或得到review的途径,而这是提高代码和技能的最佳途径。

我决定向较大型的项目提交代码,既然我从0.4版本就在使用node,是一名日常npm用户,我就向npm提交了一个补丁。Isaac Schlueter审查了我的一个PR,真不错,这让我为npm提交了更多的代码。

npm registry使用CouchDB做数据库,但是我不知道如何使用。我开始把CouchDB文档翻译成德语,这样我就学会了如何使用CouchDB和如何帮助项目。有一天,我想托管我自己的私有registry,当时我的硬盘里有CouchDB源代码,我不确定为什么registry没有引导。当通读代码时,我看到CouchDB有一个JavaScript MVC app,它不是官方发布的。这一天我开始向CouchDB贡献代码,而npm的PR有一堆,我不想再提交了:我不想让花时间查看的审核人感到太难。我向CouchDB贡献了更多的代码,因为他们真是不错的人们。

有时候,npm有一些与Node.js直接相关的bug和问题,因此我也向Node.js项目提交代码。

加入所有这些项目,得到review,与其他很多不同的贡献者协作,阅读其他人写的大量代码,审核补丁,和用户交流,解决他们的问题,实实在在地加强了我的技能。

在2014年,我足够幸运,得到了一份工作,我因为致力于开源项目CouchDB而获得了回报。
交新朋友
经过在开源技术社区的工作,我结识了大量新朋友。我遇到很多忙于同样工作的协作者,还有人在使用我参与的项目。他们大多比我聪明,至少对于我参与的项目来说,我可以说,他们都是非常优秀、思维开放的人。

他们就是我在发送了最初PR之后、还提交了更多补丁的理由。我认为,任何人没有兴趣把业余时间(甚至工作时间)投入到一个充满敌意的、糟糕的环境里。
坏的方面

每天贡献代码并真正坚持下来,不会一直都顺利。我想,大部分让人郁闷的事情都是那些对开源产品有着古怪期望的人们,他们免费用着人们在业余时间维护的产品。

npm里的这个issue是个例子,我过去和Domenic一起在业余时间做了大量工作,Domenic也花了大量时间去维护npm:



结论

每天向开源软件贡献代码的决定,改变了我生活的很多方面。我现在有偿参与着开源,在很多项目中交了很多朋友,这提高了我的技能。

我乐于看到公司支持他们的员工向开源软件贡献代码—他们99.99%都依靠开源软件,比如,他们的开发工具,直接应用的产品,甚至两者兼而有之。令人悲哀的是,对于大部分员工来说,在工作时间参与开源软件是相当难的,不是每个人都有足够的特权能够每天花费业余时间里的1小时参与到开源软件里。

像Kyle Simpson和Mathias Lafeldt这些人开始了类似的项目,貌似也改变了他们的生活,还有他们看待世界的方式,我对未来充满着渴望。

原文出处:robinson_k译文出处:腊八粥
  • 大小: 62.9 KB
  • 大小: 50.2 KB
来自: 腊八粥
2
0
评论 共 2 条 请登录后发表评论
2 楼 moshalanye 2015-03-09 16:43
凄冷的专注,执着的唯美
                   --心灵深处的自由
1 楼 forcer521 2015-03-09 09:49
截图最后“zhitong”亮了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • matlab说话代码-finalyearproject:VictorCroisfeltRodrigues的最后一年的项目“大规模MIMO系统中

    matlab说话代码大规模MIMO系统中的空间相关和低复杂度信号处理技术。 该存储库包含以下下一个年度项目(FYP)的PDF: Victor Croisfelt Rodrigues,“大规模MIMO系统中的空间相关性和低复杂度信号处理技术”,巴西...

  • 如何向开源社区做贡献

    文章目录前言为什么要向开源社区做贡献向开源社区所做贡献的途径和方法(参与社区的方法)向开源社区做贡献所具备的一些技术基础如何更有效地学习开源项目的代码在社区里面提一个问题的正确姿势?参与开源项目协作...

  • 致 Tapdata 开源贡献者:聊聊 2022 年的进展和新一年的共建计划

    在内、外部开发者的合力之下,过去一年 Tapdata 新增数据源近20个,实现了60+数据源的接入能力。一个人可以走得很快,一群人可以走得更远,2023年期待与您共创更受欢迎的开源项目。

  • 第一次开源项目代码贡献 - prometheus-nginxlog-exporter

    几年前老罗向 OpenSSL 捐献手机发布会门票款,我在上班的地铁上看到《隐形战友》这篇文章,有点激动,许下一个心愿:此生哪怕为开源项目贡献一行代码。后来在做模型开发的时候开始参与社区,翻译了一些 Flink 的文档...

  • 你知道腾讯程序员一年写多少代码嘛?

    3月18日,腾讯对外发布了《2020年腾讯研发大数据报告》,介绍了过去一年腾讯在研发,抗疫,内部协作,开源等方面的发展成果。 让乐字节fafa带你们一起来看看吧 腾讯54%的12级以上技术工程师年均代码量超过3万行,...

  • Jeff Dean:一年开源12款新工具,谷歌负责任AI原则落地生根

    【新智元导读】自从谷歌宣布AI原则开始,已经过了一年时间。如今Jeff Dean和Kent Walker对原则获得的成果做了汇报。分享他们工作的最新消息,包括内部教育、工具和研究、评估流程、以及外部合作等,进一步验证了该...

  • 有人痴狂,有人跑路,开源软件新一年的冰火两重天

    最近有关开源软件的话题始终占领着IT界的新闻头条,Log4j开源软件的惊天漏洞,才刚刚出现不久,Fake.js的作者也惊天删库跑路了,CurL的作者怒怼苹果只会白嫖开源却不出力,Linux的祖师爷Linus也不知所云地在Github为...

  • 如何向开源软件贡献自己的力量

    JEECG第三期招募新成员!!! ...我经常看见很多学生在很多论坛里提问“我想向开源社区贡献源码,但是该怎么做呢?”。有很多种方式可以贡献源码,我列出了很多,希望能够对你们有多帮助。  1

  • 线性跟驰模型的matlab代码-final_design_ws:最后一年的项目。使用dbw_mkz工具箱进行仿真,控制器设计,车道识别,车道跟

    此外,如源代码(2018.11.23)中所述,软件包``dbw_mkz_vision_sim''的源代码尚不可用。 该项目从Dataspeed官方提供的最复杂的演示开始,即“ lane_keep_demo.launch”,在该演示中,汽车被控制在行车道上。 下图...

  • 波士顿动力开源代码_失去动力两年后,我如何开始开源之旅

    波士顿动力开源代码by Hemakshi Sachdev 通过Hemakshi Sachdev 失去动力两年后,我如何开始开源之旅 (How I started my open source journey after being demotivated for two years) Contributing to open source...

  • 论文代码不开源,应该被直接拒稿?

    公众号关注“GitHubDaily”设为 “星标”,每天带你逛 GitHub!转自机器之心前不久,图灵奖得主 Yann LeCun 公开质疑谷歌大脑的论文无法复现,引起了社区热议。Le...

  • 字节跳动出品的 Flutter 应用内调试工具 UME 正式开源

    欢迎参与开源贡献与共建 由于很多功能依赖引擎及工具链的改动,因此开源版的 UME 相比于公司内部版本在功能上进行了很多精简。但开发团队也在不断寻求解决方案,避免修改引擎,或将改动合入官方仓库,将更多实用...

  • 特斯拉开始发布其汽车的开源Linux软件代码

    这是一个公开的秘密:特斯拉汽车不仅通过电池供电,而且通过开源软件供电。不过,直到最近,特斯拉还没有履行其在开放源代码许可下的义务,但现在特斯拉终于发布了一些LinuxS代码,用于ModelS和X汽车。 TeslaGitHub...

  • 做开源 18 年,他想把中国开源带向世界 | 人物志

    做开源 18 年,他想把中国开源带向世界 | 人物志 本期采访人物: 星爵,LF AI&DATA 基金会主席、Zilliz 的创始人兼CEO,曾长期就职于 Oracle 美国总部,Oracle 12c 多租户数据库奠基人之一。大数据、人工智能和高...

  • 拥抱开源,我们是认真的-网易易数2020年Apache Spark贡献总结

    开源软件正在吞噬世界,在未来,没有一家企业能够脱离它们,也不可能存在一家企业能够脱离开源的开发协作方式,也没有一家企业会拒绝这种本质上是双赢的局面。本文来自网易数帆旗下网易易数研发团队,记录其2020年在...

  • 开源有魔力 - DolphinScheduler 的 Apache 之路

    一个有梦想的程序员,欢迎与我们同行,用开源的魔力让本土项目崛起、走向全球,让本土开源自立于世界民族之林;用开源的魔力把梦想变成现实,让自己的一行行代码、文档成为自己的骄傲!

  • 开源相关知识介绍

    开源相关

  • 封禁丑闻不断,开源代码托管动了谁的奶酪?

    3月24日传出消息,GitHub封禁了一个属于微软的前端开源项目Aurelia,理由是“项目中有两名来自伊朗的外部贡献者”。作为全球最大的开源软件代码的托管平台,GitHub理应是全球...

  • CodeGuide 300+文档、100+代码库,一个指导程序员写代码的,Github 仓库开源啦

    我和弟兄们雄心壮志,坐公交车去面试,谁知道求职不到半个月,每天平均1.3个人挂在八股文造火箭上,一年内6个兄弟去了外包。 佛祖保佑! 算命的说我是“CRUD搬砖996”,不过我不同意。我认为出来混的,

  • COMSOL中基于波束包络法的三维弯曲光纤波导传输仿真及损耗分析

    内容概要:本文详细介绍了利用COMSOL进行三维弯曲光纤波导传输仿真的方法和技术要点。首先探讨了几何建模的关键步骤,如使用参数化螺旋线创建弯曲结构,并强调了避免端口模式失配和平滑过渡的重要性。接着讨论了材料设置中的注意事项,尤其是处理各向异性材料时自定义坐标系的应用。文中还深入讲解了波束包络法的核心思想及其相对于传统有限元法的优势,特别是在内存占用方面。此外,提供了具体的求解技巧,包括开启渐进扫描功能以及调整数值耗散参数来提高收敛性。对于后处理部分,则着重介绍了如何通过线积分计算弯曲损耗,并展示了通过脚本自动化生成模场分布动画的方法。最后比较了波束包络法与FDTD方法在不同情况下的表现差异。 适用人群:从事光通信系统设计、光纤器件研究的专业技术人员,以及对电磁场仿真感兴趣的科研工作者。 使用场景及目标:适用于需要精确评估光纤弯曲引起的各种效应的研究项目,如数据中心内部布线优化、新型光纤设计等。主要目标是帮助用户掌握高效准确地进行复杂三维弯曲波导仿真的技能,从而更好地理解和预测实际应用中的性能指标。 其他说明:文中不仅提供了详细的理论解释和技术指导,还附带了许多实用的操作提示和代码片段,便于读者快速上手实践。同时提醒读者注意一些常见的错误来源,如材料色散设置不当可能导致的结果偏差等问题。

Global site tag (gtag.js) - Google Analytics