Download - Programming for Children
Programming for Children
Edward Mokurai Cherlin Earth Treasury
October 28, 2007
Author
Edward Mokurai Cherlin
גרשון בן יסעף Эдуард Георгеевич Черлын 장영구 / 張永久 法雲默雷 / धर्म�र्म�घशब्दगर्ज�
Experience
Mathematician Peace Corps, Korea Buddhist training,
Japan, US, UK Self-taught, Computer
Science High-tech market
researcher
Free Software development
Senior Tech Writer Simputer Evangelist MBA Student, Presidio
SOM Founder, Earth Treasury
The Children's Cat's Laptop
Origins
Inspired by Simputer from Bangalore MIT Asian Media Lab MIT $100 Laptop project Spun off as non-profit, One Laptop Per Child Funding from Google, Red Hat, eBay, others Design help from MIT, Google, Red Hat, AMD,
Quanta, Free Software community, others
One Laptop Per Child
Education program, not laptop program Designed to meet stringent requirements of
poor children Not dependent on electric system Usable by illiterates No moving parts Extremely rugged, extremely green
What We Need
For each language Text-to-speech Speech recognition Content For each standard school subject
Domain-specific software; the tools of the trade Free textbooks integrated with software
Content
Schools not on Internet will have local copy of Wikipedia in English and local languages.
Children's books Literature and History Math and Science Selection of other freely licensed materials
Extra Content
Earth Treasury proposes to link schools with laptops, and teach the children how to go into business together.
Genuine Free Market Economics, and how to get it
Business skills Dealing with governments Trade law etc.
Hardware
No moving parts; flash storage 3 USB 2, sound, SD card slot Screen rotates to tablet mode Camera built in; microscope attachment Wireless mesh networking Daylight readable screen, 1200 x 900 Extremely low power
Software
Red Hat Fedora Rawhide 7 Linux Sugar User Interface Activities designed for children Smalltalk, Python, Perl, Forth, other languages SCIM (Smart Common Input Method) Pango and Cairo (Unicode screen and printer
rendering)
Marketing
Quanta requires orders for 5 million units to start manufacturing at $188
$1 profit per unit for OLPC Minimum order, 2006: 1 million units @ $189 Minimum order, 2Q 2007: ¼ million units Minimum order, 4Q 2007: 100 @ $299 Someday, retail.
Hot Prospects
Argentina Brazil Cambodia Ethiopia Libya Mexico
Nigeria Peru Rwanda Thailand Uruguay
Initial Languages
Amharic አማርኛ
Arabic عربي Cambodian ភាសាខ្�រ English French Français Hausa 8َه8ْو:َس
Igbo Kinyarwanda Portuguese Portuguesa Spanish Español
Castellano Thai ภาษาไทย Yorùbá
Linux Localization
Done by any language community Provided to whole community at no cost More languages than Macintosh or
Windows Almost all software has separate .po file
of string data Documentation in man, info, help files
XO Programming Languages
Squeak dialect of Smalltalk provided in UI as eToys
Squeak includes Logo capabilities Python used to create UI and apps Perl for scripting Forth for low-level programming Other languages can be installed:
LISP/Scheme, APL, C, C++, etc.
Open FirmWare
Forth programming language Equivalent of BIOS; created at Sun Press game key while booting, then Esc
(top left) At ok prompt, you can type test-all to test
all of the hardware interfaces More information at
http://wiki.laptop.org/go/Open_Firmware
Sugar UI
XO Collaboration
Activities, Not Apps
Packaged as resource bundle Full screen Sharable Instance per file Instant resume
Building Sugar Activities
http://wiki.laptop.org/go/Sugar Install Sugar on Linux, Mac, or Windows Read the human interaction guidelines Get an overview of the architecture Check out the code snippets library Understanding Sugar code organization Write your own activity
Human Interaction Guidelines
Users are young, inexperienced, international 256M RAM, no swap; write efficient code. Make everything simple and discoverable. Security is vital for the children. Adapt to different screen modes, network
states. Children must be able to recover from errors
easily.
Architecture
See http://wiki.laptop.org/go/API Resources include:
Third-party applications Python scripts Libraries
Code Snippets Library
Icons Toolbar Files Images Audio Processes Garbage collection
Code Organization
Launch Sugar, Start Sugar shell, Initialize Libraries, services, and utilities Network Manager User ID and colors Main loop Shutdown http://wiki.laptop.org/go/Understanding_sugar_code
Write Activity
This is normal Python programming, with some Sugar-specific startup and shutdown.
Keep human interface guidelines in mind. Use resources provided as needed. No code bloat.
HelloWorldActivity.py
from sugar.activity import activity import logging import sys, os import gtk class HelloWorldActivity(activity.Activity): def hello(self, widget, data=None): logging.info('Hello World') def __init__(self, handle): print "running activity init", handle activity.Activity.__init__(self, handle) print "activity running"
# Creates the Toolbox.toolbox = activity.ActivityToolbox(self)self.set_toolbox(toolbox)toolbox.show() # Creates a new button with the label "Hello World".self.button = gtk.Button("Hello World")self.button.connect("clicked", self.hello, None)self.set_canvas(self.button) # Display this newly created widget.self.button.show() print "AT END OF THE CLASS"
Sugarizing Non-Python Apps
Very small amount of interface code required to run within Sugar.
See eToys source code for example. Full Sugarizing requires support for
sharing, other Sugar capabilities
References
OLPC http://laptop.org/ OLPC Wiki http://wiki.laptop.org/ On the Wiki, search for Sugar, eToys,
Activities, OFW, Software, Hardware, or any other topic of interest
XO Live CD: http://wiki.laptop.org/go/LiveCd
Earth Treasury http://wiki.laptop.org/go/Earth_Treasury