关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 程序人生 »一年内每天向开源贡献代码所发生的事情

    一年内每天向开源贡献代码所发生的事情

    2015-03-06 00:00:00 出处:王垠的博客
    分享

    最近我在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这些人开始了类似的项目,貌似也改变了他们的生活,还有他们看待世界的方式,我对未来充满着渴望。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    PNY 推出 CS3250 M.2 NVMe PCIe Gen5 x4 SSD,高端计算新标杆

    富士康承诺在泰米尔纳德邦投资 1500 亿卢比,创造 14,000 个就业机会

    NetApp Insight 2025:NetApp 和 Red Hat 加强协作,利用 Red Hat OpenShift 虚拟化推动 IT 现代化

    2025 年 OCP 全球峰会:Credo 推出 ZeroFlap 光收发器——人工智能网络光学器件的可靠性革命

    Kong 发布 Volcano,一个用于构建 AI 代理的 MCP 原生 SDK

    昂瑞微科创版IPO成功,上峰水泥跨界投资

    AI赋能,场景智变:第16届深圳国际移动电子展引领场景化消费新浪潮

    OpenAI估值5000亿美元,成全球初创公司中的“估值之王”

    战略突破:三菱电机以匠人心态引领功率半导体技术革新

    英伟达5亿美元投资英国自动驾驶初创公司Wayve

    IT头条

    Synology 更新 ActiveProtect Manager 1.1 以增强企业网络弹性和合规性

    00:43

    新的 Rubrik Agent Cloud 加速了可信的企业 AI 代理部署

    00:34

    宇树科技 G1人形机器人,拉动一辆重达1.4吨的汽车

    00:21

    Cloudera 调查发现,96% 的企业已将 AI 集成到核心业务流程中,这表明 AI 已从竞争优势转变为强制性实践

    02:05

    投资者反对马斯克 1 万亿美元薪酬方案,要求重组特斯拉董事会

    01:18

    技术分享

    大型网站的 HTTPS 实践(三):基于协议和配置的优化

    ubuntu下右键菜单添加新建word、excel文档等快捷方式

    Sublime Text 简明教程

    用户定义SQL Server函数的描述

    怎么在windows 7开始菜单中添加下载选项?

    SQL Server 2016将有哪些功能改进?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。