Skip to content

Instantly share code, notes, and snippets.

@tekktrik
Last active January 28, 2023 03:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tekktrik/828e052f595bde5a27a344554f277a97 to your computer and use it in GitHub Desktop.
Save tekktrik/828e052f595bde5a27a344554f277a97 to your computer and use it in GitHub Desktop.
CircuitPython 2023

My hope (and personal goal) for #CircuitPython2023 is to improve the #CircuitPython development experience, particularly for users. I've especially been interested in creating tools for intermediate users, as the entry/beginner experience for CircuitPython is already phenomenal - so much so that (at least in my own case) afterwards they start looking for more advanced opportunities. In 2022, I created build-mpy for allowing users to create .mpy files for their projects using GitHub Actions. I also personally created circlink as a way to develop and test user code for microcontrollers from a local repository on the computer. Additionally, moving much of the existing CI in the libraries to shared composite actions means both that there's often less patching to do when upgrades happen, and that both Adafruit and Community bundles get these improvements passively, with no opt-in required.

In 2023, I'd love to see these tools mature, as well as new similar tools within the realm of GitHub actions, command line tools, and other features that make developing code as a user better. Some of these include:

  • I want to explore bringing circlink, which currently only works on Unix systems, over to Windows. It's great for myself since I use Manjaro for development, but not having it available in Windows is likely a huge detriment for many users who would otherwise use it. Unfortunately, this may require a reimplementation in another language, or at least utilizing another one along with Python.
  • I started and aim to complete another command line tool circfirm for downloading the CircuitPython firmware to boards. If I remember correctly, where I last left off, it work really well when the board is in bootloader mode, but needs more work and consideration for how to handle determining the firmware for RP2040-based boards, where the exact firmware cannot be determined from bootloader mode alone.
  • I'd love to see more CI improvements for the libraries across all the bundles and related tools. I'm looking to make checks performed by Adabot, our robot friend who help Adafruit online, faster and less prone to getting rate limited due to GitHub API calls. With over 300 libraries in the Adafruit Bundle to date, finding a way to help this scale with additional libraries would be great for futureproofing.
  • I'd love to see an issue template for libraries. I think there's a number of issues submitted that would be answered faster and more confidently if there is always a minimum amount of information available from the start, like minimum reproducible code and version of CircuitPython firmware. The core does this extremely well, and I'd love to see it in the libraries as well.

And, if I could make an extended wishlist:

  • I'd love to see modules like warnings and enum in CircuitPython.
    • warnings make communicating potential issues like deprecation actionable (as opposed to just using print statements to simply display)
    • Many classes already implement their own version of enum.Enum, so having a single implementation to be used across them all would make usage much simpler than having multiple implementation being used at once.
  • I would LOVE to find a way to propogate library CI changes to users or repositories in the Community Bundle. Whenever bugfixes happen to the CI in the Adafruit Bundle libraries that are applicable to all libraries made using the cookiecutter, there's no way to communicate this effectively and the knowledge has to be transmitted a few time over a great length of time. I honestly don't know what this would look like, but it would allow maintainers of community libraries to focus more on code and less on infrastructure, especially when there's already a known fix or improvement.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment