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.
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.
A week into the internship, I felt like giving up. In an attempt to regain my motivation I reached out to my mentor Philip Chimento, to find out about his experience. Surprisingly, he faced challenges too. My journey as a programmer has often been met with me trying to find out if I was meant to be on this path or if I had to do something else(obviously because I found myself taking so much time to grasp some concepts). Three weeks spent as an Outreachy intern @GNOME has thought me that everyone, experienced or not struggles. Today I will be sharing a challenge I faced.
Here are a few points that helped me overcome this challenge as well as others I have encountered in the past.
- Consistency. Consistency in software development(programming in particular) is a habit you cannot do without. The more consistent you are, the more familiar things get and the easier they become too.
- Company. The phrase “you are the company you keep” really does apply in all aspects of life. Surrounding yourself with people who can motivate you to work harder is a plus. When you are tired or bored, you can find them all motivated and high spirited. This can encourage you to keep trying.
- Mentor-ship. The opensource community is so big today because so many people have adopted the habit of giving back. With the opportunity given by Outreachy, some of us are chanced to be mentored by people who serve as a great motivation. Finding a mentor who is willing to sacrifice their time to help you get better is one of the best ways of coping with your challenges, getting over them and finding long lasting solutions.
- Don’t be shy. Most people have inferiority complex when they feel like they do not know something and are often scared of asking “stupid” questions. The truth is there is no stupid question especially when one is eager to learn. The best approach is usually to come forward with attempted solutions so that the person helping you out should know that you tried hard before not succeeding. That way they will feel more comfortable offering their help knowing that their efforts are not going to waste.
- Usually, when you are stuck, the best thing to do is change your activity- maybe go for a walk or take a nap. When you get back to looking the devil in the eye(I call my challenges devils), there will be a new approach you can use to win.
- Research. The internet is a world of information which if used rightly can help us solve so many problems. If the task you have to do is not so urgent, spending a few hours doing some research online usually puts you on the right path.
These steps just help you reach the milestones and it is necessary to remember that there will always be challenges. The way forward is to understand how to get pass them rather than stay stuck and stay discouraged.