For the time being I will be documenting and unraveling the CompizPlugin class. I remember there being some Python bindings for Compiz that where short lived through it’s forking drama, which I completely understand. From what I read in the source files combined with what everyone in the community is telling me: it’s been a disaster.
Most, if not all, of the original Compiz development team has moved on or been re-assigned to other work, from companies like Novell. I’m not one to point the finger, but since when does Novell allow thousands of lines of completely undocumented code and pay people to write it? It’s obviously great code, since the community has been using it for a few years now and we depend on it daily. One has to wonder though: What if Compiz had been documented like a project in Java typically is? No, not over-documented with constant redundancies about getting and setting, but consistent and expected.
And I wasn’t joking about being undocumented. It’s amazing it works so well and that so many developers have been able to accomplish what they have with such a cryptic system. It motivates me to know that once everyone has bindings for something like Python, Java, C#, or even the clean C++ interfaces, and decent documentation the sky is the limit. Well, there are plugins that deal with the sky, so we’ll find a new limit.
Great post! I do not envy anyone going through the thousands of lines of code. Or even some hundred lines.
The best of luck to all who delve!
Hmmm, what about performance and memory use, both in runtime and build time?
I haven’t found great ways that I can profile that type of stuff without it being really particular to graphics hardware, CPU, but memory usage would be great. I think the Benchmarking plugin needs additions so we can see how many GL context switches are occuring and other things that really drive the performance behind Compiz. Twiddling the bits is probably not going to be as helpful as getting stats on glBind, and such
[...] Here is a SLIGHTLY DATED graph I got from Santiance.com. [...]