Clutter 1.0 roadmap

November 16th, 2008

I’ve sent this email to the mailing list as well

as you might have noticed, work on Clutter trunk is progressing quite nicely. obviously, the big question is: “towards what? which features will land in 1.0? will it be called 1.0? when will it be released? what happens next? when do I get a pony?”

well, it was more than one question. actually, those were a lot of questions. apart from the pony one. that was just weird.

anyway.

let’s try to answer some of those questions, shall we? the first answer is: yes, the next stable release of Clutter will be called 1.0. we think it’s time to hit the “big 1″: we feel confident about the API, we feel confident about the feature set and we feel confident that additional features can be added without breaking the API/ABI contract we’ll have in place for the whole duration of the 1.x API series.

here’s the whole features list we are planning for 1.0; some of these already hit trunk:

clean up COGL
the COGL API is still in a bit of a flux; we’re trying to expose more features of the GPUs without resorting to use GL/GLES all the time, but this means dealing with a lot of cruft and dead ends we’d like to remove from the API before it’s sealed shut.
documentation
even though we have a near-100% API coverage in Clutter, some bits are still missing or not explained. we also need a Cookbook-style document, like the one I started for the Perl bindings.
better build
this means: single include file strategy for Clutter and COGL, unit testing, removal of the circular dependency between COGL and Clutter. all of this has landed in trunk in the past couple of weeks, with unit testing getting in on last Friday thanks to Robert Bragg. to break the circular dependency, COGL now has its own fixed-point type, to which ClutterFixed maps transparently; and a Color type, which should be completely opaque to the user (conversion functions are provided). Clutter will still use the ClutterFixed and ClutterColor types and API.

new tweening/simple animation API
this new API should replace the Effects API, hopefully with something more powerful but flexible. the current approach is to use something that looks a lot like the JavaScript tweening API. the bug number with the implementation is: 1014.
unified text actor
this would remove the ClutterLabel and ClutterEntry actors in favour of a generic Text actor, with the ability to be set editable on demand. the separation between editable and non-editable actors is mostly a style/theme issue, and thus should pertain to toolkits written on top of Clutter; this actor would make text displaying and text editing extremely easy for developers, who would then only care about styling. the bug number with the implementation is: 1106.
threaded glXSwapBuffer()
using a separate thread (if the application has threading enabled) to swap the GL buffers on GLX. it has proven to be a performance gain, but it still requires some testing. the bug number with the implementation is: 1118.
asynchronous images loading from disk
along with PBOs and some caching, this would minimize blocking when loading an image from disk into a Texture. the bug number with the implementation is: 1144.
multitexturing support
this would be a COGL feature first, and if time permits, exposed inside
ClutterTexture API. the bug number with the implementation is: 1163.
mesh API in COGL
already discussed on the mailing list, landed in trunk.
disjoint paths and clip-to-path
a change in the semantics in the COGL path API that would make it more Cairo-like, and allow non-rectangular shaped clip areas. the bug number with the implementation is: 1172.
promote the Pango renderer to public API
this has already landed in trunk, under the CoglPango namespace (to avoid eventual namespace collisions).
backface culling
already landed, a simple function the toggles backface culling and that should be used in the paint implementation of an actor.
include the ClutterCairo actor in Clutter core
since Clutter already depends on Cairo for the Pango renderer, we can exploit the dependency to kill off the smallest of the integration libraries. this is still on the “undecided” list of things because it can be a performance hit for Clutter-based applications if the application and toolkit developers are not careful when using cairo. the bug number with the implementation is: 1251

unify the linear and bspline path behaviours
instead of having two behaviours, a single behaviour capable of switching between the two path modes - or even mixing them - would be preferred. the bug number with the implementation is: 1252.
move the repository to git
while technically not a feature, we’re in the process of putting core, all the integration libraries, bindings and toys into a set of git repositories - split up, this time. :-)

since some of the items have already landed in trunk, we might be ableto squeeze in some other GPU-related feature, like exposing the GL lighting API (see bug number: 1254).

