My Project at GNOME

Hello everyone! This week’s blog will be focusing on the GNOME organization. “How can you contribute to GNOME”, “How can we make GNOME asynchronous?” or let’s start with the basic one “What is GNOME ?”.

What is GNOME?

GNOME is a free and open-source desktop environment for Unix-like operating systems. I find the workflow of GNOME very intuitive. It is smart and stable. Dynamic workspaces are one of the features that make using GNOME a great environment to me. We can easily view all the applications running on a workspace simply by pressing the Super key and We cannot forget that it’s easily extensible. It has a lot of extensions.

What is asynchronous? The idea of asynchronous operations is to execute a task “in the background” without the user having to wait for the task to finish. In C, We can only use callbacks to implement asynchronous operations whereas other programming languages like JavaScript and Python can implement such operations automatically using async/await keywords.

GNOME platform libraries use C and also provide a bridge from the platform libraries written in C, to all the other programming languages such as Python and JavaScript with the help of GObject-Introspection software. In my project, I learned about the working of callable statements, the use of GAsyncResultCallback arguments, how to represent the conditions in an abstract syntax tree(AST) manner and also about the annotations we use to add finish-FUNC and async-FUNC in the GObject-introspection.

Asynchronous JavaScript: Promise, Async/Await

GNOME 3 is the default desktop environment on many major Linux distributions including Fedora, Debian, Ubuntu, Red Hat Enterprise Linux, as well as Solaris, a major Unix operating system. This is the main reason why the issue to make “GNOME Asynchronous” is very much persistent all over the world. Using asynchronous JavaScript (such as callbacks, promises, and async/await), you can perform long network requests without blocking the main thread. It will make all GNOME’s asynchronous operations work automatically and effortlessly with async/await in programming languages( like python/JavaScript/Vala) that support them, instead of forcing people to work with callbacks.

All passionate applicants can contribute to GNOME!

The community appreciates everyone who is passionate and can contribute to its project through the project repository or contribution page. All the projects use an issue tracker to keep information about bugs to fix, project features to implement, documentation to write, and many more. You can follow the tutorial and also create an issue that you feel should be modified. Applicants can look for newcomer-friendly issues to use for their first contributions by looking for the following issue tags in the project issue tracker: “4. Newcomers”.

My Experience during the Contribution Period!

When I first started contributing to this project during the contribution period of Outreachy, I was perplexed. The codebase seemed very intimidating initially, So I thought of completing the tutorials before making an actual contribution to get the basic knowledge about GNOME apps. In the process of building an abstract GNOME app, I found some errors in the tutorial, which gave me a kickstart. I created issues corresponding to those errors and started solving those. Soon there was a list of issues I was working on. These included fixing broken links, adding dependencies, modifying documentation and adding correct screenshots – corresponding to the steps mentioned.

Then, I took my mentor’s suggestion to choose some actual programming issues to work on which includes Gio.ListStore.insert_sorted’s compare_func and GObject properties with GByteArray type. My experience with JavaScript, Git and C helped me to understand the code and to tackle the issue.

So if you are reading this blog and thinking about applying to Outreachy in the following December or May cohort, you’ve got this! Remember to choose a project of your interest with the known tech stack and not be intimidated by the codebase, however large it may seem to be. Join the community channel to clear your doubts with the maintainers. Read the documentation to understand the project entirely. And lastly, use your skills wisely to work on issues.

One thought on “My Project at GNOME

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website with
Get started
%d bloggers like this: