## Freedesktop.org Possible Projects Page It is often difficult to see if there are projects that you might be interested in contributing to. This page attempts to help this problem for you. * Project - a name for a project * Type - type of project: design, code, web or documentation * Difficulty - rough guess at the difficulty of the project - easy, moderate, difficult * Size - how much work is involved to complete the project - small, medium, large * Comp. - how far along the (sub)project is estimatated to be * Contact - who to contact to get guidance on how to proceed. That person would like to get the project completed, but needs help in some form. Please make appropriate changes here yourself. General comments should go to appropriate mailing lists. For projects that are not underway, discussions are vital, as rough consensus is vital for community acceptance, and for discussion of technical alternatives. ## Freedesktop.org X Window System Related Projects New people interested in working on the X Window System or related desktop technologies have often found it difficult to find a manageable size project to undertake, or even understand where to go to get guidance. The X distribution in particular when seen from outside has been very intimidating due to its size, even though it is highly modular, and often/usually well designed. The recent work to modularize the distribution is helping. The list below breaks down some of the larger projects underway (or contemplated) into more manageable pieces among which you may find something that sparks your interests, matches your talents, or possibly that your organization or company feels it can't live without. I hope this list will also help you better understand where work is now. You are encouraged to choose one or more of these projects and wade in; you can help X to make much more rapid progress by your contribution. These are projects that various people are considering; please feel free to send along your suggestions of additions to this list. Please do not presume there is any ordering of importance to the tasks below; this is just a first cut at possible projects. ## Projects Underway ### Render Extension Render brings anti-aliased alpha blended text and graphics to the X Window System. The Render extension, already implemented and deployed, needs completion in a number of areas. This was held up by the urgency of getting AA text deployed, and a difficult numerical problem with the formulation of trapezoids that would have required very high precision arithmetic to implement (which would have been big and slow). The Render extension is discussed on the [[xorg@lists.freedesktop.org mailing list|http://lists.freedesktop.org/mailman/listinfo/xorg]]. It is nearly complete, with the major remaining issues being documentation and test suite. If interested in any of these projects, contact [[KeithPackard|KeithPackard]]. [[!table header="no" class="mointable" data=""" **Project** | **Type** | **Description** | **Diff / Size** | **Comp.** Gamma | design / code | Render needs design and implementation of gamma correction functionality | Mod. / Small | 0% Render Library Spec | doc | Write specification of the Render Extension C library binding | Easy / Small | 0% Render Wire Encoding Spec | doc | Write wire encoding specification from the C implementation | Easy / Small | 0% DDX work | code | Implement Render acceleration in various drivers (DDX's). In fact, while we are doing prototyping in the kdrive framework, we expect much of this will come out in the wash in a OpenGL based ddx. | Mod. / Mod. | 20% Test Suite | code | Implement test suite for Render. This is important both for testing and performance. x11perf also needs tests for each new primitive. The real problem implementing render acceleration is the lack of a performance and compliance test suite. Driver writers find it difficult to implement things that they don't have easy tests for. As for compliance, there is a problem. Pretty much no hardware is going to be able to do the "precise" rendering, so correctness tests may be more or less visual when render is used in imprecise mode. That is, compare a rendered image with a reference to make sure they are subjectively the same, or within the specification's tolerances (if we succeed in quantifying imprecise mode) | Mod. / Mod | 0% """]] ### Fontconfig Fontconfig is a (non-X dependent) library used for font discovery, name substitution, etc. While mostly complete, there are a few remaining projects left on its [[Fontconfig To Do List|Software/fontconfig/ToDo]]. ### Xft Xft is a library used for anti-aliased font rendering that does not use the old X core fonts, using the [[Freetype|Software/FreeType]] font rendering library. While mostly complete, there are a few remaining projects left on its [[Xft To Do List|Software/XftToDo]]. ### RandR The X Resize, Rotate and Refresh Rate extension has a few details left. RandR provides facilities for resize, rotation, and refresh rate changing of X screens. This is needed for good support on laptops, for migration of applications, and for dynamic changes of depths. A version without rotation support is in XFree86; kdrive has full support. We hope/expect that only upward compatible changes, if any, will be needed from here on out, but there is insufficient implementation experience to claim that incompatible change would never occur. In particular: [[!table header="no" class="mointable" data=""" **Project** | **Type** | **Description** | **Diff / Size** | **Contact** | **Comp.** RandR doc | doc | The RandR wire encoding spec needs to be derived from the C implementation. | easy / small | Main.[[JimGettys|JimGettys]] | 0% RandR ddx | code | RandR rotation is not implemented in some DDX's. The difficulty will depend on which DDX. | mod.? / small | Main.[[JimGettys|JimGettys]] | 30% RandR speed | code | Some DDX implementations could be made much faster if need be, so that shadow frame buffers aren't necessarily always in use or in the graphics fast path. | mod.? / mod.? | Main.[[KeithPackard|KeithPackard]] | 0% """]] ### Cairo Cairo is a vector graphics library with cross-device output support. It targets a number of back ends, including the X Window System, Microsoft Windows, Postscript and others are planned. It is well underway and usable for many purposes already. There are many [[fun projects left to do|http://cairographics.org/todo]] for those with the interest and talents. ### DRI - Direct Rendering Infrastructure and Mesa If working on display hardware, or working on a free OpenGL 3D graphics library is your cup of tea, there is always fun work to be done on [[DRI and Mesa|Software/dri]]. ### vaAPI - Video Acceleration API Proposal for a hardware agnostic interface specification that allows video codec developers to write to a standard set of APIs and supports any common video compression format. The API does not constrain how the actual decode is implemented... decode may be done by CPU, by specialized video decode engines, or by 3D engines. Currently looking for feedback on the specification; see the [[vaAPI|Software/vaapi]] page for the full spec. ### X Protocol Libraries Since the inception of the X Window System, Xlib was the production X Window System protocol and utility library. An older list of Xlib [[projects|Software/XlibToDoList]] is here. However, a newer project known as [[XCB|http://xcb.freedesktop.org]] is well on the way to replacing Xlib, and most Xlib development is currently being done in the context of XCB. There's a great deal of interesting work remaining with XCB, and folks are encouraged to join the effort. ### Convert Documentation Most of the base documentation for the X Window System is written in troff, and occasionally other text formatting systems. Most open source systems are moving to [[Docbook|http://freshmeat.net/projects/docbook/]] as a modern unifying representation from which to generate manual pages, manuals, books and other documentation in whatever presentation form is most convenient, from man, to postscript, to html. The [[doclifter|http://www.catb.org/~esr/doclifter/]] program makes it feasible to convert most troff documents with little or no manual editing required for most documents. Other formats may require other tools. This is probably done best in collaboration with the maintainer of the particular module; the effort is not much on a per document basis for the mechanical part of the translation, but proofreading is a significant effort, and there is a lot of documentation to convert over all. ### Translation Both program strings and documentation need translation into your favorite language. ### Modularization and Autotooling The X Window System has been split into modular components and converted from Imake to autoconf. The first release under this new system was done in 2005 as [[X11R7|X11R7]].0 but more work is needed to finish the conversion. Documentation for each module such as AUTHORS, [[ChangeLog|ChangeLog]], and COPYING files need to be created and pre-7.0 information incorporated. Linux and Solaris on x86/x64 were fully ported for the 7.0 release, and BSD & Darwin mostly ported, but work needs to be done to ensure the modules build and run on other OS'es/platforms. [[The X.Org Modular Developers Guide|http://wiki.x.org/wiki/ModularDevelopersGuide]] has more info. ### Synchronization The X Window System has had for years facilities for very tight synchronization of multimedia or other X clients using the XSync extension; but the Linux and *BSD implementations have only had real-time counters defined. Linux device driver work, in concert with small amounts of glue in the X implementation would extend this to audio devices and vertical retrace. Alan Cox started on driver framework for Linux during the summer of 2003, and Robert Love is planning to continue this work. [[JimGettys|JimGettys]] was one of the original designers of XSync and is happy to consult on this project. The driver framework should not be difficult for an experienced kernel driver person, and minor changes in appropriate drivers will need to be made. ### Color Free desktops need good end to end color management, from input devices, to calibration of screens, to printing. [[JimGettys|JimGettys]] is trying to coalesce work in this area. The facilities in Xlib for color management are at best inadequate, and at worse, completely useless. We know the existing CMS is essentially unused by applications, as it was broken for many months in CVS without anyone noticing. [[[OpenIcc|OpenIcc]]] is a list dedicated to discussing specs and configuration issues. ### Oyranos [[Oyranos|http://www.oyranos.org]] is a Colour Management System (CMS) on operating system level. It allows applications and users to match predictably input device colours to output device colours. To do so in a consistent manner, applications and workflows need to support the Oyranos CMS. Oyranos is based one the well established ICC standard and various other specifications. System wide settings in Oyranos shall enshure consistency in a portable fashion. Oyranos will provide in the future a advanced Colour Matching Module (CMM) framework. Users can then transparently select a desired colour engine. Development plans and open tasks can be found [[here|http://www.oyranos.org/wiki/index.php?title=Oyranos#Development]]. contact: [[KaiUweBehrmann|KaiUweBehrmann]] ### Cut and Paste The [[http://www.x.org/wiki/CutAndPaste|http://www.x.org/wiki/CutAndPaste]] project is intended to tackle and resolve the 20-year-old issues inherent in X Cut and Paste. It is not yet particularly underway, but hopes to be soon. The email list at [[cut-and-paste@lists.freedesktop.org|mailto:cut-and-paste@lists.freedesktop.org]] is one venue for this work. This is a [[BartMassey|BartMassey]] inspiration, but he hasn't had much time to work on it since announcing it some time ago. ## Projects Not Yet Underway ## Infrastructure Projects Additions to the Freedesktop.org infrastructure to enhance collaboration are always welcome, so long as you intend to maintain the facilities. The sitewranglers at freedesktop.org mailing list is used for discussions. [[!table header="no" class="mointable" data=""" **Project** | **Type** | **Description** | **Diff / Size** | **Comp.** Tinderbox | web | Freedesktop.org has a very similar problem to Mozilla: our software is very cross platform, and it is not uncommon that people check in code that can break a build on a system they do not have access to. The [[tinderbox|Software/TinderboxWiki]] allows continuous testing of builds on various platforms. At this point we need more machines on different platforms running the tinderbox script.. | easy / easy | 80% News | web | Freedesktop needs an easy way to post news, and that should probably be gatewayed to a mailing list. | easy / easy | 0% CIA | web | Installing a IRC spy bot watching appropriate CVS repositories and reporting the check ins to appropriate IRC channels. | easy / easy | 100% """]] -- Main.[[JimGettys|JimGettys]] - 12 Feb 2004