The rule of thumb
To begin, first you need to know where to search for clues. You don't need to do this now, but read carefully! If you run into some code or something in the bug report you don't understand, then do the following:
1. Search the GNOME Developer Center.
Here you can find GNOME APIs and you can look up any function or class for GTK+, Glib and other GNOME libraries.
2. Find documentation in your project's homepage
Each GNOME project has it's own homepage with information and links to ressources that can help you understand the source code.
If you haven't checked out your application's homepage, go back to the Choose Project step and do it!
Pick a Task
I'm Ready! Where do I start?
Each newcomer application in GNOME has hand-picked some bugs which are newcomer-friendly.
1. Choose a bug from the list.
For example a bug you think sounds interesting. You don't need to announce what you have chosen, this will be done when we later submit a patch.
2. Carefully read the bug title, the discussion and the attachments (if any).
The bug was most likely reported by a user. Part of your task in contributing is to work out what the bug is about! Use the documentation to look up words unfamiliar to you. If you are still unsure, then comment and ask for more information.
Solve the Task
Time to put on the engineering hat.
Let's get this bug fixed with the Builder IDE! While you're working, here's some good tips on how to solve GNOME bugs.
1. Identify the problematic object(s)
All GNOME apps are object-oriented. Your task will typically require you to fix the behavior of one or more objects.
GTK+ Inspector lets you point and click to inspect any GTK+ object visible in the interface. Inspection can help you find the object's class or change its margin and other properties.
For all newcomer apps, the code is located inside the /src/ folder of your project. UI files are usually located inside the /data/ folder.
The command git grep can help you to locate the object's class in the project code. Open a terminal and change directory to the project folder. Then you can fx search for Gtk.label by typing:
git grep "Gtk.Label"
The output is a list of files containing the string Gtk.Label.
2. Understand what happens in the code
Once you have located the object's class, you can try to read the code. You can use the documentation to look up any functions you come across, or get any questions you have answered. GTK also have an introductory tutorial which can introduce you to useful classes and concepts.
git grep can be a useful terminal command to look for other places in the project's code where the class or function was used. You can even download the source code of other GNOME apps and read their code to find out how they approached the problem.
If the problem was introduced by earlier changes in the code, you can search through the commits via the project's git repository found in the GNOME Git Repository list.
Other useful tools
GTK+ also includes the following developer tools that may be helpful for you:
GTK+ Demo demonstrates different widgets and features of GTK+ and includes code examples of how they can be used. It can be opened from the terminal by typing gtk3-demo.
GTK+ Icon Browser
The GTK+ Icon Browser is a list of icons shipped with GTK+. It can be opened from the terminal by typing gtk3-icon-browser. You can use it to discover both names of normal or symbolic icons.