Jump to: navigation, search

Typing Tutor needs no introduction. Soon XO will have its own!! This page exhibits the main proposal for GSoC-2008 of this typing tutor named "LetsType". Please leave your comments . They are valuable.


Official Typing Tutor for XO machine. Suggested name- “LetsType”

Important Survey

An on-line survey conducted at #olpc and #sugar IRC channels about the need of a typing tutor in XO machine involving various OLPC developers and XO users revealed these major points:

  • Typing tutor is indeed a much needed application
  • It is one of the most essential and crucial “activity” required in XO

Synopsis/Project Goals

To develop a interactive typing tutor for XO machine. Typing is an essential skill needed for using any keyboard based device. The prime objective of this project is to provide fundamental knowledge of typing to teachers and students who come under OLPC programme all over the world, thus spreading a word about Open Source. Initially it will be built for English language and then would be translated to other significant languages with the help of other developers. This activity will be released under GNU General Public License v3.


A typing tutor helps an individual or school in learning and teaching How to Type. The tutor must incorporate three E’s: Easy, Efficient and Effective, i.e. it should be easy to use, it should be efficient in its performance and it should satisfy its users effectively. We need to equip the children with the knowledge of using the machine for efficient learning which is believed to be the very first building block of a child's future through OLPC. This role can be easily and efficiently played by a typing tutor utility.

Features of “LetsType”

  • A user-friendly GUI in accordance to the OLPC Human Interface Guidelines
  • Modular Design will ensure smoother modifications in future.
  • A beginner tutorial on How to Use the typing tutor documentation
  • Mock lessons to identify the present typing skills of the user
  • Game will include various kinds of interactive exercises like:
    • Learning Category:
      • Alphabet test (basic exercise for beginners)
      • Finger exercise (strings like “jkl”, “asd”; provide initial training for keyboard)
      • Speed Trials
    • Testing Category:
      • Long/Complex words test (like “summer”; these are complex for kids!!)
      • Speed test (fast typing)
      • Simple Sentence (important exercise that combines all the above tests)
  • The Game may also include levels/chapters:
    • Lets-Read & See: Children go through the preliminary documentation and get comfortable with the environment
    • Lets-Learn & Type: Children learn to use LetsType and start playing all the exercises available in Learning Category
    • Lets-Test: Finally, children/teachers will be able to judge the performance by playing in Testing Category
  • Adding new lessons and exercises
  • Every exercise/test will generate a report about the performance of the user and school server can import/work on statistics
  • The typing tutor will be fully supported by Tutorials throughout its execution
  • Various other possible components will be discussed and designed


The typing tutor will be developed in the form of a game with bright images, colors and animation that will attract many children. The design will incorporate various moving and stationary components. A mascot can also be used, preferably Tux. Main asset of this activity will be its GUI. All this will help children learn typing in a fun filled and effortless manner and most importantly they will get familiar with the interface of XO machine. Mockup designing is under progress.

*Rough Idea*
 The game would have something like, letters from different directions fly-in to form a word at
 the center of screen. User will be supposed to type the word before the letters disappear.
 Also, one of the alphabet tests could include balls/balloons with letters going across the
 screen. Such a design will keep the children longing for more.

Development Technology

LetsType will be programmed in Python. PyGTK+ will be used for building the GUI. The activity is inspired from TuxType from Tux4Kids and will be used as a reference.

Future Development

  • School server would be able to import/work on performance reports statistics helping the teacher identify students' potential areas of improvement.
  • Some online contests/competitions may also be organized, wherein all kids can participate via their personal XO machines. This idea has been derived from the concept of online gaming. Such an event can actually trigger a whole new concept of "Learning while competing" which can be very healthy!!
  • We can also work towards making this a disabled-friendly activity.

Road map