the release date for 1.0 depends on the stabilization process of the features that are going to land in this cycle. hopefully, we’ll be able to keep up with the 5/6 months cycle we have followed until now - so 0.9 should be out by December 2008 and 1.0 should be ready by January/February 2009.

after the 1.0 release, the API in Clutter core will be permanently frozen for the 1.x series: only additions and deprecations will be allowed, but no changes or removals. we obviously are going to add features on the stable series, so you can expect a 1.2 and then a 1.4 and then a 1.6 and possibly more. we also know that stagnation is an issue, so we’re going to branch fairly early for the 2.0 cycle (ideally soon after 1.0) so that it will be possible to keep experimenting without ruining the fun of application and integration libraries developers. we don’t have a release date for 2.0 yet, but we expect the 1.x API series to continue for at least a couple of years.

stay tuned for more news from the Clutter team!

Clutter 0.8.2

September 26th, 2008

Clutter 0.8.2 is now available for download at:

  http://www.clutter-project.org/sources/clutter/0.8

MD5 Checksums:

  2e86641254260b355d235ee202918b1c clutter-0.8.2.tar.gz
  6fd2c0e63d904523a773736cbb45d176 clutter-0.8.2.tar.bz2

What’s new in Clutter 0.8.2

  • Add constructor-only properties for the :container and :actor properties of ClutterChildMeta
  • Resync the Clutter keysyms with X.org ones
  • Documentation fixes and improvements
  • Allow defining ClutterColor as an object or an array inside ClutterScript UI definitions
  • Added the missing :perspective property to ClutterStage
  • Fixed the upper and lower boundaries for ClutterUnit and ClutterFixed properties
  • Fix a bug that prevented disabling sorting on ClutterModel
  • Fix a bug in clutter_timeline_list_markers()
  • Queue a redraw when the clip is changed
  • Optimize calls to push and pop the matrix when painting
  • Add a variable to the pkgconfig file for extracting the COGL backend, for configure-time checks
  • Fix a typo in cogl_path_rel_curve_to()
  • Fix showing the cursor after it being hidden once
  • Add a function for obtaining Clutter’s option group without initializing Clutter

List of bugs fixed since 0.8.0

  • #856 - Teardown sequence is borked
  • #945 - Clipping+fbo cloning bugs
  • #1010 - ClutterLabel does not update the layout (again)
  • #1020 - TFP resyncing on MapNotify/ConfigureNotify [Andy Wingo]
  • #1033 - Manually parsing command line options prevents initializing clutter
  • #1034 - Picking doesn’t work on Eee PC
  • #1038 - Clutter 0.8 won’t build due to redefined functions
  • #1044 - cogl_get_viewport error
  • #1047 - API documentation from release tarball is not installed by “make install” [Mirco Müller]
  • #1048 - SIGFPE in cogl_texture_set_region() with nvidia [Gwenole Beauchesne]
  • #1062 - clutter_actor_query_coords() replacement in 0.8 [Gwenole Beauchesne]
  • #1069 - Warnings with ClutterScore
  • #1071 - clutter_timeline_get_duration doesn’t always work
  • #1075 - Difficult to bind clutter_stage_new
  • #1080 - clutter_stage_read_pixels has upside-down y coordinate
  • #1082 - Texture bitmap is destroyed in wrong way
  • #1085 - Cursor is in wrong position on ClutterEntry if set x-align property
  • #1090 - Label somtimes returns natural_width < min_width [Johan Bilien]
  • #1091 - WM_MOUSEWHEEL (scroll-event) not handled correctly [Roman Yazmin]
  • #1099 - No ClutterScript API to get a list of IDs in a given file [Noah Gibbs]
  • #1100 - WM_SIZE not handled correctly, user_resize and window_style correction
  • #1103 - Two typos in clutter documentation
  • #1121 - Setting anchor point doesn’t work if set too early
  • #1124 - Clutter causes an additional size request in each allocation [Johan Bilien]
  • #1125 - Save an extra pango_layout_get_size in many cases [Johan Bilien]
  • #1130 - CLUTTER_MOTION is not emitted when time goes backwards. [Pierce Liu]
  • #1137 - Setting the anchor point does not trigger a re-paint
  • #1145 - Flicker on resize the window
  • #1154 - clutter_timeout_pool_new() documentation doesn’t say how to free [Murray Cumming]

