Children in Peru write their own history on Wikipedia

Video link:

Over a million children in Peru have access to an offline Spanish Wikipedia snapshot on their OLPC laptop. The Wikimedia Foundation is e-mailing its supporters a link to a trailer of a documentary called Web that shows the effects of these laptops with Wikipedia on children in the remote Amazonas town of Palestina, Peru. I was involved in creating the Wikipedia snapshot, so it’s very rewarding to see the video.

I especially love that the film shows the children editing Wikipedia as well as browsing it, so that we’re involving new parts of the world in the Internet’s global conversation instead of merely giving our own knowledge to them.

Four of us (three OLPC volunteers and I) worked on this offline Wikipedia snapshot for less than a month in 2008, through ten releases and 190 Git commits, and then shipped it to Peru. It wasn’t something anyone asked us to work on — it just seemed like a good idea, and it remains one of the most important things I’ve worked on in my life. It’s a reminder to always be looking and ready for unexpected opportunities to make a large difference.

OLPC’s Reading Project

CNN is running a short video on our Reading Project in Ethiopia, which I’ve been working on this year alongside XO-4 software development.

The team’s far larger than just OLPC staff — we’ve been fortunate to work on the project with Maryanne Wolf and her team at the Tufts University Center for Reading and Language Research, Cynthia Breazeal and team at the MIT Media Lab, and Sugata Mitra at Newcastle University.

(There’s also a Technology Review article with slightly more information, and an OLPC SF conference talk video that goes more in-depth.)

Narrative Interfaces

As Scott’s preview post explained, today was “Narrative Interfaces” day at OLPC — the general motivation for this work is that the current Sugar interface leaves you able to do lots of different activities with your XO laptop, but doesn’t have any strong opinions about which you *should* do, or which order you should do them in. Wouldn’t it be better if we could come up with a plot/narrative behind the activities that can be explored on an XO?

I’ve uploaded videos of the talks now. They are:

In the discussion afterwards we chatted about comics that do a good job of presenting non-fiction, as an alternative way of using narrative to present ideas — here’s our reading list:

If you’d prefer to download the videos directly, you can find the raw files here.

Thanks to everyone who participated! If you weren’t able to attend in person but have comments after watching the videos, feel free to jump in with your thoughts on the Sugar Labs IAEP list.

EduJam 2011

I’m home from the EduJam conference in Montevideo, Uruguay — huge thanks to the organizers for a fun and productive event with around 80 Sugar and OLPC community members. We also got to spend some days before the conference visiting school deployments in Uruguay and asking about how they’re using their XOs (Uruguay is the first country to have implemented One Laptop Per Child for each of its children!), what they enjoy, and what they’re frustrated by.

I recorded video in the talks I attended, and collected video from people who recorded talks I didn’t, and have started to upload them to the Dailymotion Sugarlabs account. Here’s what I’ve got so far, and I’ll keep adding to the list as I collect more:

Talks in both English and Spanish

Talks in English only

Talks in Spanish only

(Please let me know in the comments if there are problems with any of the videos. Thanks to Bert Freudenberg for help with encoding them.)

Peru, OLPC, and Wikipedia

It’s incredibly rewarding to see videos like this one. I think working on the Wikipedia activity might be the most important thing I’ve ever done:

Web: La Selva
Uploaded by WebFilm.

(via Jimmy Wales)

Update, 2010-02-10: The video on Vimeo became password-protected, so I’ve switched the embedded video over to a copy on Dailymotion.

XO-1.5 bringup

Back from Taipei, and appropriately jetlagged, after a successful bringup of the XO-1.5. The bringup team did some interviews for while we were there, including a demo with Fedora 11 running on the new board. There are interviews with John Watlington (hardware), Richard Smith and Mitch Bradley (hardware/firmware), and me (software), which I’ve embedded below.

Thanks to Charbax for recording the interviews! Was also wonderful to see the new Pixel Qi screen — I’m looking forward to seeing it on mainstream laptops in the coming months.

The OLPC XO-1.5 and Fedora 11

