Sugar Architecture Temp: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
No edit summary
Line 40: Line 40:
* can collaborate, that means that its state is shared between several instances running each on an XO, see [[Low-level_Activity_API#Presence]].
* can collaborate, that means that its state is shared between several instances running each on an XO, see [[Low-level_Activity_API#Presence]].


Activities can choose between using the low level APIs presented above, or the higher-level Sugar Activity API presented below.
Activities can choose between using the low level APIs presented above, or the higher-level [[Sugar_Architecture#Activity_API]] presented below.


=== Shell service ===
=== Shell service ===

Revision as of 15:41, 29 January 2008

  Please copy/paste "{{Translationlist | xx | origlang=en | translated={{{translated}}}}}" (where xx is ISO 639 language code for your translation) to Sugar Architecture Temp/translations HowTo [ID# 102971]  +/-  

The Sugar Interface acts as the primary user interface for most children using an OLPC laptop. It runs as a graphical shell on top of a trimmed down implementation of Redhat's Fedora implementation of a Linux operating system. Python has been selected as the primary development language for sugar.

Components

In order to understand how these components map to the user point of view, familiarity with OLPC Human Interface Guidelines is required.

Shell

The Sugar Shell is the UI component that provides the following services to the user:

  • starting, stopping and joining activities,
  • managing devices (network connection, battery, etc),
  • managing the clipboard,
  • managing groups of buddies.

Basically, all that the user does outside activities is done in the shell.

The shell can be divided in two major components, the Frame and the Home view.

The frame is implemented as four top level windows that cover the border of the screen when visible. Every side of the frame contains icons organized in trays (gtk.Toolbar). See OLPC Human Interface Guidelines/The Laptop Experience/The Frame.

The home view is a top-level window with the DESKTOP hint. The three zoom levels are implemented as hippo.Canvas embedded in that window. See OLPC Human Interface Guidelines/The Laptop Experience/Zoom Metaphor.

Activities

What are called applications or programs in other environments, are activities in Sugar, see OLPC Human Interface Guidelines/Activities.

Activity authors need to understand how the activity concept is different from traditional applications and how its software can make better use of the Sugar platform.

Activities can happen in isolation or in collaboration with other users.

What is a correct activity:

Activities can choose between using the low level APIs presented above, or the higher-level Sugar_Architecture#Activity_API presented below.

Shell service

The shell service provides the following subservices to the Shell:

  • clipboard: store clippings, this is basically the backend of the clipboard tray in the left frame,
  • activity registry: keeps track of installed activities,
  • object type registry: maintains a mapping of mime type to "umbrella" types, these are high level object types like Image, Audio, Video, etc that are used to give the user an uniform view of objects in the clipboard and in the journal.

These services are offered as D-Bus interfaces.

Journal

The Journal keeps track of what the user has done with the laptop. Every activity should keep records in the journal so the user can see what has been done in the past and probably resume some past activity.

All this data produced by the activities is kept by the Datastore service, and the journal provides to the user different ways of querying and browsing past works.

Datastore service

Provides activities with a way to store data and metadata and the journal with means for querying, including full text search.

Presence service

This service allows the shell to

Activity API

Specifications

API

Third party packages

Links and references

Python Documentation