processing and openframeworks on the xo

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

Upload: tom-staubitz

Post on 08-Apr-2015

148 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Processing and OpenFrameworks on the XO

Independent Coursework

Processing on the XO

von Thomas StaubitzBerlin, 13.07.2010

HTW BerlinFachbereich 4Wirtschaftswissenschaften IIInternationaler Studiengang Medieninformatik

Betreut von! Prof. Dr. Debora Weber-Wulff

Page 2: Processing and OpenFrameworks on the XO

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

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

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.

Page 3: Processing and OpenFrameworks on the XO

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

Page 4: Processing and OpenFrameworks on the XO

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

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

.....................................................................................................Glossary! i

...............................................................................................Bibliography! ii

Page 5: Processing and OpenFrameworks on the XO

1 IntroductionThe 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 ObjectiveThis 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 necessity.

!

1

1 My 8 year old niece

Page 6: Processing and OpenFrameworks on the XO

3 OLPC and the XO3.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

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

Page 7: Processing and OpenFrameworks on the XO

“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-ments:

“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

3 Educational Technology Debate, edutechdebate.com

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.

Page 8: Processing and OpenFrameworks on the XO

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 olpcNews10, an independent blog .

!

4

5 http://www.laptop.org

6 http://wiki.laptop.org

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 (http://wiki.sugarlabs.org)

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 http://wiki.laptop.org/go/Peripherals/Hand_Crank 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-ist

10 http://www.olpcnews.com

Page 9: Processing and OpenFrameworks on the XO

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

Sugar breaks with the conventional Desktop metaphor, instead support-ing a zooming metaphor, which has been described e.g. by Jef Raskin12. [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

Figure 1: Collaboration in Pippy (Original screenshots: http://goo.gl/v8J9)

!

5

11 As far as that is possible at all. According to Jef Raskin a User Interface can never be intuitive but rather famil-iar (http://goo.gl/WviB)

12 Similar approaches are e.g. GnomeActivityJournal(http://goo.gl/Vqzd) or Raskin(http://goo.gl/SHEI). Other ap-proaches to the organization of filesystems that are continuing ideas of Jef Raskin are Enso (http://goo.gl/su56), Quicksilver(http://goo.gl/V1Db) or Appleʼs Spotlight (http://goo.gl/gPOk)

13 Human class mates not Intel Classmates

14 A good survey on Sugar and its Activities is provided here: http://www.laptop.org/en/laptop/software/activities.shtml

15 Applications are also called activities

16 Often several minutes

Page 10: Processing and OpenFrameworks on the XO

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.

!

6

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: http://wiki.laptop.org/go/Hardware_specification

21 This was the recommended build in April/May 2010

22

23 The detailed specifications can be found here: http://wiki.laptop.org/images/f/f0/CL1B_Hdwe_Design_Spec.pdf

Page 11: Processing and OpenFrameworks on the XO

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

!

7

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: http://wiki.laptop.org/go/Recalibrating_Touchpad

Page 12: Processing and OpenFrameworks on the XO

4 Available Programming Tools on the XOTo 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-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.

Adding a separate branch displaying the user generated code to the examples tree view is cur-

Figure 3: Pippy (source: http://goo.gl/v8J9)

Figure 4: Processing

!

8

25 Under the surface there is a directory that stores the examples. http://wiki.laptop.org/go/Talk:Pippy

26 First read code, then write code

Page 13: Processing and OpenFrameworks on the XO

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.

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.

Figure 5: Switching between Activities

!

9

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.

Page 14: Processing and OpenFrameworks on the XO

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

Figure 6: Etoys

!

10

29 As in classes & objects

30 http://waveplace.com/resources/tutorials/

Page 15: Processing and OpenFrameworks on the XO

5 ProcessingProcessing 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 MB32, 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 ProcessingMobile 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.

!

11

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

34 http://mobile.processing.org/

Page 16: Processing and OpenFrameworks on the XO

6 Alternatives to ProcessingRegarding 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 Processing.[22][23][24]

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

Figure 7: OpenFrameworks examples running on the XO-1.5

!

12

Page 17: Processing and OpenFrameworks on the XO

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 yet35, 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 not.

!

13

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: libfmodex.so: 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

Page 18: Processing and OpenFrameworks on the XO

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

!

14

37 More detailed information can be found here:

! http://opencv.willowgarage.com/wiki/

! http://ubaa.net/shared/processing/opencv/

Page 19: Processing and OpenFrameworks on the XO

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

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

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

$ su

#

!

15

38 http://www.xfce.org/?lang=en, http://wiki.laptop.org/go/XFCE

39 http://lxde.org/, http://wiki.laptop.org/go/LXDE

Page 20: Processing and OpenFrameworks on the XO

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:

with

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.

!

16

Page 21: Processing and OpenFrameworks on the XO

# yum install gnome-icon-theme

# rpm -ivh http://dev.laptop.org/~cscott/xfce/sugar-xfce-control-0.2-1.noarch.rpm

# rpm -ivh http://dev.laptop.org/~cscott/xfce/sugar-mcs-plugin-1.1.0-1.fc9.i386.rpm

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 1.9.0.11. Several proposed

!

17

Page 22: Processing and OpenFrameworks on the XO

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

# rpm -ivh ftp://ftp.opera.com/pub/opera/linux/964/final/en/i386/static/opera-9.64.gcc4-static-qt3.i386.rpm

[29]

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 http://java.sun.com/products/archive/j2se/5.0_13/index.html

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

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

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

!

18

Page 23: Processing and OpenFrameworks on the XO

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]

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

[30]

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 http://processing.googlecode.com/files/processing-1.2.1.tgz

# tar xvfz processing-1.1.tgz

# chmod -R 0755 processing-1.1

Figure 11: Enabling Java in Opera

!

19

Page 24: Processing and OpenFrameworks on the XO

Run Processing.

# cd Processing-1.1

# ./processing

Of course, Processing can be started from the GUI as well, double clicking its icon.

8.1.5 OpenCV

Install OpenCV to connect Processing to the camera.

# yum install opencv

[31]

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

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

# wget http://ubaa.net/shared/processing/opencv/download/opencv_01.zip

# unzip opencv_01.zip

# rm opencv_01.zip

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

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

!

20

Page 25: Processing and OpenFrameworks on the XO

# cd /home/olpc/sketchbook/

# wget http://ubaa.net/shared/processing/opencv/download/opencv_examples.zip

# unzip opencv_examples.zip

# rm opencv_examples.zip

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

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: http://wiki.laptop.org/go/Release_notes or here http://www.olpcnews.com/software/sugar/how_to_install_new_official_xo.html.

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: http://www.flatlandfarm.de/blog/?p=29

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: http://java.sun.com/javase/downloads/index.jsp.!

21

Page 26: Processing and OpenFrameworks on the XO

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/libjavaplugin.so libjavaplugin.so /usr/java/default/plugin/i386/ns7/libjavaplugin_oji.so 20000

[32]

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 http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm

$ wget http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

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

!

22

Page 27: Processing and OpenFrameworks on the XO

$ wget http://www.openframeworks.cc/versions/preRelease_v0.061/of_preRelease_v0061_linux_FAT.tar.gz

$ 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 ./install_codeblocks_802.sh$ sudo ./install_dependencies.sh

!

23

Page 28: Processing and OpenFrameworks on the XO

9 Performance TestsThe 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.

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.

Table 1

!

24

MODEL SIMPLE TEST, PROCESSING

OPENCV BLOB EXAM-PLE, PROCESSING

SIMPLE TEST, OPEN-FRAMEWORKS

XO-1 Sugar 0.84 Fe-dora 11

~ 3-5 fps — ―

XO-1.5 Sugar 0.84 Fedora 11

~ 13 fps ~3 fps ~ 6 fps

XO Virtual Machine on2.4 GHz Intel Core Duo iMac

~ 34 fps not tested ―

Mac OS 10.6.4 on2.4 GHz Intel Core Duo iMac

~130 fps ~15 fps ―

Page 29: Processing and OpenFrameworks on the XO

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);

frameRate(200);

t=500;

}

void draw() {

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

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

fill(c);

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

}

println(frameRate);

}

Listing 1

!

25

Page 30: Processing and OpenFrameworks on the XO

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.

!

26

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 Code::Blocks

Page 31: Processing and OpenFrameworks on the XO

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]

!

27

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

Page 32: Processing and OpenFrameworks on the XO

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

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-

!

28

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

Page 33: Processing and OpenFrameworks on the XO

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

!

29

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

Page 34: Processing and OpenFrameworks on the XO

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

!

30

Page 35: Processing and OpenFrameworks on the XO

GlossaryC)

