bugseverywhere.png

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-header-icon.png 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:

developer-center.png

  • 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.

    Search Developer Center


app-page.png

  • 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!


  • 3. Ask questions in the GNOME chatrooms (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-header-icon.png Pick a Task

I'm Ready! Where do I start?

Each newcomer application in GNOME has hand-picked some bugs which are newcomer-friendly.

- See more options..


gnome-builder.png Builder (#gnome-builder) (Project complexity: Complex) - IDE for GNOME, written in C with parts in Python, C++ and Vala.
Code: https://git.gnome.org/browse/gnome-builder
Mentors: ChristianHergert (hergertme)


gnome-calendar.png Calendar (#gnome-calendar) (Project complexity: Medium)- Simple and beautiful calendar for GNOME, written in C.
Code: https://git.gnome.org/browse/gnome-calendar
Mentors: GeorgesNeto (feaneron), Isaque Galdino (isaque)


gnome-todo.png Todo (#gnome-todo) (Project complexity: Simple) - A simple and intuitive personal task manager for GNOME, written in C.
Code: https://git.gnome.org/browse/gnome-todo
Mentors: GeorgesNeto (feaneron)

Looking for a something different?

These projects doesn't follow these guidelines, but their mentors will help you

gimp.png GIMP (#gimp) (Project complexity: Complex) - GNU Image Manipulation Program is an advanced image editor written in C.
Code: https://git.gnome.org/browse/gimp
Mentors: Jehan Pages (Jehan)


gnome-nibbles.png Nibbles (#gnome-nibbles) (Project complexity: Simple) - game where the user controls a snake, written in Vala.
Code: https://git.gnome.org/browse/gnome-nibbles
Mentors: Iulian Radu (iulianradu)

  • 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.

find-bug-in-list.jpg


  • 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.

how-to-read-bugs.jpg


  • 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-a-task-header-icon.png 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.

gtk-inspector.png

  • 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.

BastianIlsø/Newcomers/SolveProject (last edited 2017-03-22 22:48:42 by AndreasNilsson)