When I decided I wanted to assist the Gnome project, I spent some time trying to figure out how and where to contribute. I quickly found that it was sometimes overwhelming to try to pick a project and get started because there were so many subprojects out there. It was also often difficult to determine what exactly needed to be done. Even when I did find a project to work on, I found that I had a lot of background information that I would need to learn first. I thought it would be really cool to write a guide that would solve all these problems. But instead, I wrote this. Hopefully it is still helpful to some people who find themselves in the same position I was in.

Intended Audience/Design Goals

My main target audience is those who already know how to code. However, since it takes a while to become familiar with Gnome libraries and applications and because I am big on getting started on small projects early, the first part of this guide should not require any coding ability and should be useful to a larger group of people. Thus many could benefit from the first part of this guide and then go to to find other projects to work on that do not necessarily require any programming skills. However, the coding tutorials that come later will assume programming ability.

This guide is aimed primarily at those who want to work on projects that are part of Gnome, i.e. those that want to be Gnome developers. However, there is another large audience that can benefit from this tutorial, namely those who want to write their own applications using the Gnome libraries. There can be overlap between the two groups, but there is a large difference between them. The latter audience tends to not be as interested in joining a community or working with development versions of libraries. Thus there will be some parts of this guide that do not apply very well to them, such as information about the bugsquad or building Gnome from source code. I will try to point out the sections that this latter group would have less interest in so that they can concentrate on the tasks that concern them. Also, they would be more likely to use the higher level language bindings, such as C++ or Python, for the GTK and Gnome libraries. Prospective Gnome developers are more likely to concentrate on the C bindings since most Gnome applications currently use those, but they would also benefit from learning some of the other available bindings.

I do not want this guide to read as a textbook or a standard HOWTO. Those formats tend to consist entirely of technical information about how to do certain tasks. That will be the majority of what I cover; however, I want to also add editorial notes on how one can become part of the Gnome community, insert random advice, and point out projects in development that are worth keeping an eye on.