Sie sind auf Seite 1von 37

Independent Coursework

Processing on the XO

von Thomas Staubitz

Berlin, 13.07.2010

HTW Berlin
Fachbereich 4
Wirtschaftswissenschaften II
Internationaler Studiengang Medieninformatik

Betreut von! Prof. Dr. Debora Weber-Wulff

Processing on the XO
XO is the official name of the so called $100 laptop. It is developed by an organization called
One Laptop per Child (OLPC).

Processing is a tool that has become very popular in recent years as a tool to teach program-

Sugar is the XO’s user interface and file system. It sits on top of a Fedora Linux installation.

This paper is evaluating if installing Processing on the XO is possible and useful. Issues to be
examined are the installation process, Processing’s performance, and possibilities of interac-
tion with the XO’s hardware features, such as the camera and the game buttons. Apart from
the technical issues, it will be examined if there is any value in having yet another program-
ming teaching tool on the XO, besides the pre-installed tools, such as Pippy and Etoys. These
issues will be examined for both: the XO-1.0 and the XO-1.5.

Processing auf dem XO

XO ist der offizielle Name des sogenannten $100 Laptops. Es wird von der Organisation One
Laptop per Child (OLPC) entwickelt.

Processing ist ein Tool das sich seit einiger Zeit im Programmierunterricht grosser Beliebtheit

Sugar ist die GUI und das Dateisystem auf dem XO und setzt auf ein darunter liegendes Fe-
dora Linux auf.

Das Ziel dieser Abhandlung ist es, zu untersuchen in wie weit Processing auf dem XO einge-
setzt werden kann. Sowohl der Installationsprozess als auch die Performance des Tools
werden untersucht, ebenso die Interaktionsmöglichkeiten mit den speziellen Hardwarefea-
tures des XO, wie der Kamera und den Game Buttons. Abgesehen von diesen technischen
Aspekten wird untersucht wieweit es sinnvoll ist, ein weiteres solches Tool, neben den be-
reits vorinstallierten Tools Pippy und Etoys, zu installieren. Diese Themen werden sowohl
für den XO-1.0, als auch für den XO-1.5 betrachtet.
Table of Contents
1 Introduction!............................................................................................1

2 Objective!................................................................................................1

3 OLPC and the XO !..................................................................................2

3.1 History and goals of OLPC!................................................................................2

3.2 Documentation - Public Image!...........................................................................4

3.3 Sugar!..................................................................................................................5

3.4 XO-1 Specs!........................................................................................................6

3.5 XO-1.5 Specs!.....................................................................................................6

3.6 Bugs and Flaws!..................................................................................................7

4 Available Programming Tools on the XO!...............................................8

4.1 Pippy!..................................................................................................................8

4.2 Etoys / Squeak!.................................................................................................10

5 Processing!...........................................................................................11
Mobile Processing!..................................................................................................11

6 Alternatives to Processing!....................................................................12
6.1. Processing derivates!......................................................................................12

6.3. OpenFrameworks!...........................................................................................12

7 OpenCV!...............................................................................................14

8 Installation!............................................................................................15
8.1 XO-1!.................................................................................................................15

8.2 XO-1.5!..............................................................................................................21

9 Performance Tests!...............................................................................24
10 User Acceptance Tests - Do children need Sugar?!............................27

11 Summary!............................................................................................30


1 Introduction
The OLPC project, the XO, and Sugar have a very focussed target group: school children—6-
12 years old—in developing countries. During the work on this project it has not always
been easy to look at certain topics from the target group’s point of view. A rather obvious ex-
ample is the keyboard. For the clumsy fingers of grown-ups it is not very comfortable to use,
children’s little fingers are handling it quite well. Less obvious are certain decisions in the
design of the Sugar user interface. It often created the impression that some of its aspects lack
to suffice basic usability criteria. Looking at the same aspect from another perspective, in the
majority of cases revealed that adding the missing workflow would entail adding a new
menu, another button etc. Thus what looks like an insufficiency from the perspective of a
trained user might be a sacrifice that has been made in favor of simplicity and thus in effect
improves the usability for the target group.

Concerning the user acceptance tests, it has been intended to find a school, interested in col-
laboration. This did not work out as the timing was not feasible for the schools that had been
contacted, due to the summer break etc. A small test with a single participant1, admittedly
not very scientific, was arranged though. Having seen her working with the XO had a big
influence on my perception of Sugar. More information on this aspect can be found in chap-
ter 10—Do children need Sugar?

Chapter 3 will give a short survey of the OLPC project and its products, while chapter 4
highlights some of the programming tools that are currently available on the XO. Chapters
5, 6 and 7 are introducing the tools that have been evaluated: Processing, some of its deri-
vates, OpenFrameworks, and OpenCV to establish interaction with the camera. Chapters 8
and 9 dive into the details of installation process and performance.

2 Objective
This project’s objective is to evaluate if Processing is an appropriate tool for teaching pro-
gramming on the XO. Considering the aspects of installation, performance, target group and

1 My 8 year old niece


3 OLPC and the XO
3.1 History and goals of OLPC
OLPC was founded in 2005 by Nicholas Negroponte, one of the founders of the MIT Media
Lab. Its primary goal is to provide every child in the world’s developing countries with her
own laptop. Negroponte had started various smaller efforts in this direction before. In 1982
Negroponte and Seymour Papert directed the deployment of Apple II computers, equipped
with the LOGO programming language, to Dakar in Senegal. The project was a failure and
had to be closed after just one year. [2] In 2002 Negroponte provided a school in Cambodia
that he had founded in 1999 with laptops and internet access. Realizing the impact it had on
the children’s life, the idea was born to do something similar on a larger scale basis. [3] To
facilitate this, the construction of an inexpensive laptop was required. The idea of the $100
laptop was presented to the public in 2005; two years later in 2007 the deployment of these
laptops began. [1] The project started very successfully as Negroponte was able to convince
big companies, amongst others Google, Quanta and AMD to cooperate. When the idea was
introduced at the world economic forum, it was extremely well received.[1] Nigeria’s former
president, Olusegun Obasanjo, committed to order one million laptops. [41] Other countries
where the pilot was supposed to be launched were Brazil, China, Egypt, and Thailand. [41]
But soon problems emerged. Nigeria withdrew its orders, a Nigerian company even started a
lawsuit against OLPC, claiming copyright infringements. [4] The other pilot countries have
not deployed considerable amounts of laptops. [6] Microsoft and Intel, being afraid to lose
future markets2, started torpedoing the project. [5][40]

