This is a tale of a dream come true. This story starts way back in 2016. I was working as a software developer in one of the tech firms in Uganda at the time. I was not happy and had decided that I rather go back to school to pursue my Aeronautical Engineering career. I have always had a craving to contribute to open source but did not know where to start.

I kept reading people’s Github profiles in admiration of especially people that had repositories in the category of “Repositories they contribute to”. I wanted this on my profile too but did not know how to. I did not have many experienced developers in my circles atleast so this kind of information I did not get easily.

One day I gave a talk at a meetup dubbed Geek night kampala on the transition from continous integration to delivery where I met some ladies who requested me to teach them alittle more on the topic a request I welcomed. After getting to know these ladies one of them told me about Rails Girls Summer of Code and suggested that we team up with her and apply for the same. Well we did and got accepted. This was the beginning to a dream coming true. I quit my job just before summer could begin in preparation for the golden opportunity.

First : Rails Girls Summer of Code

My open source Journey began here. I was accepted with a friend of mine to work on a project called Qutebrowser. We were called team Echo from Uganda. Qutebrowser is a vim-like browser based on PYQT5. If you are a vim fanatic then you probably want to try it. The beauty about this browser is that you browse the web using commands. Any one ? I wanted to contribute to this project because I wanted something challenging to work on and a browser wasnt bad as it had alot of new things I wanted to learn.

RGSoC was a huge success and a very memorable experience for me as I opened my first pull request then. The mentor was very welcoming and answered every question we asked him. I learned so much working on this project than even the experience I had from work. By and large I got to know that debugging is a very important skill when working on such big code bases, got to learn alot of python as I had been working with .Net and got to meet good people in the RGSoC community.

Through RGSoC I was also able to get a diversity grant to attend and speak at pyconZA, an opportunity that I have cherished todate because the conference opened my mind to many ideas. I gave a talk on how to contribute to open source

Now : Ceph Outreachy Intern working on multilanguage RGW Testing

After RGSoC which was September 2016, I attempted to apply for Outreachy in the December 2016 round with Mozzilla. I did not get through but one secret is you always learn alot through the application process. I did not get in but learned a new programming language Golang that am using on my current project. To be honest I felt so frustrated not being accepted but I can not underestimate the skills I got in the whole process. I however also noted the mistakes I had done.My proposal was not as good.

I then decided to keep my open source fire alive because I had really longed to be an active contributor. I reached out to pypy mentors in December 2016 to guide me on contributing. I therefore continued contributing to pypy until Outreachy called for applications again for the March round. I will still open PRs to pypy.

I applied again for the May Outreachy round and made sure I did not repeat the past mistakes however I think also luck plays a role in these kinda things because the Organisation you never expect actually accepts you. This round I applied to three companies. May 4th has been my most memorable day this year so far because on this day I signed a book contract with a publisher I have always wanted to work with and was accepted to outreachy. Double happiness right?

About Ceph’s Multilanguage RGW Testing project

I applied to ceph because of how interesting the project was. I anticipated I would build alot of capacity from working with Amazon Web services and working in three languages(Go, Java and C++) on three different test suites. My ambitious mind really wanted this.

The project entails writing tests for aws using amazon Go, Java and C++ SDKS. RGW features an AWS s3 like interface against which tests are to be run. Ceph already had a python test suite that was testing RGW and my work was to extend the tests to the other three languages.

I am very willing to guide someone with my mentor if they want to contribute to these tests suites as well. There are many tests to implement so feel free to reach out if interested.

The Future : A luta continua

My future in open source presents limitless opportunities. There are many places you can be but you will never be every where.I will consistently continue to contribute to the projects I have started especially with ceph. I have this passion for PYPY and believe it has a whole future a head of it because it is solving a common problem. I will thefore keep sending some patches to pypy and qutebrowser most likely after Outreachy because I have alot to do now.

Lessons I have learned

Take every opportunity to invest in others

I heard about my first open source oportunity when I offered to teach ladies I had met while speaking some where. The morale of this is when you invest in others you are also indirectly opening up opportunities for yourself. If I had not met these ladies I probably wouldnt have known about RGSoC and in effect would not have began contributing to open source.

Contribute with a goal of bettering yourself and the project

I know people contribute to open source for many reasons. Others want to get hired, some want to be famous and others to make money from summer programs. These are all logical reasons however it is better you contribute to better yourself carreer wise. Open source gives us a platform to show case our skills as we also become better. It has the right kind of mentors to guide you in areas where you are not sure as you work on projects that are impacting many people.

The other thing you should aim at is bettering the projects you are working on. Many of the tools we use are open source and the danger is they only get better if people like us voluntarily send patches to them. I personally use open source tools from my operating system to development tools name it. If the tools we use do not get better,then we will not be productive. Rubygems.org got hacked and was down for over a week and during this time hundreds of ruby developers remembered to contribute. Let us not wait for such terrific times because even then we wont be useful as such emergencies need people that are farmiliar with the project.

Strive to learn from every failure you face

I have failed at many things in that I very much identify with failure. I mean we all fail many times. The difference between two people that fail is the ability to learn from their mistakes and not repeat them. I failed to get into outreachy for one of the companies in the round I got accepted but from the application process I got inspired to write a book on pyton compatibility. Failure is not bad it depends on how you decide to view it. Also from failing the first time I applied, I endavoured to improve my proposal for the next round. Failure is therefore a learning opportunity.

Keep trying

People always succeed after trying and failing a couple of times. If you have never failed then you have probably not tried enough and if you stop trying then you will not live to land on that sucess you evision. Some open source tasks require patience as you communicate and interact with people and some times the frustration builds up and makes you want to quit.

Keep calm and keep Koding

If I said the journey is smooth, it would be the lie of the century. Some reviews will frustrate you, the code will jam at times, you will burn the midnight candle at times, meet mean people. Always remember to keep calm and continue hacking. May you have the calmness to ignore the things that dont matter , the focus for things that matter and the ability to know the difference!!!

Good News: You never walk the Journey alone

Whatever you want to achieve will cost you a little patience and commitment.There are people that have walked this path.Many communities exist with people very willing to guide you on the open source journey. I have been previledged to know about the The Open source help community. A community full of individuals that want to help others to start contributing. You can reach any one there for help and join the monthly chats with experts that have walked the open source path.

Maintainers are always happy to guide new contributors. There may be those exaggarated scenarios where mentors are not friendly but these are few.You just need to find a project you want to contribute to and reach out to the maintainers to see what you can work on. The best project to work on is for a project you use because then you can easily even suggest improvements to it because you are a user.

See you at the top!!!!