Find tasks in a GNOME project
To find a task simply look at the "Contribute" section in every app wiki page where it will be explained how to find them for that project. A list of projects to contribute are in the ChooseProject page.
You don't need to announce you are working on the task, once you have uploaded the patch it's clear you committed to solve it with code and the maintainer will review it and propose new approach if necessary.
Tools and tricks for solving tasks in a GNOME project
Now that you can build and run the project successfully, it is time to look into solving a newcomer task. Before looking into the problem, start by installing an IDE, for example the Builder IDE.
1. Reproduce the issue
A good first step to solving any bug is to try to reproduce it. The newcomer bug should contain a description of the issue or steps on how to reproduce it.
2. Identify the problematic objects
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. Other useful tools for GTK+3 development include gtk3-demo, gtk3-icon-browser and gtk3-widget-factory (either included with gtk3 or provided as separate package fx named "gtk-3-examples").
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.
3. Understand what happens in the code
Once you have located the object's class, you can try to read the code. Here's a few recommendation to assist you:
Install DevHelp or search the GNOME Developer Center online to look up classes and functions you come across. The Developer Center contains the API for most GNOME libraries and tutorials on developing GNOME apps. 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 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.
Lastly, you are always welcome to ask in #gnome-hackers or #gtk+ on IRC if the documentation is unclear. The project channel and the project mentor can assist you in solving your task when you need it.
4. Change the code
Once you have identified the problem, you can start thinking of how to solve it. When making changes there are a few guidelines:
- Don't do unrelated changes of the bug you are trying to fix, even style changes.
- Follow the coding style used in the code you are working on. Just take a look at the surrounding code and try to use the same format, if the project does not have an explicit "coding style" document.
- Make sure the patch does not contain trailing whitespace and spurious empty lines. You can use git diff --check for this.
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.
GTK+ Widget Factory
GTK+ Widget Factory is an example application demonstrating the majority of different widgets which can be created with GTK+. It can be opened from the terminal by typing gtk3-widget-factory.
Once you have solved the task, go to create a commit and submit a patch.