Today Uruguay is the only country that as a matter of fact managed to deploy one laptop per
child, having distributed a total of about 420,000 laptops. In Peru 550,000 XOs are deployed.
Thus it is the country having the most XOs in total. To reach a 1:1 ratio, about 8,500,000 XOs
would be needed though. [6,7,8] Other countries/cities with high deployment rates are:
Rwanda, Argentina, Mexico, Birmingham (AL), Haiti and Mongolia. [6] Recently OLPC
started two G1G1 (give one get one) campaigns. The first of these in 2007 was successful,
selling almost 80,000 laptops, while the second one in 2008 completely failed, selling no more
than 6000 laptops. [6]

Nicholas Negroponte considers OLPC not as a laptop project but primarily as an education
project. [9] The application of constructivist learning theories is the organizations primary
goal. This of course is not the primary goal of many governments, as a comment by a user
called “Roland” on OLPCNews states:

2 As the XO is equipped with an AMD chip and a Linux based operating system

“The challenge in OLPC's mission is not so much technology but to separate the learn-
ing goals which are entirely the countries' business from the learning method. Even
keeping the learning method out of political hickhack is difficult because already creat-
ing higher numbers of independent thinkers is uncomfortable for many authorities be
it of administrative, political or religious character. Yes, they should learn to use com-
puters and to solve complex problems but they should not necessarily learn to ask dif-
ficult questions to their authorities let alone finding their own solutions to those ques-
tions.” [2]

The idea that you just have to give a laptops to children and they will be miraculously edu-
cating themselves is still being discussed. While Nicholas Negroponte claims that this actu-
ally is possible [11] [15], Walter Bender, the executive director of Sugar Labs, the organiza-
tion that has been split off from OLPC to develop Sugar, is rather unhappy with these state-

“Since the early days of One Laptop per Child I spent a lot of energy combating the
accusations that OLPC's plan is to give hardware to children, sit back, and wait for
miracles to happen. The sustained efforts of the Sugar community and the enormous
investment in support made by the various deployment teams around the world are
tangible evidence that we do not waiting for miracles – rather we are doing the hard
work to ensure that the opportunity to learn is made available to every child. It is
therefore disheartening to hear Nicholas Negroponte once again say "You can, you ac-
tually can" [give a kid a laptop connected to the Internet and walk away].” [12]

Scott Kipp3 states that OLPC “[...]solidified the world’s mind [...] that ICT in Education will
be a permanent fixture[...]” but that that does not necessarily imply that constructionism is
entering the classrooms. [13]

Other problems that the OLPC project encounters might be directly connected to the person
of its mastermind. The relationship between OLPC and India is very special. Indian officials
still are disenchanted about the failure of Media Lab India, connecting this failure to the per-
son of Nicholas Negroponte. [14] 4

On the ground level some of the project’s key challenges are maintenance of the deployed
laptops, insufficient knowledge about the details of local infrastructure, and scaling small
pilot projects to nationwide deployments. Christoph Derndorfer has been visiting some of
the deployments in South America and reports that in Uruguay, almost a quarter of the de-

3 Educational Technology Debate,

4 I had the honor to translate Negroponteʼs open letter to India, welcoming the Indian effort to produce a $35 edu-
cational tablet. I often had a feeling that though his offer to share knowledge was very kind and honorable, the
letter had a somehow paternalistic undertone.

ployed laptops are currently out of order or in repair. He also noticed that knowing if a
school has electricity or not, often is not sufficient. The details are important, e.g. how many
power outlets are available. [10]

3.2 Documentation - Public Image

The OLPC project’s information and documentation policy definitely could be improved.
The information given on the OLPC website5 is very general and rarely dives into details .
Most information can be found on the project’s wiki6 . The quality of the entries there is of
varying quality, its user base obviously has not reached the critical mass yet that is necessary
to operate a self-repairing wiki7 . Most of the material that can be found on the internet has to
be handled with care as it often is outdated or describing plans that have been cancelled
years ago, as if they will be implemented soon or have been implemented yet. The legendary
hand crank is a good example 8 9. This cannot be blamed on OLPC exclusively, as a lot of
these articles and blogposts are old and not under their control. But: knowing about the exis-
tence of all these myths, a more open official information policy would be appropriate.

A very good source for information about the OLPC project is olpcNews 10, an independent
blog .



