Input properties are a lovely hammer, but they need some standardization for things like pointer acceleration.

X server protocol dispatch is still handwritten. We should generate it from xcb-proto instead.

Extend shadow to be something you can have per-drawable instead of per-screen.

Loader: Remove the abstraction from the loader (hw/xfree86/loader) so it's just a simple libdl wrapper with the same API, and punt it up to the DIX, so all DDXes can use it.

Remove statics: Make MAXSCREENS and MAXFORMATS run-time configurable, ditto MAXCLIENTS. ajax started a patch for MAXFORMATS, bother him about it.

Code removal: Remove anything that's unused and/or bad.

Port the int10 code to libx86. mjg59 and vignatti had started on this (from opposite ends).

Build the "X server awesome scheduler":

What we want is simple: a preemptive scheduler with priorities (real-time scheduler) to deal with multiple clients and with a special care for input events. One interesting thing to considerer is that the issue of long-lived requests is mostly a thing of the past. PolyLines are not that common, fonts are mostly client side, and OpenGL is usually client-side as well due to DRI. Moreover, clients can block each other. Just try to execute a x11perf -getimagexy500 plus play a video to see. x11perf eats all the X process. Isn't wiser to give a tiny quantum here for each client? The funny thing is that -dumbSched gives a better result than with the smart scheduler :) So simultaneous client requests aren't dealt by smart scheduler at all. This is quite interesting for those who is trying to start in the X world because it doesn't touch much of the graphics oddities :)

Major development

These are big cross-cutting things. Much of this is just ajax's wishlist.

Rewrite the bottom of the rendering layer. The old Get/Set/FillSpans API was appropriate when your memory aperture was all of 16 bytes, but this is really not the case anymore. Should move to GetImage/PutImage/PolyFillRect/CopyArea.

Redo Pictures. Right now they're like a GC and a Drawable in one, which makes things really awkward.

More generally, detach rendering from the ScreenRec. Wrapping is a useful technique, but most useful if the thing with the wrap chain is something you can create temporaries of, which ScreenRec is not.

Extend Xdmx to act as a drop-in replacement for Xnest, and delete the latter.

Extend Xdmx to use the XI2 model of input devices.

Port to any new platforms we need support for.

Make one set of Xinerama protocol routines for use by Xinerama and Xinerama-emulating code such as randr-1.2 and driver MergedFB code.

Make one set of logical screen to graphics device splitting code out of the Xinerama & Xdmx code bases.

Enable more input devices, in particular speech recognition, by allowing events to specify keysyms. It can be very difficult to convert dictation to keystrokes; it is much easier to transmit unicode directly to the application.

Driver projects

evdev: the evdev driver currently ignores joysticks altogether. It could be extended to work against such devices and auto-setup itself accordingly.

evdev: evdev touchscreen support is still subpar to evtouch. One missing feature is a right-click emulation on long presses. This would be a quite trivial project.

synaptics: coasting is a on/off state toggle. should be momentum-based instead