Your first mission!
Keep your hands warm and your head cold. You are about to make your first contribution! In GNOME we keep all tasks inside a bug tracker. You can imagine it a bit like a huge database of “to do” items. All of the bugs are open for anyone to try and solve!
Documentation
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. Browse the GNOME Developer Documentation.
Here you can find GNOME APIs as well as several tutorials to make applications using 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 resources 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!
3. Ask questions in the GNOME chatrooms (Matrix or IRC).
Our community is friendly and we are here to support you when you are in doubt! Ask away.Questions related to GTK in the gtk chatroom.
Question about the newcomer guide in the #newcomers chatroom.
Questions related to your project inside the your project’s chatroom (see Choose Project).
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.
3. Identify the problem.
There are several types of bugs.- If your bug contains reproduction steps, try to reproduce it.
- If your bug contains a description or a design, try to identify which part of the UI it concerns.
If someone else already submitted code to the bug recently, you can help by reviewing the code.
- If you are unsure what the problem is or run into trouble, comment on the bug to get advice.
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.
Lastly, you are always welcome to ask in #gnome-hackers or #gtk on IRC if the something is unclear. The project channel and the project mentor can assist you in solving your task when you need it.
3. 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
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.