This page has general information on X development, including how to get started. A common misconception is that developers need to understand all of X to get started. This is not true, and even of the "core" developers, only few actually know all the pieces that put X together. The best way to get started is to simply pick a problem and give it a try. There is also a new book in the Amazon Kindle format, [[http://www.amazon.com/dp/B007QJKOGS/ref=rdr_ext_sb_ti_hist_1|Hands-on Projects for the Linux Graphics Subsystem]]. This includes a number of original projects on the X.Org implementation of the Linux graphics subsystem. The book is aimed for instructors, students and any other OS internals enthusiasts. == Documentation == * [[Development/Documentation/Glossary|Glossary]]: Various terms used in X, and what they mean. * [[ModularDevelopersGuide|Modular Developers Guide]]: For builders and developers working on the modular X.Org source tree * [[Development/Documentation/SubmittingPatches|Submitting patches]]: How to submit a patch to an Xorg project. * [[Development/Documentation/ReleaseHOWTO|Making a release]]: How to make an individual module release. * [[Development/Documentation/WritingDocumentation|Writing documentation]]: How to document your work in X. * [[Development/Documentation/DocBookConversion|Documentation being converted to DocBook]]: What needs to be converted and what is being converted * [[Development/Documentation/XserverSourceLayout|X server source layout]]: A map to the different directories in the X server source * [[Development/Documentation/DevPrivates|The devPrivates system]]: All about the private storage system in the server. * [[Development/Documentation/WrappingFunctions|Wrapping functions]]: How to add hooks to functions in the server. * [[Development/Documentation/GrabProcessing|Grab processing]]: How input grabs are dealt with in the server. * [[Development/Documentation/CursorHandling|Cursor handling]]: Introduction into DIX cursor handling. * [[Development/Documentation/InputEventProcessing|Input event processing]]: How input events are dealt with in the server. * [[Development/Documentation/Security|Security]]: How to make use of the security facilities within X. * [[Development/Documentation/Performance|Performance]]: A fairly detailed document explaining what our performance problems actually are, and things that aren't performance problems at all. * [[Development/Documentation/XorgInputHOWTO|Xorg input driver HOWTO]]: How to write an input driver for X.Org. * [[Development/Documentation/HowVideoCardsWork|How video cards work]]: A conceptual overview. * [[Development/Documentation/XorgVideoHOWTO|Xorg video driver HOWTO]]: How to write a basic video driver for X.Org. * [[Development/Documentation/KdriveDrivers|Kdrive Drivers]]: notes for making new kdrive video drivers * [[http://dri.freedesktop.org/wiki/|Dri Wiki]]: Information about using the Direct Rendering Infrastructure (DRI) with X. * [[Development/Documentation/Multiseat|Multiseat]]: Various informations about how to obtain and develop such model. * [[Development/Documentation/Obsolescence|Deprecated and obsolete]]: Notes on deprecated and obsolete extensions and server-side stuff. * [[XorgDeveloperDocumentation|More Xorg Documentation]]: Some pointers from deep in the Wiki. This page should possibly be moved into Development/Documentation. * [[Development/Documentation/PointerAcceleration|Pointer acceleration]]: information on the pointer accel mechanism. ==== Tools ==== * [[Development/Documentation/git|Using git]]: Information on using git. * [[Development/Documentation/ServerDebugging|Server debugging]]: How to debug the X server with gdb. * [[Development/Documentation/ServerProfiling|Server profiling]]: How to profile the X server. * [[Development/Documentation/UsingCtags|Using ctags to find functions]]: Some tips to find a function in vim. * [[Development/Documentation/UsingEclipse|Using Eclipse]]: Some tips to use Eclipse to develop X.Org. ==== Various Projects ==== * PciReworkHowto: How to fix a video driver to use libpciaccess * VgaArbiter: Routing VGA instructions correctly. * [[Development/Xv2|Xv2, Render API]]: a long rambling discussion about giving Pictures GCs, and moving Xv to Render + RandR. * [[Development/X12|X12]]: a list of things we'd fix if we ever get around to a new version of the core X protocol == Helping out == * [[Development/ContributionHOWTO|ContributionHOWTO]]: How to get started contributing bug reports, patches, fixes, or even entire drivers. * [[ToDo]]: Things that need doing. * [[Development/Janitor|Janitor]] Xorg Janitor project page