Exploring New Technologies

Last Monday I rejoined One Laptop Per Child as Director, New Technologies. My mandate is hardware and software for the XO-3, OLPC's upcoming ARM-based tablet computer for education in the developing world. The new machine should be lower cost, lower power, more indestructible, more powerful, and potentially more expandable than ever. There are about two million machines in the XO-1 family (XO-1, XO-1.5) in the hands of kids today. The XO-3 will build upon this impressive foundation to reach further into the poorest and least-connected regions of the world.

I will kick-off my work with a series of four week-long sprints between now and eduJAM Uruguay to investigate a number of possible directions for the educational software stack on the XO-3 tablet. On the XO-1—series machines OLPC ships Sugar, an impressive collection of educational software developed by Sugar Labs. How can we best keep the best of Sugar while yanking the UI forward into a touch-friendly tablet world?

  1. This week (April 4-8) I'll begin by working on a port of the GTK3 UI library to Android. The GTK3 library contains touch support missing from the GTK2 library on which Sugar is currently based. The end goal here would be a full port of the Python/GTK-based Sugar APIs, running on something like the Honeycomb Android OS. Our existing educational activities could be ported to the new APIs without too much difficulty, but we'd largely use the existing Android OS facilities instead of the parts of Sugar concerned with low-level system management. To clarify: this is a preliminary exploration—we haven't decided to base the tablet software on Android (or anything else) yet.
  2. The next week brings a new direction. During the week of April 11-15 I will start porting Python/GTK3 to Chrome or ChromeOS via the Google NativeClient plugin. This path would result in activities which more fully integrate with web technologies—even in disconnected regions of the world. On desktop machines, Sugar activities could be run inside the Chrome browser, while ChromeOS (or another embedded OS running chrome/webkit) would provide the system management functions on tablet machines like the XO-3. As with the Android port, this is an exploration, not a definite software direction.
  3. The week of April 18-22 I hope to focus on mesh networking. This has a somewhat checkered history in our deployments; I hope to identify the remaining roadblocks and map a way forward to make this a flagship feature of the XO-3 software.
  4. The week of April 25-29 is for the existing Python-based Sugar codebase. In order to continue moving forward, it needs to migrate to GTK3, gobject-introspection, and some other key enabling technologies. I believe it would also benefit from language-independent APIs and better modularization to allow a more incremental migration path.

The following week is Conozco Uruguay and the Uruguay EduJAM where I'll present my progress on these initial exploratory projects and discuss the path ahead with the wider OLPC and Sugar communities. Clearly, a week each is not enough time to finish any of these projects! But the focused effort should help to better identify the promise, roadblocks, and challenges in each of these paths, which then in turn will help us to plan the future.

Sugarcamp Wednesday

I just finished uploading, encoding, and you-tube-izing all the video from Sugarcamp sessions on Wednesday 2008-11-19. Ogg-format video in both full and small sizes is available for download at download.laptop.org, but the YouTube playlist might be the easiest way to watch:

Video is inside the cut.Collapse )

Included so far are talks on Desktop compatibility, "What was missed", "Activities as building blocks", Discoverable gestures, the School Server, Internationalization, and Community. (These links are to the "small" Ogg-format files, reasonable for downloading.)

And this was all just one day at Sugarcamp! More to come...

What's the best thing you could be working on, and why aren't you?
Some get-motivated reading from Paul Graham on good vs bad procrastination and working in small groups.

Looking ahead to our very ambitious goals for the next Sugar/OLPC release, I think it's important to keep Richard Hamming's question in front of us:

What's the best thing you could be working on, and why aren't you?
We need to take individual responsibility for the things which will make our release excellent, and find ways to shut out distractions to let us get that great work done.

Scott needs help; drinking vino
Sugarcamp just finished, and gosh there's a lot of stuff to do for our next release!

One unfortunate thing I noticed (alas!) only in retrospect was that frequently projects that I volunteered to work on (or had suggested) seemed to attract few other contributors. I guess "Oh, Scott's got that covered" is a nice reaction, but somehow something got lost: when I make a working prototype and/or write a complete spec, like with the Journal, networking, or "click-to-translate" (screencast coming soon!), it's because I need help. I don't want to be the only person working on these things -- I don't even need to be one of the people working on these. Please, if you think the ideas are good, pick them up and make them your own. Or just grab a piece. Where I've made prototypes, source code is available (click2trans, journal2, olpcfs1). Send me patches! Steal my projects!

One concrete request: Vino is a very nice integrated VNC server, one piece of a synchronous collaboration mechanism for Sugar. I'd love to see someone take server/vino-input.c and tweak it to map the VNC input events to a secondary mouse pointer, using MPX. Since Vino uses XDamage already (see server/vino-fb.c), another nice extension would be to have vino restrict itself to a single window (or group of windows) so we can share a specific activity/application (even if the session owner switches to a different activity or desktop).