The new year has got me thinking of how much I have learnt so far about open source and GJS. Usually, contributing to an open source project for the first time is like stepping into the unknown- not knowing how the community will welcome you, how helpful the community members will be or if the skills you have are good enough for a start. In this blog post I will be talking about how my journey has been which might be useful to you thinking of contributing to the GJS debugger.
Some months ago, I submitted an initial application for the May 2020 round of the outreachy internships not knowing exactly if I was ready for the journey ahead. Unfortunately I didn’t get through to the contributions phase but the little experience I had from going through the lists of organisations that participated in previous rounds and checking out some of their repositories helped me become more familiar with open source contribution.
When the contributions phase for the December 2020 – March 2021 round started, so much confusion set in. Which Organisation should I choose, Why should I choose it and what strategy am I to use to get selected were the questions I kept asking myself. Sooner than later, I finally decided to choose something that in my opinion was not only challenging but will make me feel like part of something great. Due to the fact that I developed a special relationship with JavaScript mainly because it is the first language that helped me understand what programming meant deeply, I chose the GJS project and another project which required JavaScript. I finally put all of my eggs in the GJS basket when I realized that it was a developer tool and because of how quickly my mentor and other community members helped me out when I got stuck. This experience alone made me understand that the community is open to everyone. You just need to be willing to put in the time and be open enough to ask questions.
The GJS community is part of the GNOME community so it is more appropriate to mention GJS with GNOME. GJS is GNOME’s very own JavaScript binding built on the SpiderMonkey JavaScript engine (visit this link to know more https://mozilla-spidermonkey.github.io/) and my project involves working on the debugger (A debugger is a computer program that allows you to uncover and diagnose problems in other computer programs.) to improve it’s debugging experience. For clarity’s sake, GNOME is an easy to use graphical user interface and a set of computer desktop applications for Unix-based operating systems which include Gedit (text editor), builder (IDE), polari (chat application), just to mention a few. If you install a Linux distribution like Ubuntu or Fedora, then what you see on your desktop is GNOME (see https://www.gnome.org/gnome-3/). For more information about GNOME visit it’s wikipedia page at https://en.wikipedia.org/wiki/GNOME.
During the last couple of weeks, I have learnt a lot from better coding practices to new terms such as stack frame, backtrace and bindings. When I started contributing to this project, drawing a line between a developer using the tool and a developer developing it was confusing. This is partly because I only started using it when I started contributing to it. Now I clearly understand why user acceptance testing is very important in developing any application. There are so many things a user can see that the developer of an application will not see. To anyone you who plans on contributing to GJS or any other project, I strongly suggest you test it and try to understand it as a normal user would so you can clearly see some modifications that need to be made before the lines of code steal some of the gifts an end user has from you.
From all that has been said, here are key points to note as a new contributor to the GJS project
- The project does seem more challenging than it really is in the beginning. It is generally a good practice to give yourself some room to try and fail so that you can then be able to ask questions from the errors that you get.
- Again, it is good to test the project as a normal user so it helps give you ideas on possible modifications that can be made without letting the fear of how challenging it might be to achieve them limit you. Users are free minded and are often only concerned with something doing what they want it to do and not how it was made to do that.