Extending Sugar

from: http://en.flossmanuals.net/Sugar/Overview

Once you get comfortable using Sugar, the real fun begins. This is because Sugar gives you the freedom to create your own Activities, modify existing ones, and even modify how Sugar itself works. The goal of this section is to help you get started integrating new Activities into the Sugar environment, build your own Sugar Activities, and learn how to modify the base Sugar environment.

An overview of the core components of Sugar 

The Sugar learning platform was originally designed for the One Laptop per Child XO-1 laptop. Sugar Labs was created in order to port Sugar to additional computer hardware and operating systems. Its goal is to make Sugar available to a wide range of students, parents, and developers. Sugar Labs also oversees the further development of the base Sugar environment and Sugar Activities.

Base Sugar environment (glucose)

Sugar is the minimal environment that must be added to a standard GNU/Linux distribution in order to enable Sugar Activities to run. This includes the Python code and graphics files that implement the Sugar shell as well as the Journal.

Sugar Activities (fructose)

Sugar Activities are GNU/Linux applications that have been integrated into the base Sugar environment.

Sugar learning platform (sucrose) 

The Sugar learning platform includes the base Sugar environment and a core set of Sugar Activities. (Glucose and fructose combine to make sucrose.) 

Operating system

Sugar runs on many GNU/Linux-based operating systems. Please seewiki.sugarlabs.org/go/Supported_systems for a current list of supported systems. If your favorite distribution is not yet supported, please contact the Sugar team by email (mailto:sugar@lists.laptop.org).

Security system

Rainbow is a component of the Bitfrost (wiki.laptop.org/go/Bitfrost) security system. Rainbow provides a level of isolation of Activities from the underlying file system in order to prevent malicious programs from doing irreparable harm. When creating your own Activity or installing standard GNU/Linux applications, you may need to consider some of the restrictions imposed by Rainbow.

Some important technologies underlying Sugar

Python

Sugar is written in Python. Python is one of the few programming languages that is both simple and powerful, useful to beginners and experts.

There are a number of freely available guides to programming in Python, including:

X Window System

The X Window System is a framework for building graphical user-interfaces. X provides primitives for drawing and moving windows on a screen and interacting with input devices.

Window manager

A window manager is framework for controlling and placing windows within a windowing system. Sugar runs on any window manager that implements GTK+.

Matchbox 

Matchbox is a lightweight window manager. Matchbox is not dependent on any particular GUI Toolkit

GTK+

GTK+ is a cross-platform toolkit for creating graphical user interfaces. GNOME is built on top of GTK+. GTK+ has bindings for many languages.

Pango

Pango is a software library for laying out and rendering text. Pango is designed with an emphasis on internationalization. 

Cairo

Cairo is a software library used to provide a vector graphics-based, device-independent API. It is designed to provide drawing across a number of different back-ends.

Python D-Bus

D-Bus is a message bus system. D-Bus enables applications to talk to one another. In addition to inter-process communication, D-Bus helps coordinate process life-cycle. D-Bus allows developers to code a single instance application or daemon and to launch applications and daemons on demand when their services are needed.

Telepathy

Telepathy is a unified framework for real-time communications. Telepathy uses the D-Bus messaging system to provide an interface for client applications.

Avahi

Avahi is a system which facilitates service discovery on a local network. Avahi allows you to plug your computer into a network and be able to instantly view other people who you can chat with, find printers to print to or find files being shared.

GStreamer

GStreamer is a framework for developing multimedia applications. GStreamer serves a host of multimedia applications, such as video editors, streaming media broadcasters, and media players.