Unbreaking Metacity’s constraints.c

So, Havoc has for a long time made comments about constraints.c and mentioned how it was busted, broken, wrong and complicated…among many
other
similar comments. It’s even to the point that he has said he may have too much inertia to review patches against it (not that I can blame him…), and that he wants it to be rewritten (again).

I was naive enough to try to tackle this. I had been eyeing it for quite some time, slowly trying to understand how everything worked. Then I started working pretty hard on this task. Then I thought I had everything finally figured out, had a fair amount of code written that I could use, and a good roadmap with the necessary ideas to get it all done pretty quickly. So much for quickly…

Anyway, things are finally starting to come together and the code has at long last reached a stage where it can be used as a demo (in other words, it really sucks to try to use it for normal work but if you avoid the known nasty regressions and brokenness, you can show off some of the smooth bugfixes). But I believe things are in pretty good shape and this new framework is easier to understand and update (though I’ll need others to chime in to measure whether that’s really true or not).

Anyway, it should be exciting. I’m hoping to get it good enough to merge onto HEAD in the next couple weeks so that I can help out Olav with bugzilla as I’ve been promising to do. Stay tuned…

2 Responses to “Unbreaking Metacity’s constraints.c”

  1. Elijah, could you maybe be convinced to do a write up post on what the aim is with this rewrite.

  2. David, for the most part, the rewrite fundamentally doesn’t really help users. The main goal is to make it possible for us to actually fix bugs so that we can help users. However, I’ve put a bunch of bugs on my list that are now associated with the rewrite, which I intend to fix to make sure that the new infrastructure doesn’t fall short of what we need. I don’t want to dig out and list all the individual bugs, but you should expect to see several of the bugs being tracked at
    http://bugzilla.gnome.org/show_bug.cgi?id=155458 getting fixed on the branch (some already are).