Jump to: navigation, search
  english | español | 日本語 | 한국어 | română | français HowTo [ID# 296578]  +/-  
Activity1.png This activity was core
Trac print.png Tickets all - active - new
OlpcProject.png Bert Freudenberg, Ted Kaehler, Alan Kay, Yoshiki Ohshima, Ian Piumarta, Kim Rose, Scott Wallace, Takashi Yamamiya, and many others

see more templates or propose new

Etoys running on the OLPC display for the first time (Sep 11 2006)

Squeak Etoys was inspired by LOGO, PARC-Smalltalk, Hypercard, and starLOGO (see discussion). It is a media-rich authoring environment with a simple, powerful scripted object model for many kinds of objects created by end-users that runs on many platforms, and it is free and open source. It includes 2D and 3D graphics, images, text, particles, presentations, web-pages, videos, sound and MIDI, etc. It includes the ability to share desktops with other Etoy users in real-time, so many forms of immersive mentoring and play can be done over the Internet. It is multilingual, runs on more than 20 platforms bit-identically, and has been successfully used in the USA, Europe, South America (Brazil, Colombia, Argentina), Asia (Japan, Korea, India, Nepal), and elsewhere.

An essay about Etoys on the OLPC: OLPCEtoys.pdf

Further reading:

Also, see Smalltalk Development on XO for a guide to the "full-fledged, general purpose, multimedia ready, integrated development environment" that is inside of Etoys.

Mailing list

There is a mailing list specifically discussing Etoys in the OLPC environment. Please subscribe to keep in touch!

  For the general public

For Teachers and Learners

  • There are multiple Tutorials that come with the Etoys activity, which are recommended for first time users.
  • There is a draft of a book describing the ideas behind Etoys on the XO here.
  • The central site for educational use of Squeak is the website.
  • Waveplace has created thirty video tutorials that teach Etoys.
  • Some Idioms for Composing Games with Etoys (French translation).

Projects for Squeak on the OLPC XO

With Squeak the standard way to save contents/activity is through the project infrastructure. In a project file, you find living objects and source code. The source code is compiled in the host image at load time. Some more information at

Here a few project examples (please add your link here):


  • Powerful Ideas in the Classroom, Using Squeak to Enhance Math and Science Learning by B. J. Allen-Conn and Kim Rose, 2003, Viewpoints Research Institute, Inc., 86 pages, ISBN 0974313106 (translations available here)

Documentation in French

Documentation, examples, tutorials, download
  • V-toys Un langage visuel de programmation par script compatible avec Etoys. (Une version spéciale réduite est destinée aux jeunes enfants ne sachant pas encore lire.)
  • géométrie et système expert Projet en cours pour combiner les logiciels de construction de figures géométriques DrGeo et V-geom avec un système expert faisant des déductions à partir de figures et de règles.

Documentation and examples in Spanish

Etoys and Squeak (in the past, The current Etoys system was often referred to as "Squeak") have been used widely, and there are many documentation and books done in various languages. Following is the short list of documentation available in Spanish:

For Etoys designers

To build etoys, the best thing would be to use the actual OLPC image. However, etoys authored using the version should be fairly compatible. Remember that the actual screen of the kids' machines will be very small, even though it has a 1200x900 resolution!

For Etoys Translators

Translation work is done in Sugar Labs Pootle:

With Pootle you can translate online, or download a PO file, edit locally, and upload. NOTE: uploading does not work currently due to the Etoys PO file size.

Committing in Pootle pushes translated POs into git:

For the release, POs with enough translated phrases are copied to SVN

For Developers

The current Etoys version for OLPC is based on the image. It runs on the latest Squeak VM with minimal Sugar glue code.

Developer Images have not undergone stripping, project pre-loading, preference adjusting and changes compaction.

  • contains dev image+changes, source PO translation files, and the index file for building the quickguide index.

Remember to update your image!

User Images are the ones actually deployed on the laptop, but since this is Squeak they work on other platforms too:

  • is a zip of the very latest image, projects, quickguides, and compiled MO translation files in the git tree.

The Squeak Virtual Machine is built from the "olpc" branch:

Activity Source:

git clone git://

There is a mirror of the latest git tree at

RPMs: The Squeak VM and Etoys activity are packaged as RPMs. Download and install from

SRPMs and spec files are at

See Etoys RPM and XO bundle for the release process.

Sugar: For running inside the Sugar emulator, use sugar-jhbuild:

./sugar-jhbuild buildone squeak
./sugar-jhbuild buildone etoys

Etoys are built by default in sugar-jhbuild.

Bugs: Please submit tickets at, select the "Etoys" component.

Building etoys.image from developer's image

display size

Developer's image (etoys-dev.image) is included in the svn repository as well as in (see above). etoys-dev.image is configured with proper screen size as 1200x900. Before building an image, it is nessesary to make your display size more than 1200x900. If you have only small screen linux, the simplest way is to add a Virtual directive into xorg.conf like:

Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1024x768" "800x600" "640x480"
                Virtual   1280 1024

and run xrandr to change the display size.

xrandr -s 1280x1024
building release image

Open etoys-dev.image, and execute following expression.

| result aStream |
result := Utilities readServer: Utilities serverUrls copy special: '' updatesThrough: nil saveLocally: false updateImage: true.
result first ifNotNil: [ self error: 'Update failure' ].
SmalltalkImage current closeSourceFiles.
SmalltalkImage current  saveChangesInFileNamed: 'etoys.changes'.
SmalltalkImage current saveImageInFileNamed: 'etoys.image'.
PluggableTextMorph allInstances do: [:each | each askBeforeDiscardingEdits: false].
ReleaseBuilderSqueakland new prepareReleaseImageForOLPC.

aStream := (FileStream forceNewFileNamed: 'update') lineEndConvention: #lf.
[aStream print: SystemVersion current highestUpdate; cr] ensure: [aStream close].

SmalltalkImage current snapshot: true andQuit: true.

New etoys.image is generated. The update number is stored a file named 'update'. Note: To keep etoys.changes clean, it would be better to test the image after upload to the repository.

Upload image to subversion repository
  • svn di po/etoys/etoys.pot. If this file is modified only the header (POT-Creation-Date, PO-Revision-Date, X-Etoys-SystemVersion), svn revert po/etoys/etoys.pot.
  • svn revert etoys-dev.* (etoys-dev should be updated from clean each time)
  • svn ci -m 'Update to {update#}, {some messages}'
Synchronize translations

Go to the git directory for etoys and update Content/ if necessary. Makefile will do everything you need (copy pot from Content to git, copy po from git to Content, and build mo into Content)

  • make
  • git commit -a -m 'some message'
  • git push

Running OLPC Etoys if you do not have OLPC laptop yet - For Content Creators/Testers/Teachers

If you, as most of us, do not have the OLPC laptop, you can still develop OLPC Etoys content. There will be a few minor integration points missing (Camera etc), but most content and testing can still be performed. This section describes how to achieve this.

Method 1 (Easiest) - Use Squeakland installation and the OLPC image

The idea behind this method is to install, on your favorite operating system, the Squeakland Etoys system, and download the OLPC Etoys image and content. Then use the Squeakland virtual machine to run the OLPC image.

How to install OLPC Etoys on your system? (Skip Step 1 and 2 below if you already have Squeak installed.)

  • On Windows
  1. Download and install Etoys from Squeakland. Go to the Squeakland link; in the middle of the page, click on the "Download Squeak" button. On the next page, click on the "Download Squeak" link. Click "Open" on the browser dialog asking you to open or save the SqueakPluginInstaller.exe.
  2. A Squeak Plugin Installer installation dialog will come up; click on "Next", then "Close". This will install Squeak on your system, and create an item on your desktop named Squeak, which looks like this: Squeak Desktop Item
  3. Now Download the OLPC version of Etoys. The latest version can be downloaded from this site. You will need an extract program (such as PKZip, WinZip, or 7Zip) to extract this. Create a folder named "C:\Etoys-OLPC" or similar, and extract the contents of the downloaded into the newly created folder.
  4. Running OLPC Etoys: Now we are ready to run OLPC Etoys downloaded in Step 3, using the Squeak desktop item created in Step 2. The simplest way to run OLPC Etoys is to drag the file etoys.image from the "C:\Etoys-OLPC" folder you created in Step 3 on top of the Squeak icon created in Step 2. Try it - it works! You should see the OLPC Etoys menu page: OLPC Etoys menu, and are ready to create OLPC Etoys content, test, or just play.
  • On linux: todo (or see other methods below if you don't need the browser integration of squeakland)
  • On Mac: The Windows instructions work fine, although the icons look different.

Method 2 - Use emulation

Emulation allows to "pretend" you have the OLPC laptop - essentially the OLPC laptop runs "inside" your system. You can achieve this on any common operating system you have. Please follow instructions here for descriptions on how to do it using Windows, Linux, FreeBSD, or MacOS.

Method 3 - Install RPMs or .deb's (Linux Only)

If you are on any reasonably recent version of Linux, there are pre-built packages that you can install on your system.

  • On an RPM-based system

Look on the Etoys page for instructions and a link to the RPM download.

Copy a .rpm to a USB memory, and do:

 rpm -i /media/VOLNAME/somefile.rpm

Or, if it complains because of dependency resolve it or simply do:

 rpm -i --force /media/VOLNAME/somefile.rpm
  • On Ubuntu:

For a GUI install, note the help at this page to use synaptic, rather than add/remove packages:

To use the command line, and the existing "squeak-vm" package with the OLPC etoys.image

  1. apt-get install squeak-vm # or use synaptic as noted above
  2. mkdir etoys # put this directory whereever you like, with any name you like
  3. cd etoys
  4. wget
  5. unzip
  6. squeak etoys.image



I am writing from an XO laptop! I would love to get more info on the Etoys and what you can do. I love that you can make lots and lots of things and then get them to move. But there is so much it is a bit overwhelming. Where can I find some info on all the different script buttons, or a basic overview of how to arrange code? Thanks Listen

Please refer to the Documentation section of this page as a place to start. --Walter 09:17, 25 December 2007 (EST)

Programming for the OLPC using Etoys Squeak

There is a tutorial on how to set up the Squeak Smalltalk development environment on the XO. See Smalltalk_Development_on_XO. Bert Freudenberg has a way to create an .xo file from an Etoys project or Smalltalk change set. If we write it in Squeak and incorporate that into Etoys image, making an activity can be done on the XO as well.

We are beginning a tutorial series about programming using the OLPC Squeak -- not for kids, but for programmers trying to create activities inside the Etoys environment. We have also a customized kit for the installation of a Windows version of the emulator having Fedora+Sugar+Etoys. One click only... Read how to use it at the tutorials.

Unfortunately, the tutorials are currently only in brazilian and portuguese. The link is here. The pages are in the format to be accessed, in the future, by the OLPC browser.

V-toys, a visual programming language built with E-toys

Mostly in French, but since the language is visual, you can download projects and learn by examples. A visual language for comments will be used so that v-toys will be independent of language in the future.

Version history

Build 406 (pre-installed on B4 machines)
Etoys-37.xo, etoys-2.0.1283, squeak-vm-3.9-10olpc5. Still used Python wrapper.
Build 542 (Trial-2)
Etoys-53.xo, etoys-2.0.1468, squeak-vm-3.9-11olpc4. Native activity.
Build 623 (Trial-3/Ship.1, factory-installed on first mass-produced machines)
Etoys-60.xo, etoys-2.1.1664, squeak-vm-3.9-11olpc5.
Build 650, 653, 656 (Ship.2, final version for first mass-produced machines)
Etoys-71.xo, etoys-2.2.1796, squeak-vm-3.9-12olpc3. PO translations, Quick guides, sharing via presence service.
Build 703 (Update.1, first big update)
Etoys-80.xo, etoys-2.3.1894-2, squeak-vm-3.9-12olpc5. Bug fixes.
Build 767 (8.2, G1G1 2008)
Etoys-94.xo, etoys-3.0.2153-1, squeak-vm-3.10-3olpc10. Use tubes for sharing, Pango text rendering.
Build 802 (8.2.1, Uruguay 2009)
Etoys-99.xo, etoys-4.0.2205-2, squeak-vm-3.10-3olpc11. Fully under MIT+Apache license.
XO-1.5 (10.2, 2010)
Etoys-113.xo, etoys-4.0.2339-1.fc11, squeak-vm-3.10.5-2.fc11. Fedora-packaged.

See also

Activity Summary

Icon: Sugar icon::Image:Activity1.png
Genre: Activity genre::General Search and Discovery
Activity group: ,|x|Activity group::x}}
Short description: Short description::Etoys is a cross-platform, media-rich authoring environment and visual programming system for teaching children powerful ideas.
Maintainers: ,|x|Contact person::x}}
Repository URL:
Available languages: ,|x|Available languages::x}}
Available languages (codes): ,|x|Language code::x}}
Pootle URL: Localization URL::
Related projects: Related projects,|x|Related projects::x}}
Contributors: ,|x|Team member::x}}
URL from which to download the latest .xo bundle Activity bundle::
Last tested version number: Activity version::98
The releases with which this version of the activity has been tested. ,|x|Software release::x}}
Development status: Devel status::6. Mature
Ready for testing (development has progressed to the point where testers should try it out): ,|x|Ready for testing::x}}
smoke tested :
test plan available :
test plan executed :
developer response to testing :