In my course of action, I plan to achieve following milestones:

  • I have already started by posting my plans to the mailing lists and discussions on IRC to get the feedback.
  • Starting from April 6th I will dedicate approx. 3 weeks to download source, establish and get fully comfortable with the development environment and prepare myself. I’m a quick learner with passion to learn anything I come across. I’m well versed with C, C++ and currently I’m playing with Python.
  • All the learning will be done as soon as possible to ensure smooth interaction with the mentors.
  • Next task would be study existing typing tutors (which I’m already doing), discussing the designs and necessary features to be included with the mentors. The interim period will largely comprise of absorbing all the required knowledge, generating new ideas and preparing mock-ups.
  • After 20th May, I’ll be involved full-time with the mentors and break down the whole project in modules, main modules include:
    • Design- Finalize the designs in 2 weeks
    • Implementing- coding the typing tutor (4-5 weeks approx.)
    • Testing/Debugging- identifying the bugs, bottlenecks and getting feedback (3 weeks)
    • Improvement phase- issues identified in module3 (testing phase) will be addressed in this phase (approx. 2 weeks)
  • Testing and Improvement phase will consume major part of time in the process. I shall be able to complete the activity by Mid-August.
  • This is a tentative schedule and open to modifications with suggestions from mentors. This time-line is very flexible and I can achieve the goals without any problems.

OLPC 's Advantage

  • OLPC will have an independent typing tutor. The hassle of porting some other tutor to XO machine will be eliminated.
  • It will save a lot effort and time of future developers.
  • “LetsType” typing tutor will add value to XO machine. OLPC will thus garner popularity amongst kids.


Please leave your comments here

Please design LetsType so that it can work with any keyboard and content files for lessons, in any writing system. This means not only accepting keyboard input directly, but also accepting input from SCIM IME for Amharic, Chinese, and other languages. Note that there are variant keyboards for many languages, including English Dvorak and both left-handed and right-handed Dvorak, and numerous IMEs for each of Chinese, Korean, and Japanese. Do not hard-code one keyboard layout per language. Provide a way for users to add their own keyboard layouts and languages. For example, I intend to create a GPL-ed APL IDE that will require a specialized keyboard layout, and specialized lessons for typing APL code, not just standard text. If children want to learn to type in Tolkien's Dwarvish and Elvish scripts, or in Star Trek pIqaD alphabet for Thlingan Hol (Klingon), I say, support them.--Mokurai 18:52, 7 April 2008 (EDT)
Also, please research Omar Khayyam Moore's Edison Talking Typewriter, which was an IBM 360 with a Selectric terminal and voice output, programmed to teach two-year-olds to read and type.--Mokurai 18:04, 8 April 2008 (EDT)
Please just something working. It may be worth while to keep an eye on placing data into a custom translations file, not just the text. That is, instead of a line like home_row = "asdfghjkl;" use home_row = _("asdfghjkl;"). This would provide a full tool for later users to create versions for different keyboards using gettext() and Pootle. Note that users are generally not allowed to create their own keyboards without much work. There is operating infrastructure for switching between keyboard layouts on the fly, so your application would not need to provide any support. Thank you for working an essential activity. CharlesMerriam 13:23, 9 April 2008 (EDT)
Actually, creating a new keyboard layout just means editing a text file. This is not trivial, but it is not all that much work.--Mokurai 14:58, 15 April 2008 (EDT)
Please provide a working example and test it before posting it. CharlesMerriam 13:06, 16 April 2008 (EDT)

Progress so far

After receiving some valuable feedback and comments, I have achieved the following milestones:

  • Understanding the multi-language support and keyboard layouts and use of Pango
  • Set-up the XO environment on my computer using Qemu
  • Playing with PyGTK+ for development of the activity.
  • Referring many articles and resources such as:
    • Producing Open Source Software- by Karl Fugal
    • keyboard layouts
    • localization in Python
    • activity development in PyGTK+
    • developer issues
    • application Development for the OLPC Laptop(Tim Jones)
    • all the user guides of OLPC-XO

Contact Me

View my Biography at Prakhar
Visit: prakhar.jiit.googlepages.com
Mail me: prakhar.jiit@gmail.com
IRC Nick: Prakhar, Prakhar_Geek, Lovey on #sugar, #olpc, #gsoc, #python, #c at irc.feenode.net
My Resume