Issue #17 March 2006

Developers--Come play with us and build the future

One Laptop Per Child project releases Software Developer Kit

by Lucy Ringland

The guys working on the OLPC project have been busy this year. They are whittling down an operating system that normally needs a DVD to hold all the files associated with it. Whittling it into something that will fit on a small flash drive. 512 meg. Tiny. Sound like fun? Want to help out? Join the Fedora OLPC Project.

According to the website, "The Fedora OLPC Project aims to assist Red Hat and the non-profit OLPC Project put inexpensive laptop computers in the hands of children throughout the world. These laptops are simple hardware meant to provide valuable learning tools to children, even in developing nations where such technology might otherwise be unavailable to them." When they say simple hardware, they mean it. Check out the current specifications for the laptop here.

The main challenge facing developers is creating a stable operating system for the OLPC hardware--an OS that requires no administration, is easy to use, and provides a solid platform for educational applications. So, your job (should you choose to accept it) is to create neat-o whiz-bang software that kids all over the world will love to use, and modify, and adapt. And make it all happen in memory/storage space smaller that a lot of people these days carry around in their pockets.

Other development challenges are listed on the website.

To get the ball rolling, Red Hat's OLPC team is releasing a Software Developer's Kit. According to Daniel Berrange, a key developer on the project, the aim of the SDK is to bundle together the typical tools needed to create, debug, test and package applications for deployment on the OLPC platform. The SDK will include:

  • a Laptop simulator - since many developers will not have direct access to the real laptop hardware, the simulator provides a way to test both the OS platform images, and applications on a normal desktop PC.
  • an ABI verifier - this testing tool verifies that an application is only linking against libraries that belong to the officially supported public API/ABI.
  • a Packager tool - for packaging an application into a self-contained bundle suitable for deployment on the OLPC platform.
  • a Compiler - a compiler & associated toolchain for building applications.

If this is your idea of fun, you can download the SDK here.

Think you're up for the challenge? Make sure. The goals of this Fedora project come with a set of rules that make it different from the usual. The biggest rule is that children--all over the world, with varying degrees of technical experience--must be able to play with the software. Explore it, break it, and be able to fix it--fast and easy. This is not software for geeks, it's software for kids. That's important.

"The design and experience has to come first, and figuring out how we implement it comes second...As long as we are able to enable a specific user experience that allows schools to publish, kids to share and makes machines bullet proof with an elegant way to unscrew busted apps that a kid has gone and played with, I'd be pretty happy," says Chris Blizzard, Red Hat's OLPC Project lead and community coordinator for the project.

The second rule reminds you that this hardware is not exactly bleeding edge. It's small and not so fast. This means the software has to be nimble and tightly coded--smaller is better. No memory hogs, no excess baggage. No features for features' sakes. Get the picture? Good.

Third rule: no duplication. No wide range of choices. Best of breed wins. If you need it and it's not there, build it. Oh, yeah, no big admin tools, no bulky package managers. Don't want it, don't need it. Remember, stripped down, lean and mean.

Still want to play? The project wiki lists a number of areas that need community players. Come on in, there's room for everybody!

Some of the big projects that need attention include:

  • creation of tools to build the OS 'firmware' images from the Fedora OLPC yum repository. We've got to produce a hard disk image that can run in the simulator, or be copied to a USB flash memory stick for direct boot. ISO images that can act as a Live CD demo would be great, too. We already have a lot of these tools but we can always use more eyeballs on this part of the project.
  • stabilizing the Simulator to help those creating & testing the base OS images. We're working with Qemu (but Vmware works, too). The OLPC hardware isn't fast. Working with the Simulator give a real feel for the machine you'd be developing for.
  • optimizing the OS platform and basic applications for the hardware. How can we make it faster, use less memory, and not eat up power?
  • tweaking the kernel to take advantage of the hardware constraints - limited RAM (with no swap), development of MTD device drivers, making suspend/resume a work like a dream, and much more.
  • globalization and localization work - fonts, input maps, character sets, translations, graphics, etc. Lots of customization can be done here to make the experience specific to where the kids play and learn.
  • refining and enhancing the Software Developer Kit so the folks on the ground can jump into developing the applications and learning activities that are the point of this whole exercise.

Are you with us? Then, read the details on the website, and then join the mailing list .

So, grab a copy of the repository (it should be up soon). Play with the simulator. Make suggestions on the mailing lists or check out the Idea Pool . Stop by for a quick (or not so quick!) chat on the #olpc channel at And let the fun begin!

About the author

Lucy Ringland is a documentation writer at Red Hat.