Changes

Jump to navigation Jump to search
Shift focus from only 0install to meta deploy
Line 1: Line 1: −
<noinclude>{{TOCright}}
+
<noinclude>
[[Category:Activity Team]]
+
  {{TOCright}}
 +
  [[Category:Activity Team]]
 
</noinclude>
 
</noinclude>
    
== Zero Sugar Distribution ==
 
== Zero Sugar Distribution ==
   −
Sugar Services provides a method that is transparent for users and convenient for activity developers to support activity dependencies across varying platforms (and their varying dependencies) as well as across Sugar releases. In other words, Services is a common deployment system for activity developers' needs.
+
Zero Sugar provides a method that is transparent for users and convenient for doers to deploy software across varying platforms as well as across Sugar releases. Zero Sugar is mainly targeting to support direct doer-to-user interaction scheme i.e. without transmissive chain in doer-to-distributor-to-user scheme (but Zero Sugar could be still [[#Distributors|useful]] for distributors since it unifies deployment workflow).
   −
See [[Documentation Team/Services/Scalable development model|Scalable development model]] to learn more about the initial intentions for Sugar Services.
+
== Benefits ==
   −
== Workflows ==
+
How Zero Sugar could be useful depending upon your point of view:
 
  −
Sugar Services look different depending upon your point of view:
      
=== Users ===
 
=== Users ===
   −
In the case of a poor Internet connection (and a [[Features/Zero Sugar Activities|Zero Sugar Activities]]-implemented feature), users can switch to offline mode and they won't encounter any changes to their regular workflow. Switching to online mode will bring an additional progress bar to the launch dialog for activities that have pending/not-yet-downloaded/out-dated activity dependencies.
+
Users can run sugar in various environments (machine architectures, GNU/Linux distributions etc.) and since sugar also stimulates users to be doers, there could be tons of handmade software in the field (mostly duplicates and reinvented wheels but it is nature of sugar i.e. process does matter). It is becoming critical to provide easy and robust launching scheme for all these pieces of code without writing long HOWTOs somewhere on wiki like "Please, if you are on Ubuntu, install these packages before starting my activity...". Relying only on particular distributor i.e. using activities only from distributor's channel castrates sugar.
 
  −
=== Activity developers ===
  −
 
  −
Sugar Services make sense for activities that have non-Sugar Platform dependencies or support more then one Sucrose release cycle.
  −
 
  −
To utilize the benefits of Services, activity developers need only to [[Activity Team/Documentation/Services/Activity Developers Guide|mention]] all services that their activity is using. The Services infrastructure will provide specified services (and specified versions) for the activity and [[Documentation_Team/Services/Activity_Developers_Guide#Attaching_dependencies_to_activity|the service will let the activity know]] about them.
  −
 
  −
Sugar Services will let activity developers:
  −
 
  −
* use dependencies that are not intended to be included in the [[0.86/Platform_Components|Sugar Platform]],
  −
** include libraries that are used by only a few activities; or
  −
** have shorter or longer release/support schedules than Sucrose;
  −
* deploy dependencies that are specific to a particular activity; for example, some Python activities include C libraries—by using Services, an activity developer need not bundle these binaries, they could be used as regular activity dependencies.
  −
 
  −
See the [[Documentation_Team/Services/Activity Developers Guide|Activity Developers Guide]] to know how to add service dependencies to your activity.
  −
 
  −
=== All Sugar developers ===
  −
 
  −
Services are intended to decentralize the Sugar development process. If you have some idea in mind, you can start pushing it through the Sucrose release queue to get it into an upcoming (maybe not the nearest) release. However, since the release process is binary—either your feature is included or not—Services offers more flexibility. For example:
  −
* some features are of arguable general benefit; Sugar Services would allow interested end users to efficiently test (and even deploy) such features;
  −
* some feature are only stable in limited environments; Sugar Services would allow deployment in limited environmets without the risk of destabilizing the rest of Sugar.
  −
 
  −
A developer benefits from 0install [http://0install.net/goals.html features] by:
  −
 
  −
* letting users of all deployed Sucrose releases benefit from your new feature instead of having it only in a specific (latest) Sucrose release; for example [[Documentation_Team/Services/Activity_Triggers|Activity Triggers]] services;
     −
See [[Activity Team/Documentation/Services/Service Developers Guide|Service Developers Guide]] to learn how to create a service.
+
Zero Sugar provides direct deployment method between author of code and its users in as convenient as possible way.
   −
=== GNU/Linux distributions ===
+
=== Doers ===
   −
The [[0.86/Platform_Components|Sugar Platform]] cannot grow endlessly, e.g., installing sugar from packages should not fetch half of all available packages including several UI toolkits, several programming languages, etc., so components like Qt or Ruby are (at least at present) out of the Sugar Platform list. But with Sugar Services, activities can still use such dependencies by installing them from native packaging systems on demand and without bundling binaries.
+
Author of code all time is interested in supporting as big as possible users audience. And since people can use sugar in different environments, it is critical to provide instrument which allows to run activity on all sugar platforms. In case of python (only python, not even arbitrary scripting language since python is a part of [[0.88/Platform_Components|Sugar Platform]]) based activities, existed practice with just zipping activity to .xo files works pretty well. But it is a problem with non-python activities or activities that have dependencies not included to Sugar Platform.
   −
See [[Documentation_Team/Services/Native_packages_usage|Native packages usage]] to know how to utilize native packages in your activity or service.
+
Zero Sugar tries to solve possible issues that prevent activity launching in heterogeneous Sugar environment.
   −
== FAQ ==
+
Also, if you have some idea in mind, you can start pushing it through the Sucrose release queue to get it into an upcoming (maybe not the nearest) release. However, since the release process is binary—either your feature is included or not—Zero Sugar offers more flexibility. For example:
 +
* some features are of arguable general benefit; Zero Sugar would allow interested end users to efficiently test (and even deploy) such features;
 +
* some feature are only stable in limited environments; Zero Sugar would allow deployment in limited environments without the risk of destabilizing the rest of Sugar.
   −
A short list of questions that describe Sugar Services' purposes.
+
=== Distributors ===
   −
=== What is Sugar Services not? ===
+
The [[0.86/Platform_Components|Sugar Platform]] cannot grow endlessly, e.g., installing sugar from packages should not fetch half of all available packages including several UI toolkits, several programming languages, etc., so components like Qt or Ruby are (at least at present) out of the Sugar Platform list. But with Zero Sugar, activities can still use such dependencies by installing them from native packaging systems on demand and without bundling binaries.
   −
* It is ''not'' intended to cure all ills.
+
== How it works at glance ==
* It is ''not'' a "must have" for activity developers; use it only if you really [[#Work_flows|need]] it.
  −
* Is is ''not'' a replacement for GNU/Linux distributions' Sugar packaging efforts; Sugar Services places no need for special treatment regarding dependencies as part of the [[0.86/Platform_Components|Sugar Platform]].
  −
* It is ''not'' intended to be used to support large packages (such as Qt or Firefox) in parallel with distributions. Sugar Services should ''not'' be used to avert scenarios such as ''"It is too bad that you don't have Firefox-3.5 in your three-year-old distribution and cannot run the latest Browse activity."'' In such cases, we should require that users update their distribution and Sugar Platform to more recent versions.
     −
=== How is Sugar Services different? ===
+
Instruments and services that are used within Zero Sugar:
 +
* [[Activity Team/Zero Sugar/0sugar|0sugar]] main tool, everything happen via ''0sugar'' command
 +
* [http://0install.net/ 0install] decentralized deployment infrastructure
 +
* [http://build.opensuse.org/ OBS] openSUSE Build Service, build farms and repository of native packages for GNU/Linux distributions OBS supports
 +
* [http://www.packagekit.org/ PackageKit] to install software from native packaging systems
 +
* [http://download.sugarlabs.org/ Sugar Labs]'s resources to host various files
   −
* ''From the point of view of [http://0install.net/ 0install]:'' Sugar Services is just a method to create a 0install infrastructure; think about "apt" vs. "dpkg" or "yum" vs. "rpm". In other words, Sugar Services are an analog of the [http://0install.net/0release.html 0release] command localized to Sugar needs.
+
Departing point is a [[Activity Team/Zero Sugar/Service.info Specification|spec file]] which is used by ''0sugar'' command to accomplish two major tasks:
 +
* how to build application and its dependencies
 +
* how to deploy application and its dependencies
   −
* ''From the point of view of [http://www.packagekit.org/ PackageKit]:'' PackageKit provides a distribution-agnostic method to install already packaged software. Via 0install, Sugar Services let users install unpackaged software as well. Moreover, 0install will use PackageKit to install missing dependencies if they present in a user's distribution.
+
Building might happen:
 +
* building is not required for scripting languages
 +
* on developer's box, to deploy to environments similar to developer's
 +
* on OBS, to build on GNU/Linux distributions OBS supports
   −
* ''From the point of view of GNU/Linux distributions'': see the 0install [http://0install.net/goals.html original goals].
+
Deploying will happen:
 +
* via 0install infrastructure to install:
 +
** software that were built by developer, downloading from http://download.sugarlabs.org/
 +
** packages will be downloaded from OBS repositories if build happened on OBS
 +
** 0install might install application and its dependencies from native packages if PackageKit is installed
 +
* via native packages, only if build happened on OBS; users need to follow regular, for their distributions, workflow to attach external OBS repository
    
== Documentation ==
 
== Documentation ==
   −
Start your exploration with:
+
Start your exploration from:
 
  −
* [[Documentation Team/Services/Activity Developers Guide|Activity Developers Guide]] to get instructions how to use the already created services.
  −
* [[Documentation Team/Services/Service Developers Guide|Service Developers Guide]] for how to build a new service or wrap an upstream project to make it useful for sugar developers.
  −
 
  −
Or open the [http://wiki.sugarlabs.org/go/Category:Services/Documentation services documentation] category page.
  −
 
  −
== List of services ==
  −
 
  −
{{Special:PrefixIndex/{{PAGENAME}}/}}
  −
 
  −
To see the entire list of services, go to http://download.sugarlabs.org/services/.
     −
== TODO ==
+
* [[Documentation Team/Services/Activity Developers Guide|Activity Developers Guide]] to get instructions how to use the already created Zero Sugar packages in activities
 +
* [[Documentation Team/Services/Service Developers Guide|Service Developers Guide]] for how to create Zero Sugar package
   −
* [[Activity Team/Services/Bugs|Bugs]] service
+
See [[Activity Team/Zero Sugar/Scalable development model|Scalable development model]] to learn more about the initial intentions for Zero Sugar.
* install PackageKit from saccharin
  −
* [[Activity Team/Services/Statistics|Statistics]] service
 

Navigation menu