7 Providing people with a wiki system and walking away, obviously does not miraculously lead to a well docu-
mented project. SugarLabsʼ wiki on the other hand is way more impressing (

8 07/29/2010: Nicholas Negroponte informs the Indian Secretary for Education in his open letter, that solar panels
are good but that he should not “overlook human power – hand cranking and other things that kids can do at night
or when it rains.” [17]

9 claims that there is a hand crank, it even provides tech specs
and an approximate price. Following the link to the supposed manufacturer of the tool reveals that it does not ex-


3.3 Sugar
Sugar is the preferred user interface and file system, running on the OLPC XOs. It sits on top
of a Fedora Linux and was specially designed to be intuitively11 usable for children. The
close ties between Sugar and the XO have been loosened by separating SugarLabs from
OLPC. Sugar is currently available as a learning environment on a multitude of operating
systems, including various Linux Dis-
tributions as well as Windows and
Mac OS. Recently the XO comes with
a preinstalled dual boot of Sugar and
Gnome, a more conventional Linux

Sugar breaks with the conventional

Desktop metaphor, instead support-
ing a zooming metaphor, which has
been described e.g. by Jef Raskin12 .
Figure 1: Collaboration in Pippy (Original screenshots: [16] Children can either zoom out to their neighborhood of class mates13
and friends or in to a certain activi-
ty14. Sugar also supports a different kind of storage organization. There is no hierarchical di-
rectory structure to store the files. The metaphor does neither support files nor applications.
The data is bundled with the information about the application15 to use and stored in chrono-
logical order in the Journal, which replaces the classical file system. The children’s data is al-
ways saved automatically.

Another of Sugar’s key features is enabling collaboration. Unfortunately not all activities are
currently supporting this in a useful way. Tests showed that it takes a very long time16 until

11 As far as that is possible at all. According to Jef Raskin a User Interface can never be intuitive but rather famil-
iar (

12 Similar approaches are e.g. GnomeActivityJournal( or Raskin( Other ap-

proaches to the organization of filesystems that are continuing ideas of Jef Raskin are Enso (,
Quicksilver( or Appleʼs Spotlight (

13 Human class mates not Intel Classmates

14 A good survey on Sugar and its Activities is provided here:

15 Applications are also called activities

16 Often several minutes


shared activities appear in the Neighborhood view. The most efficient workflow for collaborat-
ing on an activity is as follows: Participant 1 starts the activity from the Home view and acti-
vates sharing with the Neighborhood (Fig. 1-➊,➋). Participant 217 now is able to see in her
Neighborhood view which activities are currently shared by whom. Clicking on the activity’s
icon in the Neighborhood view opens the same activity on participant 2’s laptop (Fig. 1-➌,➍).
Ideally both laptops should be connected now. The example shows the collaboration feature
in Pippy—one of the activities that actually support it. A different workflow frequently ap-
peared to be more natural: Opening an activity from the Home view and then looking for
others in the neighborhood that are working with the same activity18. A menu to join a
shared activity from within an activity definitely would improve this workflow. As men-
tioned in the introduction, it has to be considered that this would also add complexity to the
user interface, adding another menu etc. Having passively followed a lot of discussions on
the sugar-devel mailing list revealed that rather simple looking issues often entail a plethora
of additional problems and sometimes better stay untouched19.

3.4 XO-1 Specs

The XO-1 is equipped with a 450 MHz AMD Geode Processor, 256 MiB RAM, 1024 MiB Mass
Storage (NAND Flash memory, no hard disk) 20. In terms of software, three different builds
have been examined. Sugar 0.82 build 802 (Fedora 9) 21 with an additionally installed XFCE
Desktop system. The so-called Paraguay build, based on Sugar 0.84 (Fedora 11) and its
shortly afterwards released more official counterpart with very similar features. The newer
builds come with a pre-installed Gnome22 Desktop as an alternative to Sugar. Thus their be-
havior is very similar to the system installed on the new XO-1.5s. Gnome’s performance on
the older and less powerful machines is not exactly breathtaking though.

3.5 XO-1.5 Specs

The XO-1.5 is equipped with a 1 GHz VIA C7 Processor, 512 MiByte to 1 GiByte RAM and 4
GiByte Mass Storage (NAND Flash memory, no hard disk )23. It comes preinstalled with a
Fedora 11 based operating system supporting dual boot on Sugar 0.84 and Gnome.

17 3, 4, 5, 6...

18 The readability of this text is not exactly enhanced by the ambiguous definition of activity. Being a synonym for
both: the application itself and the application connected to a piece of previously stored information.

19At least they need to be reconsidered from a childʼs point of view

20 The detailed specifications can be found here:

21 This was the recommended build in April/May 2010


23 The detailed specifications can be found here:


3.6 Bugs and Flaws
During the work with Sugar and Gnome on the XOs, a couple of issues have been encoun-
tered. Especially the trackpad’s behavior on the XO-1 is annoying. It works fine for a couple
of minutes, suddenly the mouse pointer starts to react absolutely unpredictable and needs to
be re-calibrated 24. Some of the fonts in Gnomes UI are hard to read as they are very small.
Editing the preferences of Gnome and Processing, increasing Gnome’s default font size from
7 to 8 and Processing’s editor font size from 12 to 16 improved the situation. Processing’s tab
titles remained too small though.

The opposite problem appears under XFCE. Here the fonts are too big, menu items and file-
names are often wrapped and thus rendered hard to read.

Figure 2:

Top: XFCE fonts are too big

Right: Gnome some fonts are too small

24 The time to failure has been from 1 to 30 minutes. It fails under Sugar as well as under Gnome. Recalibrating
the Trackpad is done using the Four Finger Salute:

4 Available Programming Tools on the XO
To evaluate if an additional tool to teach programming, next to Pippy and Etoys, is contribut-
ing an added value, differences and similarities to these tools have been examined first.

4.1 Pippy
Pippy’s user interface looks very similar
to Processing’s at first sight. Both Appli-
cations feature a simple text editor, a Run
button to (compile and) run the code, a
Stop button to interrupt the code’s execu-
tion, and a console window to output re-
sults. Pippy displays a list of examples as
a tree view in the left frame. These exam-
ples disappear in collaboration mode.
Processing also offers a set of exam-
ples—hidden under the File menu. Ini-
Figure 3: Pippy (source:
tially, it had been considered problematic
that users cannot store their own projects
in the example list. On a second thought this
needs to be revised. Actually Processing neither
offers a one click option to add sketches to the
examples. It offers a menu option Sketchbook
though, where at least all those sketches are
listed that are stored in the default directory, the
so called sketchbook. This way of accessing files,
is not coherent with Sugar’s way of organizing
files. At least at the surface25 , the concept of
folders or directories does not even exist. From a
dogmatic point of view Pippy’s example list is
not coherent to this concept either, but, consider-
ing the intended26 use of Pippy, its exposed posi-
tion makes sense.
Figure 4: Processing

Adding a separate branch displaying the user

generated code to the examples tree view is cur-

25 Under the surface there is a directory that stores the examples.

26 First read code, then write code


rently being discussed in the OLPC developer community. [18] In its current state it is neces-
sary to switch back and forth between Pippy27 and the Journal to open a previously written
piece of code. This isn’t exactly a power user feature, but will be considered as a means to
keep the interface as simple as possible. Otherwise a new menu would have to be added.
This is consistent with the behavior of other activities.

Collaboration in Pippy works great. Code that is typed on one of the connected machines
shows up in both editors. Both users can edit and run the code. It is not indicated which user
wrote a certain part of the code. Tools such as Googledocs or Etherpad are realizing this us-
ing different background colors for different users. In a coding context, this approach might
conflict with code coloring. If one of the users runs the code it will only be executed on her
machine. Running the code remotely is not possible.

Standard Python and its documentation are not considered to be appropriate to teach pro-
gramming to children. Adding a library similar to Processing’s core library to Pippy and
documenting it in an easily comprehensible way are important steps to improve Pippy. The
pygame library might provide a good starting point to do this.

Figure 5: Switching between Activities

Switching between Activities (see Fig. 5) is easy enough to have students use Browse as a
documentation viewer. Considered the often not reliable Internet access in the targeted envi-
ronments, a local copy of the documentation should be considered28.

27 This applies to all activities not only to Pippy

28 This requires additional rare disk space. Maybe installing the documentation on the school server might be a
better alternative.

4.2 Etoys / Squeak
Etoys is a great environment to teach a wide variety of subjects. It can be used to visualize
mathematical theories, simulate topics in biology or physics, or to write and illustrate stories.
The user can create drawings, import pictures, record audio etc. All of these objects actually
are objects29 and thus are scriptable and can be animated or controlled according to their na-
ture. Figure 6-➊ shows how an element is drawn. Right-clicking the finished drawing dis-
plays a Halo of options (6-➌), the object can be duplicated, the drawing can be edited, its
properties can be controlled (6-➍) and scripted (6-➎). Scripting is done by combining little
code blocks called tiles. Thus typos, often a source of frustration even with older students,
are avoided.

Its inventor, Alan Kay, describes Etoys as a tool being similar to or inspired by, amongst oth-
ers, LOGO, PARC Smalltalk, and Hypercard. [20] Another, maybe more up to date, descrip-
tion could be Flash for Kids. Etoys has a rather steep learning curve, considered its target
group, but the results that can be achieved using it are enormous. It is way beyond a tool to
teach programming alone, actually
this might as well be considered as a
side effect.

Figure 6-➏ shows the library of pre-

defined user interface elements, in-
cluding simple shapes such as rec-
tangles and ellipses, as well as ele-
ments to control other elements such
as sliders, joysticks and buttons. It
also offers a ready to use sound re-
corder and something called a book
Figure 6: Etoys to create presentations etc.

Squeak is the SmallTalk implementation that serves as a basis for Etoys.

For a more detailed introduction see the text by Alan Kay that has been quoted above. [20]
Another good place to get started are the video tutorials on waveplace.com30 .

29 As in classes & objects


5 Processing
Processing is a tool consisting of a Java framework and a mini IDE. The framework allows
the fast development of visual, animated, interactive sketches. An empty window for example
is created without requiring the user to write a single line of code. The commands to create
graphical elements, such as rectangles or ellipses, are short and easy to use. It is easy to color
and animate these elements. Furthermore, methods to catch a variety of interaction events
are provided.

The framework is well documented. Unfortunately31, the documentation is only available in

English. The User Interface is simple and similar to Pippy’s. One of its biggest advantages
though, is the huge user and contributor base that provides many plugins for the simplifica-
tion of a wide variety of tasks. For further information see [21]. As Processing is based on
Java it requires the existence of a Java Runtime. It is not necessary to install this Runtime
separately though, as Processing for Linux brings its JRE along. This makes Processing a
rather large install, about 160 MB 32, which causes problems with the limited resources of the
XOs. Having installed Processing on the new Sugar 0.84 based system leaves about 140 MB
of free disk33 space. This is on an otherwise clean install with an almost empty Journal on the
XO-1. The situation on the XO-1.5 is far less dramatic as a lot more disk space is available.

Processing’s performance on the XO-1 running XFCE was poor but it worked. On the XO-1
running Gnome it was intolerable. On the XO-1.5 it is not great but comparatively good. See
chapter 10 for more details.

Processing interacts with the XO’s hardware features without additional efforts. All of the
additional keys are recognized. Connecting to the camera via OpenCV worked right away.
Accessing the microphone and the speakers, using the Minim library, which is included in
Processing, worked out of the box as well.

Mobile Processing
Mobile Processing is a derivate of Processing that allows to create sketches for mobile
phones. It is currently available for Windows and Mac OS only. According to its website34 the
project is no longer significantly active.

31 At least seen from the perspective of teaching children

32 Including the OpenCV plugin and examples

33 The term disk will be used as a convenient way to address any form of mass storage here


6 Alternatives to Processing
Regarding Processing’s problematic size and performance, some alternatives have been ex-
amined as well.

6.1. Processing derivates

Apart from currently being not more than a proof of concept, Python Processing appeared to
be promising. Python is installed on the XOs anyway as Sugar is based on it. Having a closer
look, it shows that it worsens the problem as it just wraps around Processing using Jython
and thus requires Java plus Jython. Similar scenario for Ruby Processing and Scala

6.3. OpenFrameworks
OpenFrameworks is sort of the C++ equivalent to Processing. Unlike Processing it does not
provide its own simplified IDE, but requires an installation of either XCode on Mac OS, Vis-
ual Studio or Code::Blocks on Windows, or Code::Blocks on Linux. XCode and Visual Studio
have a rather steep learning curve for beginners. Code::Blocks is just a little more light
weight, but still far away from being an IDE especially designed for teaching purposes. Defi-
nitely, none of them is suitable to teach children.

A current development at OLPC might be an interesting target though: the new XO-HS—the
same machine as the XO-1.5 with a keyboard rather designed for adults and a different color.
Plan Ceibal, the NGO that is distributing the laptops in Uruguay, just has ordered 90,000 of
these machines. [24] The tar-
get group for these machines
are teenagers. One of the ma-
jor challenges will be to ren-
der the XO-HS attractive
enough that they will be ac-
cepted by an audience that is
struggling hard not to be
confused with children. [24]
For these XOs, having
Gnome as their primary
Desktop and a different tar-
get group, both Processing as
well as OpenFrameworks are
Figure 7: OpenFrameworks examples running on the XO-1.5
interesting options.

Installing OpenFrameworks is more complex than installing Processing. It does not interact
with all of the XO’s hardware features out of the box.

Figure 10 shows OpenFrameworks and Code::Blocks on the XO-1.5: After the successful in-
stallation Code::Blocks can be found in the Applications > Programming menu (7-➊). The
animations in the AdvancedGraphicsExample are running slowly(7-➋). OpenCVExample
and MoviePlayerExample produce errors while trying to display a movie (7-➌). This seems
to be related to the videos’ codec: Message: don’t know how to handle video x-h264. A solu-
tion to this problem has not been found yet 35, the MovieGrabberExample (7-➎) works
though. Connecting to the XO’s camera obviously is not the problem. The AudioOutputEx-
ample worked (7-➍) but produced ugly clicks and pops36. 7-➏ shows one of the event han-
dling examples. Mouse, trackpad and keyboard events are recognized. So are the game keys.
The keys to switch the screen’s direction, as well as the additional arrow keys next to it, are

35 To be honest, it has not been investigated at all, as at the time of the investigation I did not know about the high
school XOs. Although the article in OLPCnews was just posted in June 2010.

36 Update 09/11/2010: Having tried to compile and run the example again, the following error occurred: cannot open shared object file: No such file or directory. Other examples that had been working
minutes earlier show the same behavior now. This remains to be examined

7 OpenCV
OpenCV is an open source computer vision library that originally has been developed by
Intel. Many adaptors to access it from various programming languages are available, includ-
ing plugins for both, OpenFrameworks and Processing. Apart from its more sophisticated
features such as face detection etc, it provides an easy solution to connect Processing and
OpenFrameworks to the XO’s camera37.

Figure 8: Processing accessing the camera via OpenCV on the XO-1

37 More detailed information can be found here:



8 Installation
8.1 XO-1
The following steps describe the necessary steps to install Processing on a Sugar 0.82 based
system. For installing Processing on a Sugar 0.84 based system follow the steps described in
section 8.2.

It is advised to read chapter 9 - Performance before following these steps. If you are consider-
ing to update your system first to a newer build that supports dual boot in Sugar and Gnome
and thus simplifies the installation enormously, you are urged to read chapter 9 first.

8.1.1 XFCE

As Processing is not sugarized, an additional Desktop system needs to be installed. Available

lightweight desktops are XFCE38 and LXDE39. Installing XFCE on the XO was straight for-
ward. To add a convenient way of switching back and forth between XFCE and Sugar, some
additional tweaks are necessary. Compared to e.g. Gnome, XFCE is rather ugly. It is more
lightweight though and thus better suitable for an installation on the XO-1.

Installing LXDE has not been examined.

1. Open the Terminal

2. Get root user privileges

$ su

Using sudo instead of su is considered more secure and thus recommended if it is available.
In contrary to su, sudo enables the root user for the current command only and thus needs to
be repeated in front of most of the following commands. If you are following these steps us-
ing su you are advised to leave the superuser level by calling exit before you switch to other

3. Install XFCE using yum

# yum install xfdesktop xfce-utils xfce-mcs-plugins xfce4-session xfce4-icon-theme

4. Set XFCE as the default desktop



Switch to the /home/olpc/ directory and copy the file .xsession-example to .xsession

# cd /home/olpc/

# cp .xsession-example .xsession

Open the new file with your favorite text editor

# nano .xsession

Find the line that says: #exec xterm and add the following code below: exec startxfce4

Save and exit nano (Ctrl-x) and restart X (CTRL+ALT+BACKSPACE), starting XFCE. If the
system stops during the boot process, just type startxfce into the prompt.

5. Prevent getting stuck in the boot animation

Switch to /etc/init.d and open the file 0-boot-anim-start in your favorite text editor.

# cd /etc/init.d/

# nano 0-boot-anim-start

Search for the line that reads "# i'm the child". Replace

if os.fork() == 0:


if os.fork() == 'debug':

Figure 9: XFCE running on the XO-1

6. Install a desktop switcher control panel in Sugar to switch between Sugar and XFCE and
integrate a Sugar control panel to switch the other way round

Install the necessary files using yum and rpm.

# yum install gnome-icon-theme

# rpm -ivh

# rpm -ivh

Open the file /usr/share/icons/sugar/index.theme in a text editor

# nano /usr/share/icons/sugar/index.theme

Add Inherits=gnome after the line [Icon Theme]

Open /usr/bin/olpc-session in a text editor

# nano /usr/bin/olpc-session

and add

[ -f "$HOME/.xsession-xfce" ] && . "$HOME/.xsession-xfce"

before the line

exec /usr/bin/ck-xinit-session

Watch out for the spaces.

[26] [27]

Figure 10: Switching between Sugar and XFCE

8.1.2 Firefox / Opera

Having installed the desktop system, the next step is to install a browser. This is an impor-
tant step as Processing’s documentation is available in HTML format, online and offline. In-
stalling Firefox failed with: Missing Dependency: gecko-libs Several proposed

solutions have been tried. None of them worked. Therefore it was decided to install Opera

# rpm -ivh


8.1.3 Java

Installing Java actually is not necessary to run Processing. Processing for Linux comes with
its own version of Java. So the following steps can be omitted. Considered the available disk
space on the XO, it is recommended not to install the additional JRE. The price that has to be
paid for this is that you cannot run the exported applications or applets.

Only JRE 1.5 is working in this setting. [28] Get jre-1_5_0_13-linux-i586-rpm.bin here

Click on the link Download JRE, select Linux as platform, agree to the license, and click con-
tinue. Download the RPM. Switch to the terminal. If you do not have root privileges still, get
root privileges. Change to the directory where you downloaded the JRE installer. Run the

# cd /path/to/the/downloaded/java/rpm/

# ./jre-1_5_0_13-linux-i586-rpm.bin

Enable Java in Opera:

Start Opera, open the Opera menu, go to

Tools->Preferences. Click the advanced Tab
and select the content section. Check the En-
able Java checkbox. Click the Java Options
button, and enter
/usr/java/jre1.5.0_13/lib/i386/ in the text
field. [29]

Figure 11: Enabling Java in Opera

Setting the paths:

Open .bashrc in a text editor.

# nano /home/olpc/.bashrc

Add the lines:

export JAVA_HOME=/usr/java/jre1.5.0_13/

export PATH=$PATH:$JAVA_HOME/bin


8.1.4 Processing

Now that all the preparations have been finished, Processing can finally be installed. Down-
load the tarball, untar it and fix the directories permissions recursively.

# cd /home/olpc

# wget

# tar xvfz processing-1.1.tgz

# chmod -R 0755 processing-1.1

Run Processing.

# cd Processing-1.1

# ./processing

Of course, Processing can be started

from the GUI as well, double clicking
its icon.

Figure 12: Processing running on the XO-1, XFCE

8.1.5 OpenCV

Install OpenCV to connect Processing to the camera.

# yum install opencv


There are two more packages available, opencv-python and opencv-devel, both of them are
not required.

Finally download the Processing - OpenCV connector and put it into Processing’s library di-

# cd /home/olpc /Processing-1.2.1/libraries/

# wget

# unzip

# rm

Additionally download the Processing OpenCV examples and move them to your sketch-

# cd /home/olpc/sketchbook/

# wget

# unzip

# rm

# exit

Note that for most of these operations root user privileges are required. Do not forget to lo-
gout as root and switch back to your normal user level as soon as you have finished the in-

8.1.6 Paraguay build and other Sugar 0.84 based systems

The update process for sugar is a rather tedious procedure. Often a simple update from one
version to another is not supported or sufficiently documented. This usually results in hav-
ing to install the complete system from scratch. To do this a fresh formatted USB drive is re-
quired. This formatting has to be done on a Windows machine. Neither the USB drive that
had been formatted under Mac OS X nor the one formatted under Ubuntu worked. To up-
date your system follow the instructions here: or

Installing the Paraguay build is not recommended anymore, now that there is the official
one. When the system is updated follow the steps as described for the XO-1.5.

8.1.7 OpenFrameworks

Installing OpenFrameworks on the XO-1 has not been successful. The complete story can be
found here:

8.2 XO-1.5
Installing Processing on the XO-1.5 as well as the newer releases for the XO-1 is much easier.
Both come preinstalled with Gnome so there is no need to install another Desktop. Firefox is
also preinstalled so there is no need to install another browser. The price that has to be paid
on the XO-1 is an intolerably bad performance.

8.2.1 Java

Installing Java actually is not necessary to run Processing (see section 8.1.4). It has been tried
to connect Firefox to the Java browser plugin that comes with Processing’s included JRE.
This did not work so far. Firefox keeps asking to install a JRE.

Installing Java on the newer build is more straight forward. A regular installation using the
current Java version can be performed. Download the JRE from here:

Select the latest JRE click continue, select Linux as the operating system. Agree to the license
and hit continue. On the next page select the rpm file.

Open the Terminal and go to the directory where the downloaded JRE is located.

$ cd /path/to/the/downloaded/java/rpm/

$ sudo sh jre-xxx-linux-i586-rpm.bin

Replace xxx with the actual version number.

To activate the Firefox plugin, type:

$ sudo /usr/sbin/alternatives --install /usr/lib/mozilla/plugins/ /usr/java/default/plugin/i386/ns7/ 20000


8.2.2 Processing

Installing Processing: Follow the instructions as given in section 8.1.5.

8.2.3 OpenCV

Installing OpenCV: Follow the instructions as given in section 8.1.6.

8.2.4 OpenFrameworks

A couple of requirements need to be installed first: make, rpmfusion ffmpeg-devel

$ sudo yum install make

$ cd /home/olpc/Download/

$ wget

$ wget

$ sudo yum localinstall --nogpgcheck rpmfusion-free-release-stable.noarch.rpm

$ sudo yum localinstall --nogpgcheck rpmfusion-nonfree-release-stable.noarch.rpm

$ sudo yum install ffmpeg-devel

Now OpenFrameworks can be installed. The following supposes that you are still in the
/home/olpc/Download directory. Download OpenFrameworks, using wget, untar it, rename it
with a more convenient name and move it to the location of your choice.

$ wget

$ tar -xzvf of_preRelease_v0061_linux_FAT.tar.gz

$ cd ../

$ mv Download/of_preRelease_v0061_linux_FAT openFrameworks

$ cd openFrameworks/scripts/linux/fedora

Change to the openFrameworks/scripts/linux/fedora directory. Run the installers for

Code::Blocks and its dependencies.

$ sudo ./
$ sudo ./

9 Performance Tests
The XO’s, especially the XO-1’s, specifications are causing two problems with Processing:
Disk space and performance. Having installed XFCE, OpenCV, Opera, Processing, and a
couple of examples the XO-1 soon ran out of disk space. Upgrading to the new Sugar
0.84/Fedora 11 system even worsens the situation.

Processing’s performance on the XO-1 was less than satisfactory. It took several minutes to
start the application and to build sketches. More complex Sketches, such as the OpenCV ex-
amples caused failures in the XO’s GUI. Frames of windows failed to be displayed, some-
times the contents of windows disappeared for minutes. Running Sugar 0.82 with an addi-
tional XFCE Desktop provided a slightly better performance than Sugar 0.84 with Gnome.


XO-1 Sugar 0.84 Fe- ~ 3-5 fps — ―

dora 11

XO-1.5 Sugar 0.84 ~ 13 fps ~3 fps ~ 6 fps

Fedora 11

XO Virtual Machine ~ 34 fps not tested ―

2.4 GHz Intel Core
Duo iMac

Mac OS 10.6.4 on ~130 fps ~15 fps ―

2.4 GHz Intel Core
Duo iMac

Table 1

Gnome itself definitely has some performance problems on the XO-1. It takes significant time
to open and close windows or to switch between directories in the File Browser. The contents
of some Processing sketches are displayed completely messed up (see Fig. 14).

Unsurprisingly, the performance on the XO-1.5 is way better. Complex examples, such as the
OpenCV blob example, are running, not exactly fluently, but in an acceptable way. Table 1
shows the frame rates that a simple test script provided on different setups. The script at-
tempts to draw 500 rectangles, 10 by 10 pixels of random color at a random position within
the constraints of the window. See Fig. 13 and Listing 1.

Figure 14: Messed up processing script (XO-1).
This is a display error. Opening the script in a text
editor shows the correct contents.

Figure 13: Simple test.

int t;

color c;

int wh;

void setup() {

wh = 500;

size(wh, wh);



void draw() {

for (int i = 0; i < t; i++) {

c = color(random(255),random(255),random(255));


rect(random(wh), random(wh), 10,10);


Listing 1

Figure 15: Compiling and attempting to start the OpenCV blob example, XO-1, Sugar 0.84, Gnome (crashed
after five minutes)

Figure 16:
Left: Another attempt to start the same sketch ended in a half rendered window. The windowʼs frame is missing,
the sketches frame rate is about 1 frame per minute. (XO-1, Sugar 0.84, Gnome)
Right: Running the same sketch on the same XO-1 under Sugar 0.82, XFCE. Running slow (estimated 1/2 frame
per second), but running.

The above listed simple performance test script has been ported to an OpenFrameworks pro-
ject. It surprisingly runs even slower40 than the Processing sketch (see Table 1). Comparable
more complex tests have not been conducted.

40 Both, debug mode and release mode have been tested and did not show any significant differences. The same
applies to running the test applications directly from a Terminal to exclude possible interferences with

10 User Acceptance Tests - Do children
need Sugar?
Two questions arose during the work on the project.

1. Is Sugar really good for children? Does it really help them to manage the machine better
than a more conventional user interface? What about transferring their knowledge? At
some point in their life they will have to work with other user interfaces, if at all.

2. Has anybody ever tested real children’s interactions with Sugar and the XO? Using icons
instead of text has been tried occasionally in computer history; in most of the cases at least
a tooltip had to be added eventually41 42. Some of the icons e.g. Paint or Write seem to be
unmistakable, but what about other cultures where painting is not associated with oil
painting? Other icons such as Pippy’s do not give the user a clue what to expect. OK, the
programming language is called Python. Still I rather would have suspected to find a
game―Snake. How do kids feel about this icon who are growing up in areas where snakes
are a daily threat?

Unsurprisingly, these questions have been asked before. [33] The discussion started at the
time when Sugar had been developed from scratch. Many people were astonished, even up-
set that there has not been any user testing at all before Sugar had been released. Usability
guru Jakob Nielsen himself said: “It’s always dangerous to release any product without the
safeguard of user testing. But it’s outright reckless in a case like this.” [34]

The Sugar development team defended their approach as being based on the MIT Media Lab
principle “demo or die”. [34]

John Maeda, head of the MIT Computing and Aesthetics Lab, backed the Sugar team:
“They're using the Steve Jobs method, you don't use focus groups. You just do it right." [34]

This discussion being three years old and about a million laptops deployed all over the
world since, the questions remain. Evaluations of projects are few. An evaluation conducted
by the Australian Council for Educational Research at the OLPC project on the Solomon Islands
is very positive. Children and teachers are absolutely convinced that the goals are met. [35]

41 Jef Raskin: “Icons contribute to visual attractiveness of an interface and, under the appropriate circumstances,
can contribute to clarity; however, the failings of icons have become clearer with time. For example, both the Mac
and Windows 95 operating systems now provide aids to explain icons [...]” [16, p. 168]

42 Dealing with users that canʼt read or write, tooltips will not do any good either

There is no control group though that is using “regular” computers with “regular” user in-

Back in 1999, Sugata Mitra, an Indian scientist provided Indian ghetto kids a PC with inter-
net access through a hole in the wall of his company’s campus. It neither had any special UI,
nor did he provide any assistance. Still many kids that had only rudimentary education,
taught themselves to work with the computer within days.43 [36]

In 2009 Nicholas Negroponte dropped Sugar as the one and only user interface on the XO.
Gnome and even an option to boot Windows were mentioned. [37] He even admits that crit-
ics were right and said: "In retrospect, it wasn't necessary." [38]

Walter Bender, in contrary still is convinced that Sugar is indispensable: “Just giving kids a
traditional desktop, whether it's a Linux desktop or a Windows desktop or a Mac desktop,
that's inadequate.” [38]

If adults are using Sugar, the questions that have been asked at the beginning of this section
almost inevitably arise. As satisfactory answers have not been found a user acceptance test
has been conducted.

As mentioned in the introduction, this test has been rather unscientific and improvised.
Nonetheless the results have been interesting enough to be mentioned.

The evaluating child is eight years old and attends the third grade at a private school in Ber-
lin. She has some experience in using Windows, mostly browsing the web, watching videos,
editing text in Word, and drawing in Paint. Her general performance at school is good,
Mathematics is not her favorite subject, and she has limited knowledge of English. As we
had only a couple of hours to do the testing it was decided to begin with a simple compari-
son between Gnome and Sugar. We started with Gnome. First she has been asked to find out
some facts about the place where she had been on vacation, using Google. Then she has been
asked to do a little drawing, and to write a short text. Without help she would not have been
able to complete any of these tasks. She needed many hints: try this, try that, etc. She did not
have enough confidence to click on any of the buttons without knowing what will happen.
To say she was afraid of the system would be exaggerated; but she was rather respectful. The
biggest obstacle in all tasks was getting started, finding the application, etc. Using Firefox
was not a problem. She only had used the Internet Explorer before and therefore did not rec-
ognize the icon, but once the application was started it was similar enough to her experience
to manage to handle it. To do a drawing we used Inkscape which turned out to be too diffi-

43 +1 for Nicholas Negroponteʼs “yes, you actually can” theory.


cult even for me44 . Finally she tried to write a little text in AbiWord. She had problems to find
the application but then was able to accomplish at least some simple formatting tasks.

We then switched to Sugar. She had been told that Sugar had been especially designed for
children in developing countries and currently is used by children all over the world. Her
approach towards this system was very different. She did not hesitate to click on buttons to
explore what’s going to happen. She also did not have problems to locate the tools she
wanted to use. She recognized Browse’s logo at once as being a browser, Write and Paint
were easy to find and use as well. Having completed the tasks she started exploring a couple
of other tools. In the end we ended up playing Maze. Finally even the collaboration features
worked. We had to be patient though, as it sometimes took a couple of minutes until the
other appeared in the Neighborhood.

I had been very sceptical about Sugar. From my point of view it was rather buggy and had a
more than questionable usability. Watching the difference between her approach towards
Gnome and Sugar has been convincing though.

The next day we left the XO’s and started to work with Processing. Within an hour we man-
aged to develop a simplified version of the assignment that IDGD students at HTW45 had to
do as a warmup in their first assignment. She was asked to draw a simple character, consist-
ing of ellipses, rectangles and other basic geometric shapes on a piece of paper. Then she was
asked to translate the drawing into a Processing sketch. Whereas in an academic or profes-
sional context a translation of documentation, help files , etc., is considered as unnecessary or
even counterproductive, it is essential for the work with children. Having to translate the
documentation on the fly does not support independent learning. In a real life learning situa-
tion it would not be possible anyway. Another key issue is to have an appropriate first exer-
cise. It should not be too complex, but on the other hand it has to be complex enough to con-
vince the children of the benefits of programming. Producing a static drawing is not very
convincing. The unavoidable question will be: “why did we have to do the drawing in such a
complicated way? We could have used Paint and would not have had to do all these embar-
rassing calculations.” Animation and even more Interaction are topics that provide a reason
for the necessity of coding while providing more fun than calculating the Fibonacci se-

44 I had used Inkscape before but prefer to use Freehand and Illustrator. Some of Inkscapeʼs tools behaved in a
way that had not been expected.

45 Interaction Design / Game Design, Hochschule für Technik und Wirtschaft Berlin

11 Summary
If a couple of prerequisites were different, Processing would be an ideal supplement for the
XO. Due to its ease of use, its easily comprehensible documentation, and its support of visu-
alization, animation and interaction, it is considered to be predestined to be the tool of choice
to teach children having fun with programming. To be effectively usable on the XO-1, too
much modifications would be necessary though. To be used for educating smaller children it
has to be sugarized. Its performance on these machines needs to be improved, as well as the
size of its installation. Probably the only way to achieve that, would be getting rid of its Java
burden, recreating the tool and its library in Python. The Processing derivate Python Process-
ing is not useful as it just wraps around Processing and thus also needs Java. On the other
hand there is Pippy, a tool that is similar enough to Processing. Pippy is running under
Sugar, it is even preinstalled. Adding a library, similar to Processing’s core library, to Pippy, is
considered to be much easier than rebuilding Processing. The pygame library offers a good
starting point. A very important issue is to provide an easily understandable documentation
and language reference; preferably in multiple languages. The lack of documentation that is
suitable for children, is considered being the major obstacle for the application of most cur-
rently available programming languages in the context of educating children.

The situation on the XO-1.5 and especially the XO-HS is different. Their bigger mass storage
and faster processor allow to actually work with Processing at a satisfying speed. Further-
more the older children probably will operate their XOs under Gnome not Sugar. Under
these circumstances Processing definitively is a valuable option. Even OpenFrameworks in
addition with Code::Blocks represent an alternative. The hope that, compared to Processing,
OpenFrameworks might provide an advantage in speed, proved to be false though. It also
does not require considerably less disk space. OpenFrameworks/Code::Blocks are neither
suitable as a children’s toy, nor as a tool to teach programming to children. This might be ex-
actly the feature to predestine it to be deployed on the XO-HS. These machines that will be
delivered to Uruguayan high school students soon, might suffer an acceptance problem with
their target group, as the XO is so tightly associated with children. Providing these machines
with a different color and a different keyboard might not be sufficient. Running a different
Desktop such as Gnome and providing office software such as AbiWord, GnuSpreadsheets ,
etc., would be complemented perfectly by a software development tool that is enjoying a
vast popularity on an international level. Both Processing and
OpenFrameworks/Code::Blocks would fit into that gap.

C) Sketch - Application or Applet that has been developed
with the help of Processing
Code::Blocks - Lightweight IDE available for Windows
and Linux Sugar - The XO’s user interface

E) Sugarize - Adapt an application to be compatible to the

Sugar UI
Etoys - multipurpose education software
UI - User Interface
Gnome - Linux Desktop
GUI - Graphical User Interface
Visual Studio - IDE by Microsoft
HTW - Hochschule für Technik und Wirtschaft Berlin
XCode - IDE for Mac OS
Hand crank - Tool to convert human movements into
electrical power to charge the XOs batteries. XO - Laptop introduced by the One Laptop per Child
ICT - Information and Communication Technology
IDGD - Interaction Design Game Design, Program at
HTW XO-HS - High school edition. Basically a XO-1.5 with a
different keyboard.

JDK - Java Development Kit

JRE - Java Runtime Environment


NAND Flash memory - relatively cheap and robust

mass storage replacing a hard disk in the XO to avoid
mechanical problems


OLPC - One Laptop per Child


Pippy - Programming tool

Processing - Programming tool


Squeak - SmallTalk implementation

[1]! OLPC History,, Retrieved: 07/18/2010

[2]! OLPC History: Senegalese Failure in Implementation - OLPC News,, Retrieved:

[3]! OLPC Talks: One Laptop Per Child on 60 Minutes - Transcribed,, Retrieved: 09/02/

[4]! The Nigerian Issue: OLPC and the Ex-Convict - Negroponte's initiative has hit a tough wall in Nigeria -
Softpedia, , Retrieved: 07/18/2010

[5]! One Laptop Per Child, Sabotaged by Microsoft and Intel - Softpedia,, Retrieved: 07/

[6]! Deployments OLPC,, Retrieved: 07/18/2010

[7]! CIA - The World Factbook,, Retrieved: 07/18/2010

[8]! CIA - The World Factbook,, Retrieved: 07/18/2010

[9]! Nicholas Negroponte - OLPC,, Retrieved: 07/18/2010

[10]! OLPC News 08/30/10 11:26AM,, Retrieved: 09/01/2010

[11]! Negroponte: You really can give a kid a laptop | Beyond Binary - CNET News,, Retrieved: 09/02/2010

[12]! Sugar Digest 2010-08-10,, 08/10/2010

[13]! What We Learned From OLPC Deployments - Educational Technology Debate,, Retrieved: 07/18/2010

[14]! BW Online | May 16, 2003 | India's Fresh Chance for Innovation,, Retrieved: 09/

[15]! An Implementation Miracle - OLPC News,, Retrieved: 07/18/2010

[16]! Jef Raskin, The Humane Interface, Addison-Wesley, 2000.

[17]! Welcome: $35 tablet for education | One Laptop per Child,, Retrieved:

[18]! [Sugar-devel] [DESIGN] Pippy layout for code storage and interaction,

[19]! [Sugar-devel] Autosave and Keep button,

[20]! Alan Kay, Squeak Etoys Authoring & Media,, Retrieved: 09/02/2010

[21]! Tom Staubitz, Teaching Tools for CS 101 courses, comparing Processing and BlueJ, ,
Retrieved: 09/04/2010

[22]! jashkenas's ruby-processing at master - GitHub,, Retrieved: 07/18/2010

[23]! i.document » Blog Archive » python processing proof of concept,, Retrieved: 07/18/

[24]! Neat Graphics with Scala Processing | The Scala Programming Language,, Re-
trieved: 07/18/2010

[25]! High School XO-1.5 - a New Laptop Build for Teenage Students! - OLPC News,,
Retrieved: 09/04/2010

[26]! XFCE - OLPC,, Retrieved: 05/06/2010

[27]! XFCE and Sugar - OLPC,, Retrieved: 05/06/2010

[28]! Restricted formats - OLPC,, Retrieved: 05/06/2010

[29]! Opera - OLPC,, Retrieved: 05/06/2010

[30]! OLPC runs Processing and Arduino,, 04/17/2010

[31]! OpenCV - OLPC,, Retrieved: 05/06/2010

[32]! Personal Fedora 11 Installation Guide,, Retrieved: 07/06/2010

[33]! What About Sugar User Interface Field Testing? - OLPC News, , Retrieved: 09/11/

[34]! Bloomberg Businessweek, The Face of the $100 Laptop,, Retrieved: 09/11/2010

[35]! Evaluation of One Laptop Per Child (OLPC) Trial project in the Solomon Islands,,
Retrieved: 09/11/2010

[36]! India: Hole in the wall,, Retrieved: 09/11/2010

[37]! XO Laptops To Ship with Fedora or Windows XP - OLPC News,, Retrieved: 09/11/

[38]! Was the Sugar User Interface a Mistake? - OLPC News,, Retrieved: 09/11/2010

[39]! OLPC History Lesson: An Extension for the Past - OLPC Newss,, Retrieved: 09/11/

[40]! Why Microsoft and Intel tried to kill the XO $100 laptop - Times Online,, Retrieved:

[41]! People's Daily Online -- Nigerian president lauds 100-dollar laptop initiative for children,, Retrieved: 09/13/2010