Project title: Foundations of Open Source Development
This project is aimed at developers new to either Open Source or development in general. The aim of the project is to help the dev gain a solid foundation in best practices for Open Source development.
Open Source development is all about collaboration, as such there are a bunch of things that one can do to improve how they are able to work with other devs and how their contibutions/effort is received. Learning these skills is non-trivial since the knowledge is spread across the internet, exists as folklore, or is in the heads of experience developers. This project aims to fast track your learning. Doing so is beneficial to you as an Open Source dev and also to other more experienced devs because we as a community are all responsible for training newcomers.
You will do tasks that are typical for a new contributor getting started on an Open Source project.
- Basic repository maintenance tasks
- Code improvements/refactoring
- Improve documentation
- Improve test coverage
- Tackle issues that are objectively beneficial to the project
Soft skills:
- How to interact with devs in an Open Source project
- How to approach a new project
Hard skills:
- Git workflow
- PR/patch best practices
- Refactoring skills, and how to get refactoring patches merged while not being a burden to the project
- testing (unit and integration)
- Rust programming language
- Basic familiarity with programming and testing (the language is not that important to the learning outcomes of this project so knowledge of Rust is not a pre-condition but will help you get the most out of this project).
- Basic familiarity with Bitcoin (or at least an interest in learning).
- You should have a Rust dev environment set up and know how to build and lint the code base.
Tobin C. Harding (@tcharding on GitHub)
This project can be completed using only entry level technical skills since many
of the learning objectives involve soft skills. However, any open GitHub issue
(on projects in the rust-bitcoin
stack) is in scope so this project can be as
difficult as you wish.
The skills in this project are easy enough to learn but they are not necessarily entry level concepts.