From Sugar Labs
< 0.84
Revision as of 06:39, 20 September 2008 by Marcopg (talk | contribs) (→‎TODO)
Jump to navigation Jump to search

Datastore rework


Owner: Tomeu Vizoso


  • Marco Pesenti Gritti


  • The datastore code needs to be rewritten, to simplify and improve maintainability. As a first step the API will not be changed at all (other than removing removable devices support, see next goal), so that the new implementation can be swapped in without changes to activities and Sugar. (tomeu)
  • Drop for now the management of removable devices inside the DS. Removable devices support in Sugar should happen without intervention from the DS. This will require that Sugar grows some kind of simple file manager that access the file system directly. (tomeu)
  • #8155 The datastore should hard link identical files, to handle repeated downloads of the same content without filling up NAND. (tomeu)
  • When an existing entry is modified, keep the old version and reference them with a version number. Compress versions with deltas. The journal needs to add a possibility to launch different versions of an activity from within the detail view. (tomeu)
  • Degrade gracefully if a database gets corrupted- Basic functionality should only depend on the filesystem being available. Any other data structures (full text index) should be rebuildable from the filesystem. (tomeu)


  • Tomeu is working on a prototype of the datastore rewrite.
  • If the journal is not going to display the contents of removable devices, we (Eben) need to design an alternative UI.
  • More work needed to define the goals.

Memory bloat


Owner: Marco Pesenti Gritti


  • Riccardo Lucchese
  • Tomeu Vizoso


  • Improve startup time and base memory usage of the sugar shell and related services. This will involve dropping unnecessary dependencies and reducing the number of processes by merging the Journal and shell service inside the shell process. (tomeu)
  • Improve activity startup time. We might be to rationalize dependencies a bit. Ensure that the startup animation is not slowing us down. Preload more modules inside rainbow. Import modules lazily where it make sense. (marco)
  • The control panel should startup instantaneously. (erikos)
  • We are using icons very extensively in the UI and we need a very efficient caching strategy. There are different possible approaches including caching on disk and in the video memory. It should not be hard to do better than we are currently doing, anyway. Drawing and animations performance should benefit a lot. (marco)
  • We are very often saving to the datastore unnecessarily and some times in concurrence with other heavy tasks (like switching activities). This is particularly bad on the XO given the compressed file system. (marco)
  • Switching between zoom views causes a lot of unnecessary redrawing and flickering. Should be reasonably easy to fix. (marco)
  • Write a clear check list about things you need to do to ensure you are not leaking pygtk widgets. (tomeu)
  • The reference cycle between Widget, Palette and Invoker is causing a lot of leaks. The Palette should not know about the invoker at all. The Invoker should control the Palette instead, pop it up and down, set his position etc. (marco)
  • BuddyModel is referenced by sugar.presence.buddy.Buddy which is cached, so it doesn't get released as soon as we would like. (tomeu)


  • We need some way to constantly monitor memory and startup time.
  • Composition would help activity switching and the frame animation a lot. We cannot turn it on for all the windows for memory reason but it might be reasonable to composite the current active activity and the frame. It has a cost anyway, so we should see if we can improve drawing efficiency instead.
  • The current implementation of thumbnailing requires to take several screenshots of the activity window synchronously on basically every window stack change. Short term solution is to compromise on the accuracy of the screenshots to take them less often and improve performance. Long term we should look into using composition or gtk off-screen rendering to be able to take a screenshot even when the window is hidden/idle.


  • Several heavy shell dependency has been dropped.
  • Merge of the journal and of the shell service into the shell is in progress.
  • Patches to take screenshots less often are available.