I can’t believe three months went by so fast. It’s the last week of my Outreachy GNOME internship, and I am very pleased. The experience was amazing and I’ll love to summarize all that I felt and learned in the paragraphs that follow.
It is said that the difference between people who make the most out of life and those who don’t is that the former feel the fear and do it anyway. I strongly agree. When I first looked at the timeline of this internship, I was scared of not being able to complete the work. For the first weeks, I let this fear consume me. I always thought other contributors were smarter and wondered how they managed to work as fast as they did. I was scared of asking “stupid questions” and I was scared of expressing myself during our bi-weekly check-ins. One good day, I decided to face my fears and get the job done. I wanted to be an example to the girls in my community and to the people who knew me. I reminded myself that I deserved to be doing this internship and there were many people who wished they were in my shoes. Furthermore, I learned that time and consistency are major players in the game of growth, and that I needed to use those months to the best of my ability. I believe this internship has shaped my life and I will always put in my best no matter the outcome.
One can choose to go back toward safety or forward toward growth. Growth must be chosen again and again; fear must be overcome again and againMaslow
It would’ve been more challenging without assistance from my mentor Philip Chimento who was very supportive along the way. He always answered the questions I asked as soon as possible and took out time to give detailed explanations. He encouraged me to stay positive and optimistic at all times, and he gave me space and time to experiment with the project. Furthermore, he helped in setting up informal career chats with people who had experience contributing to open source (amazing experience). He was a great mentor and has taught me how to share.
This internship has helped build my confidence. Now I can and will contribute freely to open source projects that spike my interest. I had the opportunity of reviewing some code (written by Philip) and I realized it was simple and easy to understand. What was different was the way the code was structured to improve on readability, maintainability and scalability. This made me realize that I had all I needed to keep going.
Communication has never been my strong point, but this internship experience has changed that completely. I speak and write better. I want to use this opportunity to thank Outreachy for adding these blogs to the program. Sharing my experiences with you guys has been wonderful. I am also a better listener. My kids are going to love me for sure 🙂
Talking of hard technical skills, so much has been added to my basket:
- and I am now a code reviewer
So far, I have worked on three issues. Adding the full option to the back-trace command, displaying the current line of source and started the implementation of the verbose output.
1. Adding the “full” option to the back-trace command
Basically, this option helps developers print details about the variables in a given stack frame. More information on this command is found here: https://www.mantohnasah.com/blog/my-open-source-journey/my-journey-to-gjs-backtrace-full-option/
2. Displaying the current line of the source code while printing the current frame.
The first change I made was to print the source code on the line where the debugger was stopped. Before this, you could only see the frame number, the file name, and the line number. This addition helps users figure out where they are in the source without having to keep the file open and cross-reference the line numbers to their editors. Find this here: https://gitlab.gnome.org/GNOME/gjs/-/commit/b19e75065ca4b6352af140a3fa2af018b4028083
Going further, since we were able to load the source code, it was also possible to implement a list command which will help in printing lines from a source file. The current implementation prints five lines before and five lines after the line chosen to give more meaning to this line. The code for this functionality is found here:
Lastly, I added a set color option to the set command to let users choose if they wish to be printing with color or not. Right now, you can choose to make something bold. In the future, we will add more colors. See details of this contribution here: https://gitlab.gnome.org/GNOME/gjs/-/commit/d352aa9cd1849119d9b95bd64c0d66a6857a340a
3. Verbose Object Print Output
Currently, the interactive prompt prints an object like this [object object]. To work around this, most people resort to using JSON.stringify(theObject) (which is usually a pain to remember and type) when they want information about the object. [object object] is the default output of the toString() method when called on a plain object, but most interactive environments (like Node.js and the browser console) give you more information than just [object object]. With inspiration from Node.js and the need to improve the user experience, it is good to have a pretty print function that prints an object with more information about its property names and values. The contribution to this effect can be found here: https://gitlab.gnome.org/Nasah-Kuma/gjs/-/commit/122c02ffadb6b43d68f5e68d22d009543b98c909#0383dbd3f0cc84e0cf5ff5fdf9c685903addae56 in the modules/script/_bootstrap/default.js
I am currently searching for jobs and internships while trying to complete the pretty print functionality. I will always find the time to contribute to GJS, as it is a project I have grown to love.
This internship has shown me how much I can do to improve in the field of software development. GJS is just one of many projects that need maintenance and community support. If you are reading this post and wondering if you should contribute to open source, you should since it will help you improve too. To contribute to GJS, follow the guide here : https://gitlab.gnome.org/GNOME/gjs/-/blob/master/CONTRIBUTING.md and checkout the issues. If you are new to open source, it’s best to take issues tagged newcomer. If you feel that’s not such a good place to start, you can always suggest and create your own issues using the issue tracker.
Thanks for reading!