Saturday, July 14, 2007

Compiz-fusion vs. Beryl

I know I don't blog that often; but every once in awhile I think I have an opinion/perspective worth publicizing on some level, as it is somewhat contrary to the norm. Some time ago I had posted about how much I liked Beryl as a 3D window manager; it's something that Vista wants to be but will never become in its current inception. Well, here I am again posting about Beryl, which has recently been consumed by Compiz to become Compiz-fusion.

First, just a little bit of background for those of you unfamiliar. In the beginning, there was Compiz the original 3D composite window manager that was pushed by Novell in 2006. Now, the developers of Compiz had some rather different perspectives on how Compiz should be handled. In particular, there were issues with how the core would be developed. I am going to avoid names here as it is really unimportant at this point. One camp essentially wanted a rock stable core that essentially was not allowed to be patched outside of one or two developers. Another camp wanted core modifications to accommodate new plugins and hardware features. Essentially, the second camp wanted a faster more feature-rich core at the sacrifice of stability. This is a very fast and loose interpretation of what the thinking was; but it's the general gist. This difference ultimately declined into various arguments and flame-wars until the Beryl project was essentially forked off Compiz.

Beryl essentially correlates to those developers who wanted to patch the core so that more features could be provided by Compiz. I will try to convey the story as succinctly as possible, as I think it reflects some of the personalities that are ultimately hurting the quality of the code being produced.. I will call a spade a spade and say that some of the Compiz people have portrayed themselves to be true arseholes in every sense of the word. There are some of the Compiz developers who come of as so self-important and degrade other's (i.e. Beryl developer's) efforts so baselessly that it's hard to read through sometimes. Anyway, let us move on from my little opinions. So Beryl forked off and existed by using a heavily patched up version of the Compiz core; they developed the patches and plugins that made their window manager essentially what it is. That being said, Beryl did still rely on the Compiz core for it's own heavily modified core. What ended up happening is that Beryl became quite popular while Compiz's support was dwindling; and it was easy to see why. Beryl as compared to Compiz had a better configuration interface (the Beryl manager as opposed to using gconf), a good theme manager, many more plugins (after all eye candy is important in the 3D wm game); and the WM just ran faster (at least in my experience and some others). Compiz from all accounts only held sway with a select few hardcore followers, whereas more and more people were coming to Beryl. Beryl was easy to get up and running, it ran well and looked great. Compiz was more cumbersome to configure and didn't have the 3D features (ie plugins) that Beryl had. Yes, the Compiz core was more stable but I found it to run slower than the Beryl core.

So, why did Beryl and Compiz merge back together? Well, the official response is that the development roadmap for both projects was the same; and so it was better to collaborate than compete. I say the Beryl developers who pushed for the merge didn't fully know what some of the Compiz developers were like. Many Beryl developers came on after the Compiz/Beryl split. There is also the issue that Beryl still needed the Compiz core source; and it wasn't doing any good to remain split, i.e. risking the total collapse of Compiz. Also, the growing popularity of Beryl was raising tensions between the Compiz and Beryl people; obviously this isn't good since Beryl relied on Compiz for it's core development. So, now Compiz and Beryl have decided to merge into Compiz-fusion. Oh and Compiz presents themselves as just being that kind that they were willing to take Beryl developers back despite Beryl betraying them in the split. Of course, it had nothing to do with the fact that their project was on the path to death; and a merger was a guarantee to get the Beryl user base. Nope that had nothing to do with it, the Compiz people were just so kind and merciful to take pity on the wretches who call themselves Beryl developers to take them back. Sniff, is that sarcasm you smell. You better fucking believe it.

