[sugar] Canvas considerations for Sugar/OLPC

Dan Williams dcbw
Mon Aug 14 23:06:00 EDT 2006

So we're back to canvas land for OLPC.  The visual mock-ups which
Pentagram, Red Hat, and OLPC folks have been blitzerating (iterating
with lightening-like speed) over for the past two or three weeks aren't
going to be able to be stuffed into a GTK layout/box model.  So Marco
and I would like to kick off a discussion about canvas libraries and
OLPC/Sugar requirements (as we see them).

We have a few hard requirements:

(a) Must use Cairo for drawing and rendering, no 3D or OGL
(b) Must have python bindings
(c) Must be usable within GTK-based applications

There are two canvas libraries that look like promising candidates:


Both seem to be fairly actively developed, have a steady stream of
recent commits, and provide a -> c from above.  They both appear to
support about the same feature set and provide similar API, using
variants of MVC which we may well find useful in the Sugar UI.

We're going to be making heavy use of animation, if possible, so having
convenience functions to support that, or even higher level support
would be useful.  We will likely have to extend this ourselves anyway,
since neither option seems to provide a lot of animation support.

We need to make sure that the option we finally choose is maintained
over the long term, preferably by people in addition to us.  Perhaps one
of these options will eventually replace GnomeCanvas upstream.  If it's
the one we chose, great, if not, well then we suck it up.

What ever happened to Alex's infamous GTK offscreen patch?  We're still
stuck in the same world where a canvas is a one-way viewport that has to
do it's own event handling.  We won't be able to use GTK widgets in any
of the Home UI we're looking to build, simply because it would make use
of the canvas and we can't embed GTK widgets in a canvas AFAIK.

- Who knows the maintainers of either of these two options?  Are they
both sharp people?

- Has anyone looked at the code of these two options besides us?  What
are your thoughts and concerns?

- What other options are there that fit the bill?  Looked at libpapyrus
on mclasen's suggestion, and it looks OK but is (a) C++ and (b) no
python bindings

- What feature/performance/API gaps do either of these implementations

- What's the state of canvas discussion WRT Gnome and GTK?  Where is it
expected to go in the next 6 months?

We don't want to spend a ton of time debating canvas stuff, since we've
got a really, really tight schedule and we want to start cranking on the
higher level UI code rather than getting back into a canvas debate (for
the second time).  Hopefully we can pick a path to follow by tomorrow
and hit the road.


More information about the Sugar-devel mailing list