Ian Bicking: the old part of his blog

OLPC, Python...

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...

Created 07 Oct '06

Comments:

Congrats, man! That's awesome news.

# Chad Whitacre

"I noted all the conservative reasons why someone would choose Python."

It just makes me wonder if the decision to go forward with Python 3000 is so wise after all..

# Jarno Virtanen

I think it would be a very bad idea if it meant that non-bugfix additions to Python 2 were going to stop. But it doesn't mean that -- the stated plan is actually to backport as much from Python 3 to Python 2 as possible, where it doesn't break backward compatibility (e.g., the IO layer changes are not at all portable, but things like generic functions or better string formatting are). So Python 2 still has a lot of life in it.

# Ian Bicking

Ion developer is now developing another window manager called stumpwm, that uses Common Lisp for customization.

# Sridhar Ratna

No, I'm not.

# tuomov

Sounds like we're getting closer to having "A Young Lady's Illustrated Primer." (http://en.wikipedia.org/wiki/The_Diamond_Age)

Neat work!

# Nathan Bird

I hear you saying this isn't a technical research or development project, but I wonder if there might be any practical technical spinoff: Does any of the OLPC stuff transfer well / easily to other portable devices? Perhaps there's GUI framework work that's transferable, for example?

# John Lee

There's certainly transfer that will happen. Lots of the people involved are active in their respective non-OLPC communities. One of the things that's been mentioned most is performance work, particularly getting applications to just quiet down, and keeping them from waking up periodically. Since the laptop is supposed to go into suspend fairly quickly, and come out quite quickly as well, we don't want the laptop to wake up because some application or library is polling for something to happen.

I'm sure other things will come out of this as well.

# Ian Bicking

I see talk of each machine running its own local WebServer. Will that be PythonPaste? :)

http://webseitz.fluxent.com/wiki/OLPC

# Bill Seitz