What happens when you contribute code to open source every day for a year

What happens when you contribute code to open source every day for a year

My requirements for contributing code are relatively simple:

Each contribution must be meaningful and must have actual impact. I can submit whitespace-only fixes, but they should not be counted as impactful commits.

It has to be open source.

I started back in the summer of 2013, slightly before John Resig wrote a blog about daily commits, but my first attempt failed. It was his article that inspired me and told me I was not alone.

I have the same reason as John: I love side projects, but I don't like to devote the whole weekend to them. Sometimes, I work on them overnight on the weekend, but it doesn't help much: the time span to work on a side project is too long, and I often lose track of what I was working on and what the next idea for the project is. It always takes me a long time to get back to the project. In addition, I don't want to be completely busy with side projects for two days of the weekend, because I want to spend some time with friends to relieve the tension of sitting in front of the computer all the time.

Another reason I started contributing code on a daily basis was that I thought it would likely improve my skills.

The good

Improve my spare time management

My entire plan for my free time changed. I started planning and managing my free time, to put it in a good way. Before this, I hadn’t really thought about my time outside of work. After finishing my day job, I suddenly (shock, shock!) had some free time and no idea what to do with it.

Skill Improvement

Being so busy coding every day, I didn't see that the daily work really improved my skills. Since I was learning Erlang and wrote my first program in Scheme, I added a new language to my resume. I still write Erlang.

I also learned how larger open source projects operate and are organized, and what open source means for companies (I would even say for every company, but that would require another blog post). I am not saying that you can't make money developing a product that doesn't contain any open source components, in my opinion, it is possible for every project to have a large amount of open source components, be profitable, and benefit from better code in the long run.

Additionally, I improved my knowledge and skills in numerous areas, to name a few: parsing and lexing, distributed computing, architecture, security, fast switching between projects (coding standards), code understanding, and code review. I also improved my soft skills: communication, teamwork, conflict resolution, mentoring, and handling difficult/emergency situations.

A new job

In the beginning I had a lot of my own little side projects which were fun, but at a certain point I became unhappy, no one was forking them, no one seemed to be using them, I was the only developer, I had no peers to discuss solutions with or ways to get reviews, which is the best way to improve your code and skills.

I decided to commit code to the larger project, and since I was using node since version 0.4 and was a daily npm user, I submitted a patch to npm. Isaac Schlueter reviewed one of my PRs, which was great, and it led me to commit more code to npm.

The npm registry uses CouchDB as a database, but I had no idea how to use it. I started translating the CouchDB documentation into German so I could learn how to use CouchDB and how to help the project. One day, I wanted to host my own private registry, and I had the CouchDB source code on my hard drive at the time, and I wasn't sure why the registry wasn't bootstrapped. While reading through the code, I saw that CouchDB had a JavaScript MVC app that was not officially released. This day I started contributing to CouchDB, and npm had a bunch of PRs that I didn't want to submit anymore: I didn't want to make it too difficult for the reviewers who took the time to look at it. I contributed more code to CouchDB because they are such nice people.

Sometimes, npm has some bugs and issues that are directly related to Node.js, so I also submit code to the Node.js project.

Joining all of these projects, getting reviews, collaborating with lots of different contributors, reading a lot of code written by other people, reviewing patches, and talking to users and solving their problems has really strengthened my skills.

In 2014, I was lucky enough to get a job where I was rewarded for my work on the open source project CouchDB.

Make new friends

I've made a lot of new friends through my work in the open source technology community. I've met a lot of collaborators who are busy with the same work, and people who use the projects I've participated in. Most of them are smarter than me, and at least for the projects I've participated in, I can say that they are all very good and open-minded people.

They were the reason I submitted more patches after sending the initial PR. I don't think anyone should be interested in investing their spare time (or even work time) into a hostile, bad environment.

The bad side

Contributing code every day and actually sticking with it isn't always easy, and I think most of the frustration comes from people who have weird expectations of open source products and are using for free what people are maintaining in their spare time.

This issue in npm is an example. I have done a lot of work with Domenic in the past, and Domenic has also spent a lot of time maintaining npm:

in conclusion

The decision to contribute to open source software on a daily basis has changed many aspects of my life. I am now paid to participate in open source, have made many friends in many projects, and have improved my skills.

I love to see companies support their employees in contributing to open source software - 99.99% of them rely on open source software, for example, their development tools, direct application products, or even both. Sadly, for most employees, it is quite difficult to participate in open source software during work time, and not everyone is privileged enough to spend an hour a day in their spare time to participate in open source software.

People like Kyle Simpson and Mathias Lafeldt started similar projects and it seemed to change their lives and the way they see the world, and I'm excited for the future.

<<:  10 Tips to Become an Outstanding Java Programmer

>>:  Do you remember all these things Apple did during Cook's era?

Recommend

Tesla's sales are slowing down? No, this is just the beginning!

How long has it been since Tesla launched a new m...

How to write valuable copy?

Copywriting is an important part of brand promoti...

A year has passed. How should we evaluate the Chinese version of XBOX ONE/PS4?

Being able to buy XBOX and PlayStation game conso...

Short video operation: Vlog melee, who can break through?

After posting the video "Going to the Superm...

A case study of the WeChat Moments distribution that sold 8,000 copies

Event background: On November 13, 2019, I saw a c...

Tired of chicken soup? Try a bowl of "Dong Ying Gong" soup.

[[153975]] Recently, the cold wave in the capital...

Why have domestic mobile phones made a comeback?

Global mobile phone market landscape Data from th...

The correct steps for creating short videos

I have to stick to the short video flag I set at ...

Qunar Mobile APP Product Analysis Report

According to iResearch Consulting Group’s monitor...

Can WeChat Mini Programs upload multiple Mini Programs to one account?

Q: Can a WeChat Mini Program upload multiple Mini...