Tuesday, February 6, 2007

Pushing the Envelope

I saw this review of beryl linked from lwn.net and this quote really irked me:

As nice as Compiz is, Beryl is the group that is really pushing the envelope of what a next generation desktop should be like.

I can't just let that slide, especially since David Reveman (who wrote most of the code in compiz and beryl), just submitted a patch to the X server and related libraries to implement proper input event remapping. If anything is pushing the envelope for the next generation desktop, that is it. The patch lets you pass a triangular mesh to the X server that the server uses for translating input event coordinates on the transformed (say, minimized or wobbling) window. The server will transform the position in the triangle mesh into normal orthogonal coordinates as expected by the application. There has been other ideas floating around for solving this problem, but since you have to break the window into triangles to render it anyway, the input triangle mesh wont restrict the types of deformations you can do.

This work will allow every compositing manager to do input redirection the right way, not just, say, metisse. In general, David solves the root of the problem and gets the solution upstream, improving the platform for everybody, instead of papering over the problem with cheap hacks. This is why we ship compiz as the default compositing manager in Fedora, not beryl. Of course, beryl is available from extras and can be installed by saying yum install beryl-gnome.

On a related note, Fedora 6 now has compiz 0.3.6 in testing, which supports Xinerama, metacity decorations, and more. For the more adventurous, we've updated to X.org 7.2 in rawhide. Thanks to Ian Romanick, in this release, the X server now has protocol for GL_ARB_fragment_program extension, which means that compiz on AIGLX can use fragment shaders. This enables the ever so useful 'rain' plugin, but more seriously, it allows the blurred translucency work that's currently happening in compiz git to work on AIGLX.


Anonymous said...

This bugs me about Beryl as well. They have no problem taking credit, but constantly blame compiz for everything (for cracking their server was the last thing that comes to mind, check the blog on their homepage).

Anonymous said...

The guy admitted to doing it, they didn't go out and blame some one. The only issue I believe they had with compiz was the fact that the improvements and patches generally sat in "code rot" state until someone actually bothered to accept it. Kudos to Dave for his contribution but beryl blows compiz away in communicating with the community as well as coming up with innovative ideas instead of playing it safe. It has paid off in my opinion since more and more distros are packaging beryl instead of compiz as well as attracting developers to beryl team. Just check the forums at compiz to the forums at beryl, theres more developer input as well as waaaaaay more users there. Pushing the envelope simply isn't all about leet coding skills its also about good project management and community involvement. Compiz may have started it but beryl has taken the ball and has simply outdone compiz in most if not all areas.

Anonymous said...

Well, piling hacks over ugly hacks over dirty hacks over workarounds may be "fast" but in the long term just doesn't work.

Anonymous said...

Piling hacks over ugly hacks doesn't work in the short term either...every version of beryl feels like a broken hack with glitches everywhere. I'm glad (but not surprised) that the fedora guys understand this and have chosen compiz as the default.

Anonymous said...

'Pushing the envelope' is another way of saying 'Showing what can be done'. The term is used by pilots. The envelope is the range of the parameters in which it is safe to fly. If you are pushing the envelope, you're near, on or perhaps a bit over the edge. Compiz is nice and safely in the envelope, Beryl is on and over the edge, showing what's safe and what's not.

Of course a lot of the special effects are superfluous. Of course it's glitchy (but progressing much more in this area than I would have expected!) For complex projects like this, if you try to get it perfect the first time, you'll never get anywhere though. You have to go through a number of iterations before it's right.

Another subject in compiz and beryl that doesn't get enough exposure is the way they have made such astounding progress, due to their working plugin model. It's nicely documented and not extremely hard to write plugins. As a result, tons of plugins are available and you can choose the nice ones and leave the crappy ones.

As with firefox and its extensions, this results in really cool functionality, and its all in its own little compartment, so its easy to develop. Just another way to ensure the edges are explored.

Anonymous said...

