Open Source: Getting Started is Hard
I started contributing to open source projects in May of 2022, so not long. I tried to start contributing to open source projects beginning in 2020. If not for PyCon US 2022, then it might have been a few more years before I got started. In many ways, my story feels typical. Learn how to code. Know that open source is important. Try to contribute. Fail. Some time passes. Again, try, and again fail. Some time passes. Circumstances line up. Try, and succeed. There is a feeling of elation as you start putting in work for the community. After a small time on the other side, the reasons you struggled to get started are obvious and you think about the people languishing where you were just a few months ago.
Getting started is hard because the skills required are diverse:
- An intermediate level understanding of Git. Setting up multiple remotes, forking repositories, and resetting your head happen.
- Clear concise technical writing. You will infrequently if ever meet in person so you have to hash out technical issues with the written word.
- Sphinx (ReStructured Text) and/or Markdown. Most projects are documented with one or both.
- Docstrings and Tests. If you contribute new code, most projects will not accept the code until you add tests and include docstrings.
You don’t need to know all of this to get started, but it can be a little unnerving to work adjacent to something you don’t understand. That is another reason why getting started is hard.
Getting started is hard because of all the little details:
- What is a forking workflow for git?
- How long can I work on my issue before someone else takes it?
- What do I need to do once I open a Pull Request (PR)?
- How do I get back to the branch I was working on?
- What do I check to make sure my bug fix solved the issue?
- How do I check that I did not mess up any other part of the documentation when I made my edits?
The elephant in the room:
All these issues are solvable, some more easily than others. All of them are very google-able. However, in aggregate the issues create an elephant sized barrier to entry. I now realize that I needed a person to help me navigate the early part of the process. In my early failures, I made faux pas without realizing that I was doing so.
Talking to a person to help with the early process is not discussed in anything I have read. I am sure it is on the internet somewhere but I have not stumbled onto it. Not sure what the solution is, but more to follow.