Some good news from OLPC: we’ve decided to base the new XO-1.5 laptop’s software release on Fedora 11. Unlike previous releases, we plan to use a full Fedora desktop build, booting into Sugar but giving users the option to switch into a standard GNOME install instead. (This will mostly be useful for older kids in high school.)

I’m particularly happy about this plan because it will allow us to catch up with the awesome work present in the Sugar community’s most recent release, Sugar 0.84, as well as merging the latest Fedora work and including GNOME into the mix for the first time. The new machines will have 1GB of RAM and 4GB of flash, so we have enough room for both environments at once.

We think we’ll need to use our own kernel and initrd, but the other base packages we expect to need are present in Fedora already, including Sugar; in fact, we already have an F11+Sugar+GNOME build for the XO-1 using pure Fedora packages. That build will get better as a result of this work (although OLPC’s focus will be on getting the XO-1.5 running) and it will form the basis for the XO-1.5 build.

If you’re interested in contributing, we’d certainly love your help, and you can find us on the fedora-olpc mailing list, and freenode IRC’s #fedora-olpc channel. Our existing F11 build images for the XO-1 are here, and we’ll soon begin publishing images for the XO-1.5 too. XO-1.5 beta machines will start to be manufactured over the next few months, and will be available to contributors as part of our Contributors Program once the hardware’s up and running.

Finally, thanks are due to the volunteer Fedora packagers and testers who helped us get to the point of being able to commit to Fedora 11 for this new build, in particular: Fabian Affolter, Kushal Das, Greg DeKoenigsberg, Martin Dengler, Scott Douglass, Sebastian Dziallas, Mikus Grinbergs, Bryan Kearney, Gary C. Martin, Steven M. Parrish, and Peter Robinson. Thanks!

Fedora 11 Preview running on the XO-1

Multi-pointer Remote Desktop

Remote desktop is a pretty useful technology. It would be more useful if it wasn’t so competitive, though; when someone joins, the sharer has to sit back and watch, or fight over who gets control. Well, now it’s cooperative — here’s a video demo:

Download the video (23M)

I should make it clear that I’m responsible only for the smallest piece of this work. Peter Hutterer’s MPX is the core technology enabling an X desktop to have more than one pointer and keyboard present on it, and my work was modifying the Vino VNC server to make it understand how MPX works. As shown in the video, this requires no modifications to VNC clients — each client can become another pointer on your X desktop regardless of whether it’s running on a Windows, Mac or other Unix machine, which I think makes the whole thing pretty compelling.

My patches against Vino are here, and this is a complete summary of them: for each new client that joins, we create a new keyboard/pointer pair and store its details with that client, then when new events come in for a client we send them through to the appropriate device. That’s all. This is still prototype code, so there are bugs, the most noticeable of which is when you have more than one client connected, each client can only see the pointer of themselves and the server, although the server can see everyone’s pointer; this will be fixed by having vino_cursor_update_timeout() and parents act on a list of cursor positions rather than a single one. (Ideally, GDK should become aware of multiple pointers, too.)

The next steps are to fix some bugs and get the code upstream into the main Vino repository, so that it’s ready for when the distros start shipping a multi-pointer X server — one way to do this would be to have Vino’s preferences check to see whether your X server supports MPX, and ask you to choose between sharing your main pointer or granting extra pointers to new clients if it does.

The original motivation for this work, besides it being a useful-sounding idea in general, was as an experiment for a collaboration model for OLPC. A very intuitive way for writing collaborative applications would be to make programs that don’t have to understand anything about networking, but do have the idea that there’s going to be more than one pointer and keyboard around sometimes and that they should be treated differently, just like when using a games console with multiple controllers.

For example: to write a collaborative text editor using this model, you’d want to color the text written by each participant’s keyboard differently, but other than that you don’t need to care about any details of networking. (You’d want an out-of-band way for each participant to get a copy of the file they were working on afterwards, though…)

I’d be interested to hear any other use cases people could imagine. If you want to give this a try, you need an MPX-enabled X server (which you can get from Xorg Jhbuild) and window manager (such as compiz), and you’ll need to apply my Vino patches. Enjoy.

Wikipedia on XO!

