Tools of the Trade:
The Making of a Code Editor
The story of how a Sunday afternoon hack accidentally
turned into an IDE.
Nicholas H.Tollervey / firstname.lastname@example.org
Mu is a code editor for beginner programmers...
...needs another code editor?
(for beginner developers)
a Python editor for beginners
(It's the real thing!)
...do folks need?
We obsess over user feedback, UX and trying to find the
"real thing" for our users.
...did we build it?
Cross Platform GUI Options
- tkinter - simple cross platform
bindings for TK GUI toolkit.
1990's look, no screen
- wxWindows - cross platform
"native" GUI toolkit. At the
time, no Python3 support or actively maintained (this
has since changed).
- GTK - both GTK2 and GTK3 are cross
platform GUI toolkits. Raspberry
Pi only supports GTK 2. Non-native look on Windows and
- PyQt - a "native" looking cross
platform GUI toolkit with everything but the kitchen
sink. Qt4 or 5? Non Pythonic API
and includes Qt-ish alternatives for everything.
(We made a Faustian bargain with PyQt5)
PyQt5 unlocked lots of features...
- QScintilla (mature code editor
widget) ...with a labyrinthine
- Cross platform look and feel
...except teachers wanted the
same "neutral" UI look on all platforms
- Accessibility for all (e.g. cross
platform support for screen readers)
...except screen readers are
- IPython based REPL (via QtConsole
-- thanks Thomas) ...but
packaging scope creep
Talking of packaging...
Here's what we do:
- Windows - Just use pynsist
(thanks again Thomas). Super simple
and has the advantage of actually working. ;-)
- OSX - Just use BeeWare's Briefcase
(thanks Russ et al). Again, it's simple and has the
advantage of actually working.
- Linux - get friendly with
folks who package Debian, Fedora and Snaps (or whatever
the latest approach is).
- PyPI - as Python developers, this
is definitely the simplest way to get Mu.
- All automatically built by CI.
...are we doing this?
How do we get from this...
... to this ...
... this ...
... this ...
... or this ...
... or even this ..?
By making Mu in a certain way, we're demonstrating a
certain programming culture.
Mu is also the means of passing on such
That culture is open, collaborative and
...and so is Mu.
Education makes our future possible.
What that future is depends upon who
turns up to provide such education.
Don't just sit there, do