It's easy enough to lookup how the Beryl developers and Compiz developers are already arguing with one another. They couldn't even work out a name without a huge fight. Looking at some of the forum discussions, I have to say that some of the Compiz developers' willingness to belittle the Beryl developers to the point of saying that they essentially haven't done anything of worth since the initial split is quite ridiculous. The fact is, Compiz was dying and Beryl was growing. Beryl needs the Compiz core and couldn't proceed on their current development track if Compiz collapsed and they themselves had to take over the entire core development. But some of the Compiz people will have you believe that Beryl came crawling back to them; that's bullshit. Beryl needed to save Compiz so that a part of their code didn't fall into stagnation. In reality it doesn't even matter who came crawling to whom, but the fact that some of the Compiz developers insist on bringing this point up over and over is ludicrous. I really get the impression that the Beryl people won't be taking seriously in the Compiz-Fusion project, at least not until they get down on their knees and start licking the boots of some of the Compiz people.

Ok ok, that all being said, the personalities of the developers don't really matter. Honestly, if they can produce a good product working together, great. I honestly care about little else. Even though there was a big part of me not liking the Compiz developer's take on things (some of them); I was excited to see if they would produce a faster, more cpu-efficient version of Beryl with some added eye-candy. So, I installed a git version of Compiz-fusion to see how it ran. Well, I was pretty fucking disappointed. Let me reiterate that:

As it stands Compiz-fusion fucking sucks compared to Beryl.

Why? Well, first let me just say... I thought I had forgot to deinstall Beryl because over 90% of 'Compiz'-fusion looks just like Beryl. Virtually, every single plugin came from Beryl. Yes, of course Beryl developers hadn't done anything on their own; the Compiz developers just decided to be kind and include all their modifications to their own WM. I hope you're smelling the sarcasm now... it's getting good and thick. Oh yes, I can see how the Compiz focus is on core stability... I mean I only had two crashes within 30 minutes of installing Compiz as opposed to that happening MAYBE once a day with Beryl svn releases. Yes, Compiz-fusion is obviously much better. Now I understand I was using a git version of Compiz-fusion, but I had always been using the very latest svn version of Beryl (since January this year) and I never had the stability issues I saw with Compiz-fusion. Also, these projects combining should not lead to a REGRESSION in stability. Yes, I know they are two different code bases; but they only split like a fucking year ago. And they've been in the process of merging code for almost a month now. I really don't see the reason for this digression in performance outside of the usual antics of Compiz not patching it's core to actually run correctly with the Beryl plugins.

The stability wouldn't even bother me IF the WM actually ran better on my machine. It didn't; not even fucking close. My first impression of Compiz was 'wow, this is fucking choppy'. No worries, I figure I'd make all the settings as close to my Beryl settings, then see how she went. Still, Compiz looked way choppy compared to Beryl. So, I started looking at FPS and CPU loads of Compiz. On my machine (nvidia geforce go 6600 128MB of Ram). Compiz would idle at about 85fps and 15% cpu (provided it didn't crash) with all my little plugins running. Under Beryl, the system was idling at 135-150fps with a CPU load between 5-12%. WTF is this?! Ok, this is a simple benchmark; but in the end these are the two things people care most about... is this interface going to kill my CPU and will it run at a decent frame rate. Compiz would drop down to 35 fps moving windows etc with no water effects; Beryl never dropped below 85fps doing the same things WITH water effects. Yeah I know this a new merger between Compiz and Beryl; but this is really unfucking excusable. Given that there was such a huge discrepancy between FPS and CPU load when both WMs were idling indicates to me that there is something very wrong with the core of Compiz. The performance of Compiz-fusion was consistently worse that Beryl and used more CPU cycles. Really, there is no excuse for this; the core code for compiz hasn't changed for the most part; and there is every indication that it's shit compared to the core Beryl was using.

