While running my crowd funding campaigns: Improve OpenGL support for the Linux graphics drivers. One common question I'm asked is "How can I start contributing to Mesa?". So I've decided to write a post with some information to get any budding Mesa developer on their way to contributing their first patch.

If you really want to contribute to Mesa you should at least have some C\C++ experience, if you don't buy yourself a book and go for it. Knowledge of OpenGL would also obviously be useful The OpenGL SuperBible is generally the most recommended book on OpenGL. The guys from SIGGRAPH did a great presentation "An Introduction to OpenGL Programming" see below.
Some knowledge of git will also be a must when it comes time to submitting your patches.

Ok now that we have the basics covered. The first thing I would recommend doing is signing up to the mesa-dev mailing list. Being a member on this list gives you a good insight into how the project is run and you get to see the code as its developed. You will get to see the patches that the developers submit for review. Things might not make much sense at first but it will start to come together over time.

Now that you are part of the dev list you should also get yourself a copy of the Mesa source: http://cgit.freedesktop.org/mesa/mesa/ there is some basic developer info in the docs folder devinfo.html (provides some tips to new developers) and sourcetree.html (has an excellent overview of the source code directory structures) are two files I found helpful.

Now that you have the source what do you do with it. Well your in luck the Mesa dev's have just setup a new wiki page with tasks for Newbies: http://wiki.freedesktop.org/dri/NewbieProjects/
So pick a task and start browsing the source code, you might also what to post to the Mesa mailing list to see if a task has already been taken before starting work on it to avoid doubling up work.

For more of an introduction into developing for the Mesa project also I wrote a partly finished intro to mesa as part of my last campaign: Introduction to Mesa through example

There is also a forum thread on Phoronix that was started recently where you can find some tips on getting started: How to get involved with open source Radeon driver development (Newbie Friendly)

Finally if you just want to help Mesa development move along faster, or are not ready to dive into Mesa development just yet you could try writing some Piglit tests for an extension that hasn't been implemented yet. You can see the list of unimplemented extensions here: http://cgit.freedesktop.org/mesa/mesa/tree/docs/GL3.txt
And the Piglit mailing list is here: http://lists.freedesktop.org/mailman/listinfo/piglit

The goal of Piglit is to help improve the quality of open source OpenGL drivers by providing developers with a simple means to perform regression tests. Having these tests available while developing the extension is really helpful for making sure things are being implemented correctly. In his recent Mesa update presentation Ian Romanick from Intel noted that piglit tests accounted for about 50% of development time which is about what I found while implementing the extension from my last project. You can see Ian's presentation here: http://www.x.org/videos/XDC2013/ian_romanick_mesa_update.avi

So good luck I hope you have found this information useful, and please leave any feedback you have in the comments section below.

Update: The Mesa website with additional information can be found here: www.mesa3d.org