GNOME is a wonderful desktop environment! Okay, KDE fans, no offense meant here! I use both GNOME and KDE. But I tend to use GNOME more often, owing to its simplistic look and feel. KDE obviously offers more eyecandy and is easily tweakable. However, I am not a fan of heavy eye candy or animations, and hence I like GNOME more ☺

Contributing to GNOME

Like with any open source projects, GNOME has mailing lists and IRC channels. But GNOME is a very broad foundation, and hence they have a lot of lists and channels. The difficult part is to find what project you would love to contribute. You can drop by one of the channels and start speaking to somebody to choose one project. You have a lot of options based on the language in which the software is built on, like To Do which is C, or maybe Polari the IRC client, which is in JavaScript.

Setting up the development env

Deciding to contribute to GNOME, is the most difficult step. After that, if you ask me, next difficult thing is to setup the environment! GNOME has a created a framework JHBuild to automate the build and dependency resolution for the sources. All you need to do is use this tool to install all dependencies. Once you configure what module to build, simply running jhbuild build will automate the build process. Latest version of Fedora is recommended for the development, since most of the full time developers use it.

Dealing with network proxy

If you are in a university, most probably you will have to deal with this situation. Most of the repositories use a git:// protocol to download the source. Unfortunately, this wont work behind a proxy.

JHBuild has a configuration option repo which can be used to override the default repository URLs for individual projects. repo is a python dictionary. So you need the exact key for overriding a specific URL from git:// to http or https, depending on the specific project. For example, GNOME Git offers https while FreeDesktop only offers http.

The specific key for the corresponding project URL can be obtained from the modulesets folder in the jhbuild source. Its an XML file which you need to search for the <repository> tag. For example, my jhbuildrc contains the following entries:

repos['git.gnome.org'] = 'https://git.gnome.org/browse/'
repos['git.freedesktop.org'] = 'http://anongit.freedesktop.org/git/'
repos['wayland.freedesktop.org'] = 'http://anongit.freedesktop.org/git/wayland'
repos['gstreamer.freedesktop.org'] = 'http://anongit.freedesktop.org/git/gstreamer'
repos['pulseaudio.freedesktop.org'] = 'http://anongit.freedesktop.org/git/pulseaudio'
repos['telepathy.freedesktop.org'] = 'http://anongit.freedesktop.org/git/telepathy'
repos['modemmanager.freedesktop.org'] = 'http://anongit.freedesktop.org/git/ModemManager'
repos['git.savannah.nongnu.org'] = 'http://git.savannah.gnu.org/r/'
repos['github.com'] = 'https://github.com/'

Dealing git submodules behind proxy.

One more issue you will deal with, when under proxy is that for repositories that contain submodules, they still try to access the git:// protocol. To work around this problem, drop to shell when jhbuild gives up (option 4), and then edit .git/config and change the URL for the submodule to http or https.

You're all set!

Thats it. Now its your turn to do the magic and make GNOME better!