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?