Special thanks to all the contributors:

  Gwenole Beauchesne
  Johan Bilien
  Murray Cumming
  Pierce Liu
  Noah Gibbs
  Roman Yazmin
  Andy Wingo
  Mirco Müller

Have fun with Clutter!

Clutter 0.8 integration libraries release

July 18th, 2008

Clutter 0.8 suite of integration libraries is now available for download
at:

sources/clutter-cairo/0.8/
sources/clutter-gst/0.8/
sources/clutter-gtk/0.8/

MD5 Checksums:

  56b69645629293d5dcd93817fabe669a  clutter-cairo-0.8.1.tar.gz
  91262dd6ead7261a584dacf5dd1933f5  clutter-cairo-0.8.1.tar.bz2
  9ebf9bbe406757472952743ca01870f3  clutter-gst-0.8.0.tar.gz
  13d2a34ea76e4f010e66d20eba12e864  clutter-gst-0.8.0.tar.bz2
  1fea21affb3a74014fc0b4270b67ed2d  clutter-gtk-0.8.1.tar.gz
  0a93adeb69281dcd1d8455a53f746d9b  clutter-gtk-0.8.1.tar.bz2

The Clutter integration libraries suite is a series of open source libraries for integrating Clutter with other libraries:

  • clutter-cairo, for integration with Cairo
  • clutter-gst, for integration with GStreamer
  • clutter-gtk, for integration with GTK+

This suite of libraries allows to use the Cairo drawing API into Clutter; or to use the GStreamer pipelines to render to a texture inside the Clutter scenegraph; or to embed a Clutter scenegraph into a GTK+ application.

Clutter-Cairo 0.8.1

List of changes since 0.6:

  • Added clutter_cairo_surface_resize() and clutter_cairo_create_region()

Clutter-GStreamer 0.8.0

List of changes since 0.6:

  • Add clutter_gst_audio_get_playbin() function
  • Add support for 24-bit textures
  • Add pixel-shader AYUV/YV12 support via ‘use-shaders’ property on ClutterGstVideoSink

Clutter-GTK+ 0.8.1

List of changes since 0.6:

  • Support the Clutter win32 backend
  • Support multiple GtkClutterEmbed widgets
  • Add utility functions for integrating with GTK+ themes, GTK+ stock icons, icon themes and GdkPixbuf
  • Do not open a second Display connection on X11

As usual, have fun with Clutter!

Clutter 0.8.0 Released!

July 10th, 2008

The Clutter team are extremely pleased to announce the new 0.8 stable release of Clutter core. This is probably our biggest and most exciting release yet.

You can download the 0.8.0 tarball from here.

