Platform Team/Sugar Packaging Management System

< Platform Team
Revision as of 12:17, 15 January 2010 by Alsroot (talk | contribs)


Purposes

Sugar is not unique when faces to questions like how to deploy new features to users. There is well tested and robust model in FOSS world when projects follow release(on regular bases) schedules e.g. 6month, support long time supported releases etc. But there could be cases when sugar has its specific:

  • the most broad sugar audience is teachers, students, schools and other educational organizations thus not in all cases we can rely on the fact the all sugar users will use only last stable sugar release. For example last OLPC sugar is 0.82, next will be 0.84 but last stable is 0.86
  • many developers participate on casual bases thus supporting several sugars(one for stable OLPC, one for next stable OLPC and one for last upstream stable) for theirs activities is overkill. Thus people support only one branch and either drop other users categories or do not implement useful features from last sugar(like new toolbar design).

So, the right answer could be more scalable and decentralized development model. That doesn't mean we should follow only decentralized model but we can effectively mix both - centralized model with core team and regular releases and adding optional decentralization.

Implementation ideas

Decentralized development model means here that activity developers' focus is moving from core releases to releases of services they use in activities.

So, the corner stone idea is not having solid sucrose, there could several sucrose releases in the field, but bunch of services(i.g. packages) that have their own API based schedules. And so for over sugar dependencies like sugargame or groupthinking.

For glucose components it could look like:

  • localize code that could be changed often to separate services with often releases
  • keep the rest of code in services with infrequent releases
  • use robust and explicit API for all services

For example in case of sugar-toolkit, it could be splited to:

  • move all shell related API to shell itself to have one solid service - shell and provide dbus API for all shell related needs e.g. getting information about sugar environment
  • toolkit service, list of widgets that use stable API from shell service and mostly are shell independent
  • move all datastore related code to sugar-datastore - datastore service

Services should be independent as much as possible e.g. activity developers could use toolkit service from 0.88 cycle with shell service from 0.82(since its API wasn't changed).