Track My Order
Frequently Asked Questions
International Shipping Info
Mon-Fri, 9am to 12pm and
1pm to 5pm U.S. Mountain Time:
Chat With Us
January 11, 2013
Fan of hobby electronics. CircuitPython project lead.
Hi folks, I'm Scott (aka tannewt) the lead on CircuitPython and am sponsored by Adafruit to work on it. I wanted to clarify why CircuitPython is separate from MicroPython.
The main reason is that CircuitPython is beginner focused whereas MicroPython is embedded developer focused. There are two main technical decisions that this leads to which make it difficult to share a code base:
1) CircuitPython uses properties in the hardware API whereas MicroPython avoids it because it is slightly slower than a single function call.
2) CircuitPython has a unified hardware API for all supported ports to build drivers on top of while MicroPython chooses to give ports freedom over the APIs to allow access to chip family specific behavior.
More differences are documented here.
I think it's unfair to say CircuitPython hijacks MicroPython. MicroPython is open source and allows for derivatives (even closed source ones). We've always given credit to MicroPython for how awesome it is. Adafruit continues to support MicroPython's creator Damien by selling pyboards, pyboard accessories and MicroPython stickers as well. I regularly chat with Damien about technical work we're doing and offer to help integrate any changes he's interested in having in MicroPython. Renaming our fork to CircuitPython is better for MicroPython because it makes it easier to know which you are referring to. We want to see both MicroPython and CircuitPython succeed.
While the development of CircuitPython is sponsored by Adafruit, we hope to make it work well for non-Adafruit SAMD and nRF52840 devices as well. I don't feel like it's Adafruit-specific. I think its beginner-specific. We're super stoked to see SparkFun boards running CircuitPython and will continue to get the boards supported in the core repo. All devices are welcome to run CircuitPython.
MicroPython currently doesn't have SAMD21 support and adding it isn't a simple task. All of CircuitPython's code is licensed MIT so it can all be reintegrated into MicroPython as MicroPython's devs would like. So, the SAMD21 port would be made much easier by starting with CircuitPython's code.
Anyway, I hope that helps clarify things. Feel free find me on Twitter, GitHub, IRC or Discord as tannewt if you have more questions. Thanks!
No public wish lists :(