I started contributing to CircuitPython more than four years ago, and it’s been my livelihood for more than three. I really enjoy the work, and especially being part of the community. It’s a pleasure to interact with users, get feedback, and see what they are doing with CircuitPython.
I looked back at my #CircuitPython2020 post, to see what my aspirations were, to review the past year, and to think ahead to the coming year.
- Real low-power sleep: This has been accomplished for one port, and we plan to do it for more. It’s a wonderful addition to low-power projects that use e-ink displays, and it will be really useful for Bluetooth sensor projects once we port it to the nRF boards.
- Asynchronous programming and multitasking: We now have some of the low-level constructs to do this, and we have an example from one of our users of a simple library. The next implementation step is to add some kind of asynchronous event handling. The alarm classes used for sleep are a step in that direction. But we can also start experimenting with what we have, to see if we can come up with simple idioms and example that make it easy to demonstrate multiple things simultaneously (or appearing to do so).
- Automated hardware testing: We need to do more testing, and the only practical way is to automate. It’s becoming more difficult to test the results of a change because we have so many ports. We’ve had regressions which could have been spotted by some simple automated testing.
- Cartesian product build explosion (new for this year): We have 177 boards and 18 languages as of this moment, which means generating over 3000 builds every time we push a commit to a pull request. These numbers will only increase. Are there ways to reduce the resources and time needed to do builds? Could we separate the translation generation from the board builds and knit them together later? It’s worth thinking about this.