Here is a proposal to integrate a tutorial system into the next release of Sugar (0.90). This proposal builds on top of the work done on Tutorius during the last year and attempts to provide a draft version to be improved by community feedback. First, a high-level overview of the result expected is discussed and mock-ups based on screenshots are used to illustrate the idea. Second, the technical feasibility is discussed given what we learnt during the last year. Third, a roadmap is suggested to take into account the release calendar of Sugar.
Overview
The proposal consists in providing a default interactive tutorial for Sugar that will give an overview of the particularities of the Sugar interface and activities. This tutorial should be accessible from the first login screen, right after the color selection, and from the option menu:


The tutorial will provide an overview of the Desktop, the Group and the Neighborhood Views as well as the Frame, the Journal, the Write and the Browse activity. Here are screenshots of what it might look like for some of them.




The information presented to the user will be essentially composed of bubble messages pointing at screen elements. Progress through the tutorial will be accomplished by the user clicking a next button at the bottom of the screen. Once the tutorial is over, the user will be brought back to the Desktop screen where she will be able to resume interacting with the system normally.
The tutorial should be stored in the user home directory, alongside any activity data, as an XML file representing the execution states of the tutorial.
Translation of the tutorial should be made using the gettext convention by storing translations of the tutorial strings along side the XML file using the gettext schema (.po, .pot, .mo files).
The tutorial should be independent of the screen resolution.
On top of that, the tutorial should be designed to be robust against unscripted actions made by the user. It means that if the user clicks on any button while the tutorial is showing the different elements of the interface, the tutorial should never become out-of-sync with the state of the interface in a way that cannot be resolved by the user. The examples given previously simply rely on the user pressing the next button when she is ready to move on, therefore issues about the exact state of the interface should be avoided.
For the 0.90 release, the tutorial won’t be user modifiable other than by modifying the XML format by hand, which won’t be recommended.
Feasibility
The major part of the system has already been developed as part of the Tutorius project, that has been running from January to December 2009. The subsystems that have been developed include:
However, a number of issues prevent the current system from being able to run the aforementioned scenario:
Those are the major issues that will need to be worked out to make the system works and the integration smooth.
Roadmap
A tentative high-level roadmap is proposed, taking into account the roadmap to Sugar 0.90. The major difficulty anticipated is having the code reviewed, understood and integrated in the Sugar mainline by core developers. To ease the transition, the current system will be rebased on top of the latest release of Sugar (0.88), so that a patch for sugar and sugar-toolkit will be easily derivable. Also, a custom build of SoaS with the Tutorius system will be made available for testing. This roadmap is subject to changes if a better order is found to facilitate a progressive testing by the NZ team.
March
Discuss with the Sugar community about the proposal
Specify the content for the introduction tutorial
Rebase the current Tutorius code base to Sugar 0.88
April
Produce a new SoaS image with Tutorius based on Sugar 0.88
Fix the window stacking to correctly overlay bubble messages on top of Views and the Frame
May
Migrate the Bubble Message position rendering from absolute to relative
Fix remaining minor bugs
June
Make sure localization of Tutorials correctly works
Add the logging screen option for the introduction tutorial
Add the option item to replay the introduction tutorial
July
Produce a first complete Tutorial
Produce documentation for the localization team to translate the Tutorial
August
Bug fix
Revision of the Tutorial
Help with the release effort
September
General help
Please contribute any relevant comment below!
