Today, March 22nd, the British Broadcasting Corporation (BBC) begin to deliver 1 million small programmable devices to the UK's 11 and 12 year old children. The aim is to inspire a new generation of digital creators. The device is called a BBC micro:bit and, among other things, it runs MicroPython.
The device is about the size of a credit card, comes in different colours and consists of a couple of buttons, a 5x5 LED matrix, I/O pins, an accelerometer, compass, ARM processor, micro-USB port, battery connector and BLE. Over the coming weeks all the software and hardware plans needed to recreate the project will be released under an open license. If you have the time and money, you could fork this work and make your own.
Since the project's inception, the Python Software Foundation has been a member of the partnership tasked to deliver this "moonshot". The partnership consists of almost 30 organisations including big multi-nationals such as ARM, Microsoft and Samsung, academic institutions like Lancaster University and volunteer and community based organisations such as the PSF and CodeClub.
Originally, the PSF agreed to provide Pythonic educational resources and expertise. The BBC told us they already had a Python solution in the pipeline. However, at the beginning of May the partner who was to deliver this solution dropped out and we were asked to provide an alternative.
Thanks to Damien George's amazing MicroPython project and his collaboration with an international community of Pythonistas the device runs a full re-implementation of Python 3. The version of MicroPython on the micro:bit doesn't include the standard library. However, it contains several easy to use modules for interacting with the device's hardware, making music, digital art and connecting stuff to the device via its I/O pins. All the standard language features are supported including data types, OOP, data structures, exceptions, generators and builtins. All this on a device with 256k of flash memory and 16k of RAM.
Special mention should be made of Mark Shannon who did amazing work on the display related capabilities of MicroPython on the BBC micro:bit. Mark also has interesting work-in-progress on improved audio capabilities.
Members of the community have been busy generating more than just code. Between them they have created:
- An "official" browser based Python editor that's part of the BBC's main website for the project. Many thanks to Steve Hawkes for his amazing design and Giles and Harry from Python Anywhere for hosting it.
- An unofficial native editor for beginner programmers called Mu. Thanks to @carlosperate, @inglesp, @NDevox, @kushaldas, @tjguk, @stestagg and @theheadofabroom for all their work on the project.
- An editor for ChromeOS. Thanks to Clifford French for the loan of equipment to facilitate this development.
- Developer documentation. Kudos to Carol Willing and Radomir Dopieralski for such a comprehensive and clear resource.
- Teacher Tutorials. Many thanks to our friends at Computing at School who acted as "crash test dummies".
- Lesson plans and a cheat sheet curated by Jez Dean.
- Crazy open-source projects from around the world, created by numerous Pythonistas who took part in a micro "world tour".
- Jupyter integration (coming soon). Thanks to Fernando Perez for pointers that helped us create a new Jupyter kernel for the micro:bit in only an hour.
- Free to use tools for generating child-friendly Python resources and/or simulate the output of the device. Once again, Steve Hawkes is responsible for the magnificent design.
- Ongoing workshops throughout the UK in association with Computing at School where developers and teachers work together to learn about Python on the BBC micro:bit. Many thanks to Yvonne Walker for her fantastic organisational skills.
We're incredibly proud that all the Python related work was created by volunteers in their spare time: community minded Pythonistas with a passion for education who want to inspire digital creativity in young people. It's yet more evidence that Python has the world's greatest programming community. A big "thank you" to everyone who contributed.
Why is this so important?
Asking what sort of education and learning our community supports is how we decide what sort of community we become. For it is through education and learning that we engage with our future colleagues, friends and supporters. Put simply, we're investing time and effort in the future of a diverse Python community.
You're probably wondering what you can do with the device. A quick look around the world-tour website will show you how MicroPython on the micro:bit can be adapted to a huge number of educational (and not so educational) uses. Two of our favourites are described below:
Radomir Dopieralski only had his device a few days before he'd managed to fry it while connecting it to a robot. Failure is an essential aspect of education - it's how we learn to adjust and improve our behaviour while exploring the world around us. Happily, Radomir learned from his mistake and went on to build several different robots including our favourite called "Bob" (which is wobbly-cute in a menacing "all humans must die" sort of a way):
Martin O'Hanlon is a regular contributor to the education track at PyCon UK. His lessons in programming Minecraft with Python are genius-level performances that end with a hundred kids and their parents furiously hacking Python so Minecraft does crazy things. It's inspiring to see such a thing unfold. As a result, we were especially looking forward to his contribution (and he didn't disappoint).
Mart has managed to tick pretty much all the boxes for many 11 year olds with his X-Wing flying in Minecraft running on a Raspberry Pi controlled via MicroPython running on a BBC micro:bit. Perhaps the only thing missing is that it doesn't come with a side of pizza and fries:
Finally, if you're wondering what it feels like to program such a device... the following reaction is typical:
I've been playing with micropython on the BBC micro:bit and it's amazing! <3— Guido van Rossum (@gvanrossum) October 13, 2015
You'll soon be able to get your own via mail-order when they're released to the general public over the summer.
If you're interested in contributing (there is so much yet to be done) then join our mailing list or check out our source code. We accept contributions, without prejudice, from anyone. If you're thinking, "but not me", then we especially mean you. Good quality content and engagement with respect, humour and intelligence wins every time.
Our children's latent talent, joie de vivre and receptiveness to programming in Python is something unambiguously good for us to support, cherish and foster. MicroPython on the BBC micro:bit is one way to do this.
Come join in the fun!