So whats new? Quite alot;

  • COGL, the underlying GL abstraction layer in Clutter, has been
    completely rewritten from the ground up. It is now a more mature,
    fully documented abstraction layer across OpenGL, OpenGL ES 1.1
    and OpenGL ES 2.0. COGL allows Clutter Applications the unique
    ability to run on both Desktop and Mobile hardware with no source
    level modifications. New features include;
    • Much improved and wider tested OpenGL ES 1.1 support.
    • OpenGL ES 2.0 Support.
    • Rich scalable texture support, supporting numerous pixel formats,
      transparent tiling, mipmapping, deformation etc.
    • Overhauled clipping functionality
    • Path based vector drawing functionality.
    • FBO & Shader support across OpenGL and OpenGL ES.
    • Image loading and image library wrapping.
    • Full API documentation
  • Increased portability. Clutter now provides experimental native
    backend support for the Microsoft Windows(tm) platform and
    Apple(tm) iPhone and iPod Touch families of products as well
    improvements to existing OSX, GLX, SDL and EGL backends.
  • The X11 based backends now feature support for Actors that wrap
    external X drawables (i.e the texture-from-pixmap extension and
    fallbacks). This primarily allows for the creation of desktop
    compositing type applications with Clutter.
  • Clutter now seamlessly supports multiple stages (windows) on the
    backends that allow this feature. Stages are also now sub
    class-able.
  • The custom Pango text renderer has been completely rewritten, now
    using the more modern PangoCairo (instead of FT2), and avoids
    nasty subclassing hacks; it supports smooth fast scaling of
    text, has many edge case issues fixed and it still is very
    efficient (using a texture glyph cache). It is even a little bit
    faster.
  • Numerous ClutterTexture Improvements. Including;
    • Image loading from disk.
    • Easier subclassing with custom ‘deformed’ rendering.
    • Mipmap support.
    • ‘keep-aspect-ratio’ property.
    • Repeating tiling fixes.
  • Multiple pointer device support. Clutter now features support for
    multiple simultaneous pointing devices including event processing
    and grabs. The feature is backend dependant and currently
    provided by X11 (with optional new XInput support) and Apple(tm)
    iPhone ‘fruity’ backends.
  • Completely rewritten the size negotiation API and implementation,
    which allows the creation of fluid and dynamic layout management,
    using natural and minimum sizes, and different geometry management
    like height-for-width and width-for-height. Classic ‘fixed’ layout
    still available and not impeded.
  • The ClutterContainer interface has been extended with a flexible
    infrastructure to store container specific per actor state.
  • The timeline behaviour has been updated and made more consistent;
    ClutterEntry has been improved with regards to multi-byte text
    and cursor handling; the API documentation coverage has been
    extended; performance on OpenGL ES has been improved;
    ClutterScript improvements.

For further detailed information see the README and NEWS files. The List of bugs fixed since 0.7.6 are here. The full mailing list announcement is available here.

A very big thanks to all those that have contributed to this release:

Chris Lord, Neil Roberts, Robert Bragg, Haakon Sporsheim, Xan López, Jussi Kukkonen, Armin Burgmeier, Tommi Komulainen, Iain Holmes, Havoc Pennington, Lucas Rocha, Johan Bilien, Ivan Leben, Richard Purdie, Gwenole Beauchesne, David Stanczak, Peter Enzerink, Andy Wingo, Peter Csaszar, James Ketrenos.

Expect the various Clutter ‘add on’ library’s and bindings to be updated for 0.8 in coming days.

As always, have fun with Clutter!

A Break From The Norm.

June 26th, 2008

Taking a break from continuous 0.7.x release posts - a couple of interesting Clutter bits.

Moblin. Intel’s Moblin folks have been brainstorming code and ideas for a next generation Moblin interface based on Clutter. See this post on Moblins playground blog for info (and screencast) on a working prototype demo built with Clutter.

Moblin2 Concept

ODO.The overhauled COGL texture API in 0.7 gives a lot more easy flexibility for custom texture based actors. ODO is a experimental texture based actor which uses this to deform textures in interesting ways. Chris has been hacking it recently to do a pretty cool page roll effect. Heres quick screencast of it in action;


ogg version.

0.7.x posts returning soon!

Clutter 0.7.4 Developers Release.

June 26th, 2008

Clutter 0.7.4 has been released. This is an ‘unstable’ developers release leading towards the eventual stable 0.8 release. This release contains contains roughly all major planned features for 0.8 plus various bug fixes after the 0.7.2 release of last week. The API is not however expected to change heavily between 0.7 and 0.8. Developers are encouraged to test the new release, report bugs and provide feedback. Bindings authors should start their engines and begin wrapping the new API, and provide eventual feedback.

