Open source software is awesome. It's a shared resource that we all work on to benefit ourselves and others all at once. CircuitPython is built on the open source code of MicroPython for example.
One challenge of open source software is making your code and documentation available in a way that makes it accessible to those that use it. Its not just a matter of writing code and posting it somewhere on the internet. For the core of CircuitPython we have existing source control on GitHub, low-level documentation on ReadTheDocs, continuous testing on TravisCI, tutorials on Adafruit Learn System, community support on the Adafruit Forums and live chat on Gitter and Discord.
However, there is much more to CircuitPython than just the core code. There are also additional libraries that expand what can be done on CircuitPython. They may add additional support for a particular FeatherWing or making simple tasks easier.
To make CircuitPython libraries easy to find and understand we've come up with a number of best practices when creating a new library. This guide is an overview of those practices with links to more information on specific topics.