Over the past few years, I have promised a new direction for the compiz project. I promised that with the new backing we’d see a revival in development, and increased stability.
I have failed.
I have failed the compiz community.
I have failed the Ubuntu community.
I have failed the previous maintainers.
Despite my best efforts, stability has gotten worse, and I feel as though I can’t even get the simplest things right for the project anymore.
Perhaps things will get better, perhaps things will get worse. I would only hope that the project can attract some of the people it needs in order to keep it alive as it once was, or can solidify on a new direction.
If you develop compiz or write compiz plugins or just like to mess around with compiz settings, you’ll have probably gotten used to doing compiz –replace ccp over and over again. It’s not really all that harmful, but there that ugly flashing of everything that goes on as all the windows are unreparented, reparented, unredirected and redirected. This doesn’t just happen in cases where you are restarting your window manager, it also happens on login and logout too.
It’s 2011, there’s no reason why we should have to put up with this anymore, especially if today’s hardware and hardware from 6 years ago is more than capable of always compositing. The question is how to handle the movements between compositors. It doesn’t make any sense to use compiz for lightdm/gdm/kdm or when you are logging out. However it does make sense to use a lightweight compositor which can hold the image of your screen in place. With compositing happening all the way, it should be possible to have a way for each compositor to hand-off to each other such that the user never sees a flicker as windows are redirected and unredirected.
This is where the proposed _NET_CM_HANDOFF specification comes into place. It provides a very rudimentary protocol for compositors to handle management and unmanagement while ensuring that the user doesn’t see what’s going on, so all the user sees is a brief freeze of their screen as the new compositor takes over from the old one. For example:
In that example, the compositor is actually being completely restarted, but the old compositor stays around just long enough to ensure that the new compositor can take over from where it left off. This will be useful in the case of, eg, login, where lightdm can implement a simple compositor and compiz can take over from lightdm when it is ready to draw and smoothly fade-through or even have a cube-effect or something like that to signify that the login is done.
Just a nice touch for a day’s worth of hacking
edit: totally forgot about the code: https://code.launchpad.net/~smspillaz/+junk/handoff
I was having a discussion with marnanel yesterday about bugs. He then asked me some questions:
21:43 <marnanel> c) do you
actually ever sleep?
To which I replied
c) no
Because I’m a mad hacker like that. And I was also on a bug fixing rampage that night and got about 12 bugs that day. Awesome. But then weird stuff started to happen. Like:
Uhh. Right. Probably fake.
So I’m going through my list of bugs today and I see something new, a [regression]. Uh, oh