There are new features and improvements in this release including;

  • Fix the ClutterEntry actor after the clip API changes in COGL.
  • Update the shaders generated for GLES 2.0.
  • Add the ability to add search paths and look up files from
    ClutterScript. This allows defining directories to store the
    images to be loaded by a ClutterTexture.
  • Fix the GLES 1.1 support.
  • Warn if no usable pointer device are available on X11 backends.
  • Improve the request for the best pixel format on win32.
  • Fix a regression when sizing the ClutterStage on backends that
    only support fixed size stages; now setting any size will result
    in Clutter ignoring the request, like it happened in Clutter 0.6.
  • Add a method to ClutterBackend to retrieve the display size.
  • Fix clutter_sinx() for angles > CFX_2PI - CFX_ONE

For more detailed information see the mailing list release announcement and the NEWS file.

Clutter 0.7.4 is now available for download at: http://www.clutter-project.org/sources/clutter/0.7/

API documentation for 0.7 is available online at: http://www.clutter-project.org/docs/clutter/0.7/

Clutter 0.7.2 Developers Release

June 24th, 2008

Clutter 0.7.2 has been released. This is an ‘unstable’ developers release leading towards the eventual stable 0.8 release. This release contains contains roughly all major planned features for 0.8 plus various bug fixes after the 0.7.0 release of last week. The API is not however expected to change heavily between 0.7 and 0.8. Developers are encouraged to test the new release, report bugs and provide feedback. Bindings authors should start their engines and begin wrapping the new API, and provide eventual feedback.

There are new features and improvements in this release including;

  • Added XINPUT support on the X11 backends and multitouch events support to the Fruity backend
  • ClutterTexture has a new :keep-aspect-ratio property that controls the preferred size of a texture
  • A newly written clipping functionality, hopefully fixing some nasty issues there (i.e clipped groups with clipped children).

For more detailed information see the mailing list release announcement and the NEWS file.

Clutter 0.7.2 is now available for download at: http://www.clutter-project.org/sources/clutter/0.7/

API documentation for 0.7 is available online at: http://www.clutter-project.org/docs/clutter/0.7/

Clutter 0.7.0 Developers Release

June 13th, 2008

Clutter 0.7.0 has been released. This is an ‘unstable’ developers release leading towards the eventual stable 0.8 release. This release contains contains roughly all major planned features for 0.8 but without extensive testing nor API review. The API is not however expected to change heavily between 0.7 and 0.8. Developers are encouraged to test the new release, report bugs and provide feedback.

There are many new features and improvements in this release including;

  • OpenGL ES 2.0 support.
  • Multiple stage support.
  • Completely rewritten COGL GL abstraction layer with numerous improvements and additions.
  • Completely rewritten Pango renderer.
  • Support for GLX texture from pixmap extension.
  • Native win32 and UIKit backend support.
  • New Actor automatic layout infrastructure.

For more detailed information see the mailing list release announcement, NEWS file and this blog post by Clutter developer Matthew Allum.

Clutter 0.7.0 is now available for download at:
http://www.clutter-project.org/sources/clutter/0.7/

API documentation for 0.7 is available online at
http://www.clutter-project.org/docs/clutter/0.7/

OSX Goodness

June 6th, 2008

thanks to Idan Gazit, Clutter and Clutter-Cairo are now available using the MacPorts project; in order to install Clutter on OSX you just need to set up MacPorts, open a terminal and type:

  sudo port install clutter

and everything will be taken care of.

obviously, this would not work without the great effort of Tommi Komulainen, the Quartz backend maintainer who’s now rocking hard on trunk; it would be great to have some other OSX developers help him rocking even harder.

More Clutter From Around the Web.

June 6th, 2008

Whilst working hard on the upcoming 0.8 release, some Clutter related things we’ve noticed happening around the web.

Candies is a higher level UI toolkit built on top of Clutter with Python.

‘AUTO-DAC’ on clutter - is an in-car music playback UI. Youtube video.

The ‘Ubuntu Netbook Remix’ appears to be using Clutter for its custom launcher. The LaunchPad page with sources is here.

Gwenole Beauchesne has been experimenting with having Flash render via Clutter.