Just about all of Adafruit's code and hardware is kept on GitHub - a web service that keeps track of code and files. Since we publish open source hardware and software, this works great to share our designs and also get feedback and improvements from the community.
By working together, a large group of people can improve and build upon the body of work that Adafruit has published. You can even find bugs or add new features, and submit those back to us so that everyone can benefit from your effort!
But how do you actually do that? GitHub isn't the easiest site to use, and Git the versioning tool it builds upon can be challenging even for coding experts.
This guide aims to not only show you where to start, but provide you with the entire contribution path, beginning to end. This guide focuses on the Adafruit Learning System specifically. There is also an excellent guide on contributing to CircuitPython. This guide shares some common pages with that guide.
Before starting this guide, there are a number of steps found in the Adafruit Learning System guide An Introduction to Collaborating with Version Control that you must complete.
- You must have Git installed and setup on your computer.
- You must have a GitHub account.
- You need to have some familiarity with the command line or be ready to learn.
Much of this is covered in the Adafruit Guide An Introduction to Collaborating with Version Control.
Further information is available through the Git documentation or the GitHub documentation.
This guide uses a terminal program to interact with Git locally (on your computer).
This guide will walk through all of the steps I follow during the contribution process to the Adafruit Learning System. You'll learn how to fork and clone a project repository, create a working branch, and commit and push your changes. You'll find out how to create a pull request, and progress through the review process including the conversation and work surrounding a change request.
All of the terms introduced in this guide are explained as you are introduced to them, and are also defined in the Glossary found at the end of the guide. If you're ever unsure about a term, feel free to look it up there.
This guide borrows very heavily on the guide Contribute to CircuitPython with Git and GitHub by Kattni Rembor who put a great deal of effort into explaining the process.
Also to Carter Nelson for the information flow diagram.
Finally, thank you Ladyada for your patience as I learned the processes.
Thank you all.