Code::Blocks - Lightweight IDE available for Windows and Linux

E)

Etoys - multipurpose education software

G)

Gnome - Linux Desktop

GUI - Graphical User Interface

H)

HTW - Hochschule für Technik und Wirtschaft Berlin

Hand crank - Tool to convert human movements into electrical power to charge the XOs batteries.

I)

ICT - Information and Communication Technology

IDGD - Interaction Design Game Design, Program at HTW

J)

JDK - Java Development Kit

JRE - Java Runtime Environment

N)

NAND Flash memory - relatively cheap and robust mass storage replacing a hard disk in the XO to avoid mechanical problems

O)

OLPC - One Laptop per Child

P)

Pippy - Programming tool

Processing - Programming tool

S)

Squeak - SmallTalk implementation

Sketch - Application or Applet that has been developed with the help of Processing

Sugar - The XO’s user interface

Sugarize - Adapt an application to be compatible to the Sugar UI

U)

UI - User Interface

V)

Visual Studio - IDE by Microsoft

X)

XCode - IDE for Mac OS

XO - Laptop introduced by the One Laptop per Child foundation

XO-1.0

XO-1.5

XO-HS - High school edition. Basically a XO-1.5 with a different keyboard.

i

Page 36: Processing and OpenFrameworks on the XO

