Continuing the series on the various ways one can learn about the technical aspects of Bitcoin, in this article we will focus on good first issues in the Bitcoin Core GitHub repository.
Get to Know GitHub
Bitcoin Core is an open-source project. The code and documentation can be viewed and downloaded by anyone with an internet connection. Bitcoin Core (and many other software projects) use the open-source and nonproprietary Git version control system for tracking changes in the codebase across distributed contributors.
Git was developed by the creator of the Linux kernel, Linus Torvalds. In contrast, GitHub (recently acquired by Microsoft) provides proprietary software which offers convenient tools and social features around the Git protocol. Bitcoin Core is not dependent on GitHub for its ongoing survival though it would be inconvenient and disruptive if the project was suddenly moved or prevented from using GitHub software in the future.
During the time of Microsoft’s acquisition of GitHub, there was discussion in the Bitcoin community and on other open-source projects as to whether they should transition away from any future reliance on GitHub. This view is becoming more popular as greater numbers of contributors and potential contributors are being banned from using GitHub software. There is also the possibility that Microsoft could make the first move and ban entire projects if they are perceived as politically controversial. Time will tell if Bitcoin Core and other Bitcoin implementations continue to leverage GitHub’s admittedly well-crafted, user-friendly features in the years to come.
Find a ‘Good First Issue’
One of those features is GitHub Issues which are used to announce and track bugs, enhancements and requests. Any GitHub user can create an issue, though it is recommended that they only open an issue after researching it and discussing it with existing contributors on IRC. You do not need to request permission to start working on an issue. But if you do, you are encouraged to comment on the issue to encourage collaboration with other contributors. It is also a good way to request assistance if and when you need it.
The purpose of the “good first issue” label is to highlight which issues are suitable for a new contributor who might not have a deep understanding of the codebase. A good first issue isn’t targeted toward software development beginners. At the very least, you’ll need basic Git proficiency and ideally C++ and/or Python proficiency, too, given that the Bitcoin Core codebase is written in these languages.
Good first issues for Bitcoin Core highlight the “useful skills” for addressing that issue. It is a good idea to learn C++ and/or Python to make code-related contributions, but if you are not proficient in those languages you may choose to get started by making a material improvement to the documentation or finding a good first issue that requires shell scripting, Automake or CMake experience.
‘Typos’ vs. ‘Real’ Issues
Some people get started by correcting basic typos in variable names, comments or documentation. Jeremy Rubin has joked that he deliberately leaves typos in his contributions so that new contributors can find them and correct them. Although this is one way to get started as a new contributor, it is better to focus on good first issues rather than submitting pull requests (PRs) for typos.
Good first issues have been highlighted as something that is missing and of significant value to the project by existing contributors. They will not be set up to identify typos, and existing contributors and maintainers would prefer to focus their time on reviewing and merging high-priority for review pull requests. (Pull requests are proposed changes by contributors that are only merged by maintainers after review and when there is sufficient consensus to do so.)
It would, therefore, be better to correct typos as part of a more substantive pull request. As discussed previously, it is worth remembering that reviewing existing PRs is generally more valuable than submitting new ones. John Newbery recommends that a good rule of thumb is to review 5–15 PRs for every PR that you submit personally. At the time of writing, there are approximately 300 open pull requests and 700 open issues requiring testing and review.
Plenty of Opportunities to Practise and Learn
Fabian Jahr, a recent new contributor to Bitcoin Core, has identified that the main skill often lacking in new contributors is sufficient Git proficiency, such as the ability to squash commits. Contributors are required to enter Git commands into the command line….