Lessons Learned in Open-Source
I chose to do Google Summer of Code because I wanted a change of domains. While I enjoyed building products in healthcare, security, and data mining, I wanted to switch things up and work on something else. GSoC cured this feeling of wanderlust and energized my interest in programming in two ways:
I became immersed in the open-source community. Because I had to jump directly into an open-source project, I no longer have cold feet about diving into mailing lists, etc. and getting involved with FOSS.
I got to work directly with compilers, and I have wanted to do this for as long as I’ve written Scala. It’s a hairy world out here :)
Additionally, open-source has benefitted me and forced me to grow in ways that I did not anticipate.
I work remotely and primarily communicate with my mentor over email and GitHub discussions. This made it important for me to clarify my thoughts and questions in order to minimize the amount of time spent explaining myself. This is markedly different from working in a physical office where you have the abilitiy to talk, draw, and pair program.
Most notably, this distance has affected how I report problems. In every issue, I now include the hash of the commit where I discovered the problem. In addition, I learned that “minimal” examples can often be made far tighter than you may first think. Line count matters!
I already created new branches for features and fixes, but I did not branch out from those branches. This is a problem once a branch has been involved in a pull request. Any changes to that branch show up in the PR, dirtying it and potentially rendering the PR invalid. I now create tons of WIP branches and only merge them once they’re no longer in P.
Also, I already comitted a lot, but man: commits should really just have one responsibility. It makes changes way easier to reference.