lol hacks upon hacks? Beryls been extremly stable and will probably be used by (k)ubuntu. When the most popular linux distro decides to include your software you must be doing something right. Compiz on the other hand is pretty buggy, the skydome randomly changing to white and an annoying snap to windows bug comes to mind. Beryl has none of these plus the beryl settings manager out does compiz's, don't even ger me started on compiz's jerk cube animation. Kinda sucks that compiz' is behind considering they started this but then again xfree86 started first but xorg seems ahead now. Great that fedora decides to use it for those who prefer compiz thankfully my fav distro seems to be leaning to beryl.

Anonymous said...

"Kinda sucks that compiz' is behind considering they started this but then again xfree86 started first but xorg seems ahead now."

What you don't know, fucktard, is that most of the actually productive people of Xfree86 are the same guys doing the work in xorg.

Beryl is a steaming pile of bad code worked on by amateurs. None of the actually productive engineers "switched" to beryl like the guys did in Xfree86 vs Xorg. The guys working on Beryl are rejects, rejected people who never worked one line of real code inside Compiz, unlike Keith Packard and all the troopers of Xfree86 who initiated the Xorg project. Beryl guys are reject because their code didn't live up the Compiz coding standards.

Anonymous said...

Live up to standards? A ton of the plugins that were made in beryl were then added to compiz same with the patches. Compiz has this "lets wait and let the beryl guys think of some stuff and if people like it we'll put it into compiz". Great strategy but they'll always be behind. Thats pretty much what the article is picking up on. I figure that compiz is all about a polished product (well that seems to be their tag line against beryl) , but how do u polish a turd?. Look I know its when a project you're rooting for ends up being rejected for a better alternative.

If compiz is so much better why does it have waaay less users than beryl? And why do fix bugs at a snails pace?

As far as "key devs" are concerned, kinda sucks that they can't make a good compositing manager considering the great job they did with xorg. Maybe they should suck it up and start from scratch.

Anonymous said...

It's clear there will be no agreement here.

Those who understand the best ways to change and evolve a platform will stick to reliable quality code, even if it takes a bit more time and fewer developers are submitting changes.

The clueless, the non-developers, and the hack artists will go with whatever is gaudy and popular. Currently, that's Beryl.

That's just the way it is. Thankfully, there's room for both.

Anonymous said...

It would be great f compiz actually lived up to its "quality code" FUD. Fact is its buggier than beryl in a lot of ways, especially when it comes to smooth animation. Huzzah for sour grapes.

Anonymous said...

Absolutely agree!

compiz is the place where fundamental development takes place and the "right" way of coding is applied.

Seriously, beryl is about adding 300+ vista themes, 20+ window explosion effects, 3+ alt+tab replacements and make all that be unstable, ugly and "hackish".

I really hope that people talk to Quinn Storm at XDC and ask why it is so efficient to waste resources on a project such as beryl now is instead of contributing to compiz; there is no serious argument to do otherwise.

Every "experienced" developer can see that ANY fundamental changes always had and are going to happen in compiz.

Whereas you pick input redirections , proper modular fragment shading, improved plugin interoperability, proper window decorations for GNOME/KDE, fast blur effects even usable on app. client side, stuff that properly extends existing solutions rather than completely rewriting them...

Best example is "hey let's create Beryl Desktop Manager". Why? Too lazy to extend/improve year old efforts such as nautilus, konqueror, xfce ... etc.?

My dream is that beryl returns to what it was intended to be; a base compiz checkout plus a number of unstable and maintained patches which add more features/eyecandy with the target to "maybe" get applied upstream.

Anyways, beryl won't ever get near compiz's technological advancements until they can get a serious enough coder within their team.

However that is unlike to happen since any such experienced guy would decide working on compiz...

