Woah, What?!?!

As you might have been aware, as a result of Kristian’s ‘The Future of Compiz’ discussion, a new council including Danny, Dennis, Guillaume, Krisitan and myself has been created. We have decided to make some very important code and project related changes. All of these will be for the better, however expect some very invasive changes over the next few months.

Compiz Fusion -> Compiz

The Phoronix headline was probably a little confusing, Compiz Fusion as a project is not being dropped, we’re here to stay, however considering that the same two leaders are in charge of both Compiz and Compiz Fusion, we have decided to merge the two projects. Some of you might think ‘hey waitaminute, merge with what?’. The truth is that strictly speaking, Compiz Fusion and Compiz we’re meant to be separate as a condition of the Beryl-Compiz merge. Now (after almost two years) we have reached the point where we are completing this merge. In essense, the main changes as a result of this are:

  • Move some plugins out of core (specifically the superflous ones like Cube/Rotate, Water, Wobblye etc) into our own plugin packs
  • Change all the graphics
  • In all the code / translations sed – e s/Compiz\ Fusion/Compiz/

Release 0.8

Within the next few weeks, we intend to release the Compiz 0.8 Stable release, which will be our first stable release in almost two years. This is an important priority because:

  • Distro’s have been shipping unstable strictly-speaking unsupported releases instead of the stable release because it is too old.
  • Most of the support team also don’t have the stable release, it’s just too old.
  • It allows us to put the past code behind us and focus on the unstable branch
    • Also noting that we will be making bugfix releases on this
  • First stable release in almost 17 months!

Merge Compiz++

At this point, we aim to merge the Compiz++ branch into master. Note that this will be the most invasive change since the Beryl/Compiz merge! Everything will break. Lots of stuff, not even cube and wobbly have been ported yet, so please be patient or use the stable branch. At this point we also intened to drop some of the useless and / or broken stuff that is not worth maintaining:

  • Emerald: This has major bugs which include crashing for no apparant reason (Bug 807) and switcher panel drawing. It is also based upon a version of gtk-window-decorator that is almost two years ago and among other problems, we don’t have any contributors who understand the code. We are hoping that other more promising decorators like Jasper will replace it. UPDATE: Before you all get worried about loosing all your themes, hopefully Jasper will be backwards compatible with emerald, if not then ease of porting themes will be at the top of our list.
  • Splash: There is no point to letting users know that they are using compiz now, it should go into the background and not be in their face. For those who still want the plugin (Like me) it will go into a user repo, that way we don’t have to officially support it.
  • Other core plugins:
    • FUSE: Nobody actually knows what the point of this and I doubt there is anybody using it. Most likely to be dropped
    • GCONF/KCONFIG: This is already in the ccp plugin. No point in porting these
    • INI: This is a topic of separation, considering that it is already ported.  We have some plans regarding metadata handling which might result in this being dropped, but it is useful in case in case you can’t use ccp for whatever reason.
    • Video: We’ll evaluate solutions like textured video over DRI2/GEM/UXA and see if they are better than this. The only use for this so far is that video can dynamically scale depending on the desktop context, perhaps there is a better way to make apps more aware of this.

The team hopes to have some kind of compiz++ FAQ to answer more detailed questions.

Release 0.9

This will be the first development release of the compiz++ code. Hopefully a lot of exisiting work will already be ported and the release will be usable enough for the users of the development releases to move to.


The team has evaluated NOMAD and found it to be very promising (Trust me, you wont know how useful it is until you do try it and set it up correctly).  We will also try to have a NOMAD FAQ as well for those who are interested, but you can see some of the potential in the video I did a while back. NOMAD is not a very invasive change, so this should hopefully go very smoothly.

Other ideas which may / may not be implemented for releases up to 0.10.0 or 1.0.0:

  • Completely rework option handling and make it more flexible (i.e allow actions in lists, lists in lists) suboptions
  • XRender backend, opening up compiz to more hardware
  • Use BCOP for all option handling and drop metadata handling from core (in discussion). This would drastically speed up startup time along with protobufs.
  • CCSM Plugins to allow for more detailed configuration of certain plugin’s options (i.e mousegestures are stored in a string, but the CCSM plugin allows you to make that string graphically)
  • Generic Cairo Layer plugin, should remove a lot of code duplication
  • Generic workspace and / or window switcher that duplicate plugins derive from to avoid duplication of code
  • Animation – Rework, make it more accessible to other plugins, split it into the event handler and animator
  • Rework text into a general toolkit-like plugin

These are just ideas, don’t expect any of them to come into reality, remeber we have very limited developer time (As is my own time as I have just started school taking around ~70 hours from my week)


It’s currently on the backburner. Python, is going to be an insufficient language in the long-run especially for an animated desktop. I am currently evaluating cluttermm, which is a C++ version of clutter (Programming clutter in C with GObject is something I’d like to avoid). If it is suitable, it will be good considering that I can base a lot of the plugin system on what compiz++ already has.

12 thoughts on “Woah, What?!?!

  1. Noooooo I love Emerald! please keep it alive (or at least make something similar that work better)!

    Looks like my compiz is not going to change for another two years… I don’t care anyways because it almost perfect as it is.

    P.S. While you develop the new code, consider there will be input redirection available one day…

  2. @Gianpa: Hopefully Jasper will be able to replace emerald in terms of functionality and compatibility. See the updated post.

    I’ve talked to onestone and apparently input redirection support should be fairly easy to add to core without any invasive changes to plugins (i.e it should ‘Just Work’)

  3. I would vote AGAINST dropping emerald too. It works fine for me – never crashed for me in the past year and jasper just seems completely unpractical and ugly.

  4. @Tomas: There are currently no existing themes for Jasper except the testing “theme” which is a bunch of solid red textures, how can it be ugly? In fact, how can anything look worse than something it will support the themes for? Jasper is extremely useful in the sense of theming and customization – you can do quite a bit more already with just a few textures.

  5. @Kevin Lange
    Maybe then we should wait until Jasper is stable & has sth more to offer than the testing theme before dropping emerald?

  6. Good luck with your plans.
    Maybe it’s not the best place to ask, but are there some easy parts(for example plugins) that must be ported,and it can by done in Python?
    I think that I’ll have some time next month, but I don’t know C++ yet(I know Java,Python,C#, and some of C so I think that Python would fit best)

  7. @tomas: Actual support for Emerald was dropped long ago, with a few “oh snap, now it doesn’t work at all” fixes every 6 months.

    And there actually is one other theme in existence for Jasper (mine), but that wasn’t my point – I was simply fighting your statement that Jasper is ugly.

    Jasper has a long way to go before it actually replaces Emerald, but Emerald was dropped a long time ago. No one has touched except in the rare instance when a change somewhere else completely destroyed it (simply because people still use it). I don’t know why people are fighting it – nothing has changed except that one of the guys is working on a new decorator that does all of the old and tons more.

  8. What exactly is wrong with Python? It’s a fully-featured language and assuming you aren’t implementing any inner loops in it (which should probably be abstracted out anyways), it should be more than fast enough. I fail to see the logic here. Don’t get me wrong, C++ isn’t a bad language, but I think immediately discounting python like you have without mentioning any technical reasons is misguided at best. Overall, it will be far easier to develop in python and the resulting code base will be far cleaner.

  9. It’s great to see that Compiz is alive again and hopefully this very tasked filled roadmap will attract new/more developers.

    Keep up the good work. I’m very much looking forward to the next release 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s