[Sugar-devel] [ANNOUNCE] Sweets, Zero Install based Package Management System for Sugar

Aleksey Lim alsroot at activitycentral.org
Sun Oct 2 13:14:47 EDT 2011

Hi all!

The original page for these release notes is

== Retrospection ==

Two years ago, Michael Stone
[http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/2728 rolled]
the first try to get the folks at Sugar Labs excited about Zero Install
software. Several people from both communities showed their interest,
e.g., Bernie Innocenti, Thomas Leonard, Rene Lopez, and Anders F Björklund.
As a result, a meeting occurred on the #sugar-meeting IRC channel.
That meeting was organized by Michael Stone to exchange knowledge and
to learn whether Zero Install might be a good fit for use in Sugar activity
installation. Thomas Leonard wrote a
[http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/2776 summary]
and Michael Stone
[http://thread.gmane.org/gmane.comp.file-systems.zero-install.devel/2776/focus=18807 forwarded]
it to the sugar-devel mailing list.

The idea of using Zero Install in the Sugar ecosystem passed several mutations and,
eventually, it seems that the core ideas have settled down and are ready to be
presented widely in the community.

== The pillars ==

=== Learning by doing ===

The preeminent core idea behind Sugar is learning by doing. Thus,
it is critical to Sugar to have the tools that support the doing
metaphor well, doing not only within regular activities and project teams,
but also by individuals who tweak the software in the process of learning.
And not the least of options is sharing the results of doer/learner
experiments. Sweets is intended to make these aspects less annoying being
based on the [http://0install.net/why.html Zero Install] system.

=== To not reinvent the wheels ===

It will be useful to let people in the Sugar community to concentrate only
on software they are developing, and to reuse existing efforts of GNU/Linux
distributions as underlying dependencies for developing software.
The [http://www.packagekit.org/ PackageKit] project provides this possibility.

=== Infrastructure does matter ===

The core difference of the final Sweets approach with previous evolutions
is the idea that a successful model should cover the full life cycle of software,
from developing by creators to using by the community.
Another project, the [http://openbuildservice.org/ Open Build System],
was chosen for that.

== What is Sweets ==

So, Sweets is a
[[http://en.wikipedia.org/wiki/Package_management_system |Package Management System]]
entirely based on [http://0install.net/ Zero Install], a decentralized,
cross-distribution, software installation system. It might be treated as a tools
and infrastructure wrapper around Zero Install. Sweets is intended to distribute
various software projects created in the Sugar ecosystem, such as libraries,
sugar itself, and sugar activities.

This new distribution method is initiated assuming that:

* The method to share software projects should be as convenient as possible.
* It is important to stimulate users into becoming doers, to modify existing
  activities, and to share the results of their experiments with other people,
  i.e., a distribution method should handle different variants
  of the same project.
* This distribution method is not intended to be the only one, but is targeted
  more towards direct distribution—from software creators
  to software users.

The purpose is to create a new distribution method instead of reusing:

# [[http://wiki.sugarlabs.org/go/Development_Team/Almanac/Activity_Bundles|''.xo bundles'']]
#* Work smoothly only for pure python activities, and only if all
   (and the same) dependencies are installed on all systems. They stop working
   smoothly if activities use non-standard dependencies or contain binaries.
#* But, are not effective in supporting the use of multiple versions of software,
   e.g., the results of experiments (the work) of different doers, simultaneously.
   Users must manually handle the variety of activity versions, e.g., sort out
   all the local bundles or directories in {{Code|~/Activities}}.
# ''native packages''
#* Not the shortest way to connect developers with users.
#* In most cases, they don't support multiple versions of the same project.
#* They don't work at all for sharing results of experiments.

At the same time, existing distribution methods are reused in Sweets:

# [[http://wiki.sugarlabs.org/go/Development_Team/Almanac/Activity_Bundles|''.xo bundles'']]
  is a subset of the Sweets workflow, from usage point of view
#* It is possible to bundle an entire directory as a sweet project
   to use it as a regular .xo file.
# ''native packages''
#* Sweets is not intended to create one more GNU/Linux distribution.
   It distributes only projects that people create within the Sugar
   community; all other software, i.e., dependencies, will be reused
   from native packages.
#* For cases like Sugar deployments, using the more centralized, regular
   repositories (third party or official GNU/Linux distributions with
   native packages) makes more sense. These native packages of Sugar
   software will be included in Sweets, as well. When people start using
   Sweets on top of these Sugar distributions, they will have the chance
   to choose between natively packaged Sugar components and components
   that came directly from software creators.
#* It is possible, when there is a need, to automatically package sweets
   into native packages. See
   [http://download.sugarlabs.org/packages/SweetsDistribution:/ Sweets Distribution],
   for example.

See the [[http://wiki.sugarlabs.org/go/Platform_Team/Sweets/Glossary|Glossary]]
to learn more.

== In this release ==

This is the initial release and has missed some critical points for Sugar,
e.g., a GUI to launch activities using Sweets. The major purpose for this
release is exposing the fact that basic ideas and core implementations
are mature enough to make Sweets useful in some
[[http://wiki.sugarlabs.org/go/#Try_the_release|workflows]] and
to involve more people in Sweets and Sweets related project testing and
development, e.g., a la Ubuntu AppCenter for Sugar.

== Getting the release ==

The details instructions can be found in
[[http://wiki.sugarlabs.org/go/Platform_Team/Guide/Sweets_Usage#Installation|Sweets Usage]]

First, install the PackageKit package with the packages for
integration with the Desktop Environment you are using, e.g.,
{{Code|gnome-packagekit}} for Gnome. It is important to install
the exact integration package required to have an authentication
agent that depends on the particular Desktop Environment.
After installation, it might be required to relogin from
the Desktop Environment session.

Download and run Sweets installer:

 wget http://download.sugarlabs.org/sweets/sweets/installer.sh
 sh installer.sh

Relogin from the Desktop Environment session to take into account
the new PATH environment variable value that the installer will set.

== Try the release ==

[[http://wiki.sugarlabs.org/go/Platform_Team/Guide/Sweets_Usage#Sugar_via_Sweets|Sweets Usage]]
guide for detailed instructions.

To try Sweets in practice, run several Sugar versions. On the Sweets
level, there are not any restrictions to using Sweets on any GNU/Linux
distribution. Successful usage depends only on the presence of
PackageKit and the quality of sweet packages (sweets). For now, sugar
sweets are well aware of Fedora, Debian/Ubuntu and Gentoo package names
and not so well aware of openSUSE and Mandriva. Sugar sweets launchs
were tested on some recent Fedora and Ubuntu releases. The quality of
other GNU/Linux distribution support depends only on how often Sweets is
used on these distributions and the reporting of problems by the

Note, Sugar Shell does not start the authentication agent, and preparing
sugar start can be processed only in a Desktop Environment, e.g., Gnome.
To launch a recent stable Sugar version in emulator mode, type in a

 sweets sdk/sugar:emulator

Current sugar sweets support several Sucrose versions:

 * ''0.94'', stable 0.94 branch;
 * ''0.92'', stable 0.92 branch;
 * ''0.88'', stable 0.88 branch and Dextrose-2 patches;
 * ''0.95'', development version from the trunk.

By default, recent stable version will be used. To run a particular

 sweets sdk/sugar:emulator = 0.88

Since there is no, for now, Sweets support in the Shell to run
activities as sweets, ''sdk/sugar'' sweet contains Fructose and Sugar
Platform dependencies. To run Sugar Shell without them, use the
''shell'' command:

 sweets sdk/sugar:shell

If you need to develop Sugar, see
[[http://wiki.sugarlabs.org/go/Platform_Team/Guide/Sweets_Packaging#Sugar_sweets|Sweets Packaging]]
guide's instructions.

== Further reading ==

* [[http://wiki.sugarlabs.org/go/Platform_Team/Sweets|Sweets]] home page.
* [[http://wiki.sugarlabs.org/go/Platform_Team/Guide/Sweets_Usage|Sweets Usage]] -
  A guide to know how to launch software using Sweets.
* [[http://wiki.sugarlabs.org/go/Platform_Team/Guide/Sweets_Packaging|Sweets Packaging]] -
  A guide to know how to make your software accessible via Sweets.
* [[http://wiki.sugarlabs.org/go/Platform_Team/Infrastructure|Infrastructure Map]] -
  An overview of the Sweets software world.

== Looking forward ==

The next minor, [[http://wiki.sugarlabs.org/go/Platform_Team/Sweets/1.1|1.1]],
release should:

* provide [[http://wiki.sugarlabs.org/go/Activity Library]]
  activities via Zero Install,
* support search among remote sweets on the client side,
* provide an initial GUI for browsing local and remote sweets.

== Feedback ==

* [http://bugs.sugarlabs.org/newticket?component=sweets Submit] your bug
  report or feature request.
* Subscribe to the [http://lists.sugarlabs.org/listinfo/sugar-devel
  sugar-devel] mailing list and email with the subject prefixed with
* Enter the magic word ''"sweets"'' to ask your question on IRC
  channels, [irc://irc.freenode.net/sugar #sugar] (not logged) or
  [irc://irc.freenode.net/sugar-newbies #sugar-newbies] (logged).

== Credits ==

* People who pointed Zero Install out and made
  an initial push, Michael Stone.
* Zero Install development team to take care about reviewing
  the code that was introduced by Sugar workflow needs.
* People who pointed Open Build System out, Jigish Gohil
  and David Van Assche.
* People who initially tested Sweets and replied with useful
  feedback, Michael Stone, Rafael Ortiz, Sebastian Silva,
  Bernie Innocenti.
* The [[http://wiki.sugarlabs.org/go/Infrastructure Team]] for their help
  with setting up services required for Sweets infra.
* The [[http://wiki.sugarlabs.org/go/Wiki Team]] for continuous polishing of
  [[http://wiki.sugarlabs.org/go/Platform_Team/Sweets|Sweets]] wiki pages.
* [http://activitycentral.com/ Activity Central] for supporting
  the work on the 1.0 release final phase.


More information about the Sugar-devel mailing list