Proposals for Compiz Fusion Development

Managing this page

Please keeep your propsals small and meaningful using complete, english sentences. If your propsal needs more elaboration, create a sub page, and include a _small_ description with a link. The proposals are in no particular order, but it is recommended that you add new proposals ON TOP, so it's easier to spot new proposals. It is a good idea to discuss them beforehand.

Core proposals

MPX and Input Redirection Support

One of the main limitations of compiz is that we cannot interact with transformed windows. We should also handle multiple-pointer X as well. In more detail

Clearer separation of core-only code and plugin-accessible code

That is to say, a more well defined API. This is mostly related to code that's accessed from multiple files in core, and thus can't be static.

Better handling of unexpected input

There is a very limited amount of input testing going on, and when something goes wrong, the plugin author generally has to look at the core function to understand why. This shouldn't be necessary.

Document all core functions in the source code

This should always be done, and needs to be updated for existing functions. Input, output, expected result and known quirks/weaknesses need to be documented for every function.

Split large functions

One function - One job. Large functions needs to poor code re-use, cache misses and lousy readability.

Sort, split and shrink large core structures

CompScreen is simply too big to be practical from a development point of view, and it's ambiguous to the reader. This is a major concern for maintainability over time and readability right now.

Plugin Proposals

Significantly improve the mouse cursor code in eZoom

This code is mostly related to XFixes, which is bugged. It can be improved to better handle bugs, and perhaps eventually end up drawing a software cursor whenever enabled. The idea is to make it generic enough so that it could eventually move out of eZoom.

Make animation code more accessible

Animation code sounds modularised, but isn't. We need to modularise it, split out all the animation specific stuff out of core functions, add more hooks and make animations avaliable to all plugins. In more detail

LibCompizConfig Proposals

LibCompizConfig cascading options

Currently, libCompizConfig does not support options within options. This proves problematic when using multi-lists where only generic pre-defined settings are available. In more detail

Project Proposals

LibCompizFusion

There are some utility things that don't really belong in core, are used by a lot of C-F plugins. This would be a utility library for these plugins. In more detail

Merge bugtrackers

This essentially means shutting down the one at freedesktop.org. We don't use it, it shouldn't exist.

Establish clear goals for releases

This will help guide the project, and give both developers, packagers and users and idea about releases.

Merge mailinglists

We don't need two developerlists. Which one to go?

Establish an accepted way to document code

Wiki is nice as it allows anyone to edit and it's thus very accessible. Do we want to go all-in for wiki?