As for the plugins, Compiz-Fusion does add a handful of new goodies in the eye-candy arena. They've also added some more physics to things like wobbly windows. Looking at the plugins present in Compiz-fusion as compared to Beryl, I have to say that I believe all of them to be pretty but not widely useful. For example take the expo mode; yes it looks nice (... even though it's an apple ripoff) but it uses something like 20% of your screen to manage all desktops. After you use expo a few times, you don't use it again because it's so screen inefficient. Bitching aside, I'm glad they included it; I'd rather have choices I don't need than absent choices that I want. Besides, there are plenty of plugins that came from Beryl that are pretty but not too useful. That being said, there are some features missing from Compiz-fusion that I find worrisome. First, the water effects have been really degraded. This was one of my favorite pieces of eyecandy; and it's pretty much gone in the current Compiz-git version. More importantly is that there is no option to turn the desktop cube into an n-sided prism. If you use the desktop cube you have only 4 screens to work with; this just sucks. Being able to have more than 4 screens is an awesome feature; many people use more than 4 desktops at a time for their work. The cube interface to desktops is really nice in that it uses a large percentage of the screen to manage all your desktops, and it also gives you a perception of where all your windows are in a 3d space. This is remarkably useful because people make correlations to placing things in three dimensional space as that is what they do in real life all the time. Using a desktop cube makes it easier for a large number of people to manage many windows effectively. Restricting this plugin to cube and not an n-dimensions prism I view as a huge feature regression in terms of genuine productivity. All in all, there are many superfluous features added to Compiz-fusion as compared to Beryl; but there are a few key features that were present in Beryl that are currently missing in Compiz-fusion.

All in all, I think the current state of Compiz-Fusion is unacceptable. Before I go on; I will say that I have some knowledge in the area of 3D programming. I've written my own surface plotting engine from scratch in OpenGL and C, along with other various 3D visualization interfaces for displaying scientific data. At one point I wrote a parallel 3D render that would animate fusion simulation plasma for General Atomics. These details don't matter outside of the fact that they indicate that I have some clue about what should be possible for a 3D interface on certain hardware. Compiz-fusion falls vastly short of the performance mark of where it indeed needs to be. It's current CPU usage per yielded frame rate is downright abysmal compared to Beryl. The fact is this is a desktop user interface; and the tests I did directly correlate to what people will think if they run Beryl and Compiz side by side. There might be certain configuration where Compiz-fusion is more stable or runs comparably to Beryl; but the fact is, that won't be true on most desktop systems. Part of the beauty of Beryl is that it ran smoothly on my laptop (which isn't particular decked out and over a year and a half old). This fact alone makes Beryl appealing; as so many people have laptops nowadays. I would not run Compiz-fusion on my laptop as it stands; it simply isn't worth the chop I see and the CPU overhead it induces. I'm not talking a few fps either; I'm talking about fps that are on the order of 50% lower on Compiz-fusion as compared to Beryl. So the low down is this, Compiz-fusion gives you some extra eye candy that Beryl doesn't have but in the process has sacrificed

1. Some core Beryl features like the N-sided prism.
2. FPS performance
3. Lower CPU overhead.

In my reckoning, that's not a very good fucking deal at all.

I honestly, hope that Compiz-fusion can get its act together soon; as it stands, the current inception of Compiz-fusion won't be acceptable to people scrutinizing it's performance. The Beryl team has already proven that they can produce a quality piece of software in terms of performances and visual appeal; the Compiz people simply have not produced something on the level of Beryl. Like it or not, there it is; and the proof is in the number of people using Beryl vs. Compiz. At the moment, all things are indicating that the Compiz/Beryl merger is lowering the quality of the Beryl product. If these problems aren't corrected within the next few months, we can only hope that the Beryl people have the good sense to walk away from Compiz (forever) and get their own dedicated core developers. I, for one, won't shed any tears to see the Compiz half of the Beryl/Compiz merger fall into development obscurity.

PS – This rant is a reflection on what I've come to understand going through various forum flame wars etc. I'm not interested in hearing justification for the state of things from either Compiz or Beryl supports. I've read enough from the developer's posts to make my own conclusions. If you disagree with what I've put here, post it on your own blog and don't flame this one.

No comments: