2020 was a good year for CircuitPython and it’s community despite the immense challenges brought on by the pandemic. Like many prior years, we spent a lot of time bringing up a new platform and didn’t always do everything we had hoped. 2020’s platform focus for us was the ESP32-S2. It’s an amazing combination of value and functionality. In 2021, we’ll likely spend time on the ESP32-S3 and maybe even the ESP32-C3 and ESP32 (see below before getting too excited). We may also be surprised by new platforms that silicon vendors release during the year. Unfortunately, I can’t predict the future.
Despite the surprises, my two focuses largely remain unchanged from last year. A focus on community will always be a priority for me because that is how development of CircuitPython grows with minimal growing pains. My other focus continues to be CircuitPython code editing over BLE (though last year I was a bit vague on the goal). It’s totally ok by me that themes are unchanged. These common threads year-to-year demonstrate our consistent vision for CircuitPython. When we looked back at past annual thoughts on last week’s Deep Dive I was pleased to see the origins of the principals that have guided CircuitPython over the years. This focus has gotten us where we are and continues to guide us.
Community has been a key part of CircuitPython since the beginning. Over the last four years, we’ve grown to over 26,000 accounts on Discord and 62 core contributors in 2020. We’re on the fore-front of support for the ESP32-S2 and have had many new folks join our community as a result. These new folks have been awesome, not only are they users of CircuitPython, but they have also become contributors. Hopefully some folks will become reviewers this year too! We must grow all groups of folks in order to continue growing.
Every year I like to reiterate the importance of community. Too often it’s ignored as a fundamental part of an open source project. I said it really well last year:
A focus on community is critical for a healthy open source project. All of us in the CircuitPython community have done a really good job at this so far. Despite that, we need to continue making community a priority because it is hard. It’s easy to think of an open source project as defined by its code and its features. The reality is that projects are defined by the people who work on the code, features, docs, tutorials, inspiration and community. Projects are made up of people that participate and what they contribute.
So, we must continue to focus on each other above all else. Take the time to help someone else. Teach them how to do something you know how to do and then ask them to do it. Not only do they learn something new, you also get another person to help you. It is very stressful to be the only person who knows how to do something. It makes it impossible to step away and relax. So remember, the second person to learn how to do something is the most important.
I often hear folks wanting more advanced features in CircuitPython such as interrupts and concurrency. While I’m open to reviewing and merging these things, they aren’t a focus of mine. Making things as easy as possible for beginners is my focus. There will always be more work to do for this because there is no such thing as too easy. There are always bumps and hurdles when learning. One of the first hurdles today is having access to a computer.
Mobile phones are the most pervasive personal computer now. Tablets are also folks’ first computers. In February of last year I gave a talk about mobile vs desktop at PyCascades titled Python’s Next Decade and Us. CircuitPython needs to have a BLE-only workflow to bring folks without laptops or desktops into our community. This will also enable our existing community members to edit and tweak their code on-the-go, when away from their computer.
In 2019, I spent a bit of time prototyping a BLE workflow and a companion app called Glider. While this work got the idea on our bucket list of TODO items, it didn’t leave us with anything usable. This year my focus will be on the BLE foundation of that workflow. This work involves creating a device discovery and pairing process along with a protocol for reading and writing files to and from CircuitPython. Once we have this foundation we can experiment with ways to hook phone and tablet apps up to it for editing.
2021 is shaping up to be the perfect time to do this. The ESP32-C3 and micro:bit v2 are two strong reasons to have a USB-less CircuitPython. A BLE workflow would also enhance the usability of existing nRF52 boards and open up the possibility of CircuitPython on the ESP32.
Thank you all for being a part of CircuitPython’s growing community. Working with you all to continually improve CircuitPython is a pleasure. I’m so lucky to be able to do it every day. See below for other folks’ #circuitpython2021 thoughts.
#circuitpython2021 is our annual reflection on the state of CircuitPython. We’d love to hear from you too! See the kick-off post for all of the details. Here are all of the previous posts:
- Email from Graham
- MakerMelissa’s #CircuitPython2021
- Dan Halbert’s #CircuitPython2021
- #CircuitPython2021 from Dan and Sam on the forum
- CircuitPython in 2021 from @deshipu
- Three ideas from @askpatrickw. Each in a gist: secrets, camera and package management.
- #circuitpython2021 thoughts from BennyE
- Foamyguy #circuitpython2021
- Industrial Controller with CircuitPython from Awestruck
- Tweet from @ChadLawson
- Thank you…#CircuitPython2021 from mcgrun
- Hugo Dahl’s thoughts on #CircuitPython2021
- Jeff’s (@jepler) thoughts on #CircuitPython2021
- Bryan’s thoughts on #CircuitPython2021
- #circuitpython2020 wrap-up post
- #circuitpython2019 wrap-up post