Bibliography[1]! OLPC History, http://goo.gl/mpVG, Retrieved: 07/18/2010

[2]! OLPC History: Senegalese Failure in Implementation - OLPC News, http://goo.gl/xmXG, Retrieved: 09/02/2010

[3]! OLPC Talks: One Laptop Per Child on 60 Minutes - Transcribed, http://goo.gl/8DJ2, Retrieved: 09/02/2010

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

[5]! One Laptop Per Child, Sabotaged by Microsoft and Intel - Softpedia, http://goo.gl/sx53, Retrieved: 07/18/2010

[6]! Deployments OLPC, http://goo.gl/kKQv, Retrieved: 07/18/2010

[7]! CIA - The World Factbook, http://goo.gl/eAoh, Retrieved: 07/18/2010

[8]! CIA - The World Factbook, http://goo.gl/v7Qz, Retrieved: 07/18/2010

[9]! Nicholas Negroponte - OLPC, http://goo.gl/KPkC, Retrieved: 07/18/2010

[10]! OLPC News 08/30/10 11:26AM, http://goo.gl/z853, Retrieved: 09/01/2010

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

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

[13]! What We Learned From OLPC Deployments - Educational Technology Debate, http://edutechdebate.org/?p=601, Retrieved: 07/18/2010

[14]! BW Online | May 16, 2003 | India's Fresh Chance for Innovation, http://goo.gl/pWBC, Retrieved: 09/02/2010

[15]! An Implementation Miracle - OLPC News, http://goo.gl/vsaw, Retrieved: 07/18/2010

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

[17]! Welcome: $35 tablet for education | One Laptop per Child, http://blog.laptop.org/?p=2274, Retrieved: 09/02/2010

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

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

[20]! Alan Kay, Squeak Etoys Authoring & Media, http://goo.gl/7x0k, Retrieved: 09/02/2010

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

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

ii

Page 37: Processing and OpenFrameworks on the XO

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

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

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

[26]! XFCE - OLPC, http://goo.gl/jh4O, Retrieved: 05/06/2010

[27]! XFCE and Sugar - OLPC, http://goo.gl/m9RF, Retrieved: 05/06/2010

[28]! Restricted formats - OLPC, http://goo.gl/iebK, Retrieved: 05/06/2010

[29]! Opera - OLPC, http://goo.gl/pfo2, Retrieved: 05/06/2010

[30]! OLPC runs Processing and Arduino, http://villamil.org/?p=106, 04/17/2010

[31]! OpenCV - OLPC, http://goo.gl/W0Yg, Retrieved: 05/06/2010

[32]! Personal Fedora 11 Installation Guide, http://goo.gl/3vfp, Retrieved: 07/06/2010

[33]! What About Sugar User Interface Field Testing? - OLPC News, http://goo.gl/cAUx , Retrieved: 09/11/2010

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

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

[36]! India: Hole in the wall, http://goo.gl/5MID, Retrieved: 09/11/2010

[37]! XO Laptops To Ship with Fedora or Windows XP - OLPC News, http://goo.gl/tuBi, Retrieved: 09/11/2010

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

[39]! OLPC History Lesson: An Extension for the Past - OLPC Newss, http://goo.gl/y2zT, Retrieved: 09/11/2010

[40]! Why Microsoft and Intel tried to kill the XO $100 laptop - Times Online, http://goo.gl/FMl4, Retrieved: 09/11/2010

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

iii