A few weeks ago my coworker Scott made a post calling for Peruvian folk heroes to help OLPC out with infrastructure for our Peru deployment, and included a list of projects we’d like to work on. The post began like this:

Peru has ordered over 260,000 OLPC XO-1 laptops. These machines will be running Sugar on GNU/Linux. Forty thousand of these are already in warehouses in Peru, with Sugar builds 656 or 703 installed. That means over a quarter of a million kids will use Sugar/GNU/Linux in the next few months – and you can directly influence their lives! Your software, documentation, support expertise, ideas and insights can improve the education of a vast number of kids.

Wanted: Peruvian Folk Heroes. Will you become one?

From my perspective, the post was a big success. Later that day, Wade Brainerd — a game programmer and OLPC supporter — saw that I’d listed a Spanish Wikipedia snapshot on the list of project ideas and sent a mail asking for more details on the project.

The details are that recently Patrick Collison released a project called wikipedia-iphone, which is a GPL’d program that takes a compressed wikipedia dump (in particular, a single XML file compressed with bzip2), builds an index from each article title into the bzip2 block that stores it, and then allows you to retrieve articles by decompressing just the bzip2 block that’s needed to get at the individual article’s text. It’s an awesome idea, and means you can be carrying around the complete text of a language’s Wikipedia without using too much storage (480M compressed for the full text of the Spanish Wikipedia; 3.5G compressed for the full text of English).

480M is still too large to put on the XO, though, and we have deployments in Uruguay, Peru and Mexico that don’t always have good connectivity. If we could get an archive that was under 100MB, I thought, it would probably be small enough for countries to consider preloading it on all of their XOs by default — providing offline access to the most popular Wikipedia articles for kids who have XOs and their families.

Once Wade and I got started, plenty of help followed. Mel Chua wrote up a wiki page with the state of wikipedia-iphone and what would need to be done, while Wade worked on porting the wikipedia-iphone code from Ruby/Mongrel/Inline-C to Python/BaseHTTPServer/SWIG. Once that was done, Wade started trying to find a renderer from wikitext to HTML that would work well for us. (He chose mwlib.)

Madeleine, Ben Schwartz and I looked at which ranking metrics do a decent job of allowing us to store articles that the user is most likely to want to see — we store that likely subset on the XO, and if an article that falls outside our metric is wanted, we can link out to the local school server or the global net for it, if either is available. Three weeks and over 150 GIT commits later, the finished activity is 98M, has around 30,000 articles and 3,000 images, and is available here.

It was a blast to work on this with a group of volunteers, and to get to know them better in the process. Having a community of passionate and immensely competent developers a stone’s throw away if you can clearly articulate what’s needed and why it’s important is a feature of working at OLPC that I love.

Working on this project has been bringing me back to Eben Moglen‘s keynote at the 2006 Plone Conference (video, transcript). Eben describes the history of attempts to ameliorate human social inequality, and how traditional property being rivalrous and zero-sum has often led those attempts to fail due to the friction and violence that stems from trying to redistribute property from people who have it to people who don’t. He argues that we are past that now; that software is non-rivalrous, and so it’s no longer about “wealth redistribution” because we no longer need to take anything away from anyone; that the utopia of being able to share education and knowledge and the power that comes with them has never been so close. Being part of a team working on distributing hundreds of thousands of copies of Wikipedia to poor kids makes me inclined to agree with him about how close we are.

Eben goes on to describe the moral basis for free software — “If you could make as many loaves of bread as it took to feed the world, by baking one loaf and pressing a button, how could you justify charging more for bread than the poorest people could afford to pay?”

If we are indeed solving epic problems, we should be thankful to the people whose shoulders we’re standing on: the Wikipedians for enabling this transfer of knowledge in the first place; the wikipedia-iphone author for choosing to share his code; the mwlib authors who are reimplementing the mediawiki PHP parser in Python; the determined volunteer OLPC developers who rallied around the idea and followed it through, and finally the creators of this cute green machine that allows us to facilitate a conversation for children to figure out how the world works, why, and how they can shape it for the better.

Mass production

I spent a week (my first time in Asia) in Changshu, China the week before last, in preparation for this:

Congratulations to everyone involved with OLPC. You’re all heroes.