Starting a week, or I guess two weeks ago, I'll be spending 50% of my
time on the One Laptop Per Child project in
addition to my normal job at The Open Planning Project. TOPP has been very generous and
understanding about me splitting my time, and are actually funding my
work for OLPC. I really like TOPP. But back to OLPC...
What has been talked about only a little
(that I've seen) is how central Python is to the OLPC development.
It's not the most exciting thing about the project (there's a lot of
exciting things about the project), but it should be pretty exciting
to the Python community, and probably the readers of this blog.
The post I linked to called Python the "application development
language of choice". I think that's actually understating it. The
laptop is very resource constrained (current specs are 128Mb RAM,
512Mb flash storage, and a 500MHz processor). There's not enough room
to support lots of environments running simultaneously. Of course
there's lots of C, and probably some C++ -- any compiled language with
a small runtime would work fine. There's the shell, Javascript (in
the browser), Smalltalk (in the form of Squeak
and EToys), and then there's Python.
And that's it.
Most of the UI (called Sugar) is
being written in Python, and probably several other kinds of
infrastructure are also going to be in Python.
I'm not actually sure when or how this architectural decision was
made. But I think it's a very reasonable decision; Python is at the
right stage in its life for this project. It's a mature language and
environment, there's quite a bit of knowledge about the environment
spread out over a lot of communities (for example, it's pretty
commonly used in Gnome, and for system management in Red Hat). Lots
of people who use Python aren't part of the Python community, which is
a good thing. It's free software, not just the language core but the
vast majority of the libraries. It's relatively simple and safe to
program in (we can't be introducing more buffer overflows). It is by
design a very practical language and environment.
I noted all the conservative reasons why someone would choose Python.
OLPC is not a language development project. It isn't a framework
development project. It isn't a technology project. It's an
education project. When possible the technical choices should be
conservative, so those reasons seem most important.
The laptop design isn't very conservative. It's far less powerful
than typical modern computers. Looking at this from the eyes of
someone from several years ago, it's a great machine, but it seems
pokey and small now. So we just need to readjust our expectations.
But the hardware, as novel as it is, isn't the only atypical choice.
For instance, OLPC won't have overlapping windows. (I'm already a
fan of that.) All the UI will
be trimmed back, not just because of resource limitations but because
these computers need to be easy to use. Very easy to use: not only
are they given to children, there won't necessarily be anyone more
experienced around to help with things (except online).
And who needs a word processor when you don't have a printer? Who
needs an Excel-compatible spreadsheet program when you don't know
anyone who uses Excel? Especially when you are 8 years old. It's the
most un-enterprisey system possible.
It's these novel system, software, and UI decisions that really excite
me. More about that later...