Skip to main content

Mu

Mu (codewith.mu) is a simple code editor for beginner programmers. In case you're wondering, you pronounce it like "moo", and it is named after the Greek character "μ", used to represent micro units of measurement in the decimal system.

I wrote the first version in December 2015 as a Sunday-afternoon "hack". At the time I was volunteering effort for the BBC's micro:bit project - a computing device for kids that encourages them to learn how to code. I had already written a browser based editor for the project but, unfortunately, when I tested it on teachers, kids and developers it soon became apparent that it wasn't a great experience. While the convenience of a browser-based editor was initially welcomed, the faffing about caused by the browser-imposed limitations of the editor meant it wasn't a pleasant experience in the long run.

This problematic situation motivated me to put together the simplest yet most useful editor I could imagine. I wrote it so beginner programmers could easily write MicroPython code for the micro:bit. Et voilà, Mu was born.

I quickly formulated a "Mu philosophy" to help guide my development process:

  • Less is More: Mu has only the most essential features, so users are not intimidated by a baffling interface.
  • Keep it Simple: It's quick and easy to learn Mu - complexity impedes a novice programmer's first steps.
  • Path of Least Resistance: Whatever the task, there is always only one obvious way to do it with Mu.
  • Have Fun: Learning should inspire fun - Mu helps learners quickly create and test working code.

I had three goals:

  1. An editor that clearly demonstrated the design philosophy outlined above.
  2. An editor with a simple enough code base that an enthusiastic teenager could learn from and contribute to the project.
  3. An editor that was well tested so we could be confident in the quality and stability of its code, while giving us the confidence to make changes as the project moved forward.

Finally, I used a wish-list enumerated by my buddy Carrie Anne (who is the Rasperry Pi's Director of Education) as my feature guide.

Raspberry Pi is the most successful computing-in-education project in history if you measure number of devices shipped. This success means Carrie Anne has had feedback from a huge number of teachers and, most importantly, beginner programmers concerning what it feels like to take those first steps in learning to write code. This feedback informed her keynote address to 2015's EuroPython conference where she listed the sorts of things needed for a beginner's code editor. This, in turn, inspired me in terms of prioritising and implementing features.

Then something funny happened. My goofy editor became popular.

It turns out that lots of people love learning with Mu. Its simplicity is often described as a key factor. The wider Python community have also taken an interest with many fellow Pythonists contributing improvements. It has taken on a life of its own with a friendly community of contributors and users. This makes me very happy.

The most requested improvement from our users is that Mu become a "general" editor rather than just targeting the micro:bit.

I'm delighted to say this will happen very soon.

Thanks to the support of the Raspberry Pi Foundation I'll be spending the next three months transitioning Mu into a "generic" beginner's editor. I'll be working closely with Carrie Anne and her colleagues to learn how best to help beginner programmers.

Mu will still work with the micro:bit, but it will also work with other boards too (such as those from the awesome people at Adafruit and MicroPython's original PyBoard). Of course, it will act as an editor for "regular" Python code running on your Raspberry Pi, laptop or PC. I've even created a very simple visual debugger to help you watch and inspect your code as it runs.

This is very exciting and I'll post regular updates since we aim to follow the mantra, "release early, release often".

Most importantly, we want you to be involved.

How?

Try out a new version when we release it. Tell us about bugs. Can you think of a way to improve Mu? What's the most useful thing you'd love Mu to do? Tell us about the niggles and gremlins you wish could be ironed out.

Put simply, Mu belongs to its community and we'd love you to join us to take part in shaping its future.