1. The first thing I like to do is push out a 0.3.4 release. (This week)
2. Some important changes to how plugins do window animations needs to
be done. There's currently one representation of each window and plugins
do simple animations like move and scale by manipulating this window
object. This can easily cause conflicts between plugins and a lot of
care needs to be taken to make sure that this doesn't happen. By making
plugins avoid manipulation of window objects, it will get a lot less
complex and a lot of issues that's been hard to track down and fix will
no longer exist. I have a pretty good plan for how to do this and I'll
start working on it as soon as the 0.3.4 release is out.
3. Plugins should keep references to CompTexture objects while
performing animations. Proper design of point 2 will make it easy to
adjust plugins for this. It will make animations of windows that are
unmapped and destroyed less complex.
4. Notification functions for state changes like minimize, unminimize,
maximize, shade and so on should be added. Will remove a lot of
complexity from plugins.
Nothing too exciting so far. Mostly about removing complexity and making
things simpler. However, redesigning and making things less complex is
important for stability and making sure that compiz scales as more
features are added.
5. KDE decorator that supports kwin plugins.
6. Software cursor. I want compiz to draw the cursor. The hardware
cursor in the server isn't that useful, it's much better to have compiz
do a software cursor as part of the compositing. Gives us flicker free
cursor updates and allows us to do a lot of other interesting stuff. It
will require some minor changes to the server but I've already done some
experimenting with this and it seems to be working very well.
7. A pluggable shader interface that will allow different plugins to
plug in to different parts of the fragment shading. E.g. we can have one
plugin that is doing some parallax mapping, another one that performs
some advanced scaling algorithm for accessibility purposes and one
plugin that blends the result with blurred destination fragments all
working at the same time. The plugins should only have to provide shader
code for their specific part and this shader interface will build and
cache appropriate shaders/fragment programs.
8. The desktop window that most desktop environments are using is taking
up a lot of resources. Integrating that better into compiz would both
allow us to save resources and do some nice background effects. I
discussed this briefly with Kristian Høgsberg and Alexander Larsson at
the gnome summit earlier this year. Creating a desktop plugin and
getting a demo program that uses the same interface as the decorator
shouldn't be very hard. And we'll see where to go from there.
9. Input transformations. This will require some changes to the core and
some of the plugins. I think that most of it is going to be pretty easy
to get done. However, I don't see any point in doing anything until we
actually have input transformation support in the server, we should just
keep in mind that this is something that is going to be added sometime
soon.
I'll try to get the first 4 points done asap. 5-9 doesn't have to be
done in any specific order, they can all be done at the same time and
anyone who likes to start working on any of those things should do so.
I'll probably come up with more things that I think needs to be done but
I'll keep the list and the web-site updated.
-David