Well, respect for David R. not getting that pissed of by all this and continuing what will without a doubt payoff in the mid-/long-term (or once beryl's codebase will be too difficult to adjust in order to merge in compiz changes and "explode" in chaos).


Anonymous said...

Beryl has more features that is true. But it goes like this: Beryl devs hack something in to get a feature some users want. Some time later David R. does a proper implementation in compiz and beryl devs port it over, replacing their hacks. So, without David, beryl would just continue to layer hacks upon hacks until everything would fall down. This will probably happen someday anyway.

In short, David does the real innovations, beryl devs just add some bling to it using hacks.

Anonymous said...

I still don't see any evidence of quality code. Compiz is way buggier on 3 systems i've tried (ubuntu, suse and pclinux). Seems jerkier and a lot of the time refuses to start unless manually launching it from terminal. Never had any issues of beryl cept a minor discoloration but that was due to the fact I was using 16 bit color at the time. All I see is the beryl guys coming up with stuff and the compiz guys going "hmm yeah lets just add that to what we have" Instead of coming up with their own stuff. No wonder their user base is so low, always 3 steps back.

Anonymous said...

This thread proves that the average Beryl user is a moron. There is nothing that Beryl does via plugins that Compiz can't do. As far as Beryl devs being innovators... Beryl has contributed nothing to the community as a whole except hacks. DavidR has provided GLX_tfp and now input redirection. That's real innovation!

If Beryl wasn't run by a bunch of children they would recognize this. Also why break Compiz plugin compatibility? Does this make sense to anyone? Ah well in the end better engineering will overcome hacks and flashy/buggy plugins.

Anonymous said...

Compiz had more quality code than beryl? Nice piece of FUD there. Cept theres nothing to back it up. Beryl simply works better and compiz has a boat load of issues that beryl has fixed long ago (stutter with cube comes to mind). As far as flashy plugins the new wall plugin blows away anything compiz has come up with. If those plugins are so awful then why do the compiz devs port them to compiz (making them generally fucking them up in the process)?

Better engineering? wheres the proof? A lot of reviews (including the one posted above) prefer beryl. Are they all noobs attracted to simple flashiness and not "quality engineering? Is it some giant conspiracy to destroy Dave and his band of merry men? No. Beryl simply rocks and compiz is generally doomed to playing catchup as they do circle jerks under the guise of better engineering. Rock on beryl, Rock on.

Arturo said...

Well, to the guys that say that Compiz is generally jerkier than Beryl, please be sure to try the latest version, then post back. The latest version is 0.3.6, which has a ton of bugs fixed, among other things.

The fact that some plugins are not useful doesn't mean we wouldn't like to use them. I, for example, like Beryl's transparent cube, and I'm patiently waiting for it to be implemented in Compiz. I also use the animation plugin.

When plugins get ported from Beryl they get "fucked up" because the Beryl devs broke plugin compatibility with Compiz. They use their own Inter Plugin Connection System, or something like that. Why didn't they just use dbus its beyond me.

I do think that, generally, Beryl is buggier than Compiz. A day last week they pushed around 3 updates because with the one before they introduced bugs and it made Beryl crash, among other weird behavior.

Compiz doesn't get updated that fast, but each time a new release comes out it is generally more stable than the one before it, and it performs way better.

Who am I? I'm in charge of the wiki over at go-compiz.org. You may think things are not moving, because there haven't been any changes around the site, but progress is being made.

Anonymous said...

Sounds good that things are going well for compiz and hopefully we'll see come great things. As far as which one is better code quality wise I must respectfully disagree due to the issues that i've run into with compiz which were non existent in beryl.

The best thing I like about beryl (other than the fact its an awesome app thats constantly pushing the envelope) is the dev guys involvement with the community. Things like TWIB, planet beryl, the tons activity on the boards FROM developers as well as the fact that they're willing to listen to their users. They just don't say/no to feature requests but take the time to explain their actions as well as listen to counter arguments with great patience.

Its pretty cool that a project like that does not have invisible devs that are only active on mailing lists and private communications with other devs but are willing to immerse themselves with the community instead of creating the dev/user split seen in a lot of projects. I believe that is one of the primary reasons that beryl has a thriving community in such a short time. Well that and the awesome animation plugin by cornelius.

Kristian Høgsberg said...

OK, I'm going to close this one for comments, I think we've heard both sides of the argument. Beryl is a good place for prototyping new ideas, whether or not they're implemented the right way, and the large number of plugins show that. Compiz cherry pick the best of these ideas later on, when the infrastructure is in place to do them right.

Compiz moves at a slower pace, but takes the time to get things right and fix the infrastructure around it. Everybody benefits from this, including beryl, which can rebase it's plugins once the new improvements are widely available.