My Journey as Opensource Contributor
Tags: python, opensource, codenewbie, programming
Published: 2021-05-07 22:57:15


Hi everyone, 

This article originally started as a [thread](https://twitter.com/j_kalebu) on Twitter and then decided to make an article about it regarding my journey as an open-source contributor, Hope you will enjoy it, take your time 

Early 2020 I started a journey as a content creator whereby I have been writing technical content on Software Development mostly being focused on the Python stack.


In the last 5 months, I began a new journey as an opensource contributor, and up to date I have contributed to 8 different python packages

In this article, I'm going to share my journey as 5 months old contributor and my thoughts on contributing to opensource.

## Start of the Journey


The Journey started in December 2020 when Vodacom released their public [Mpesa Payment API](https://openapiportal.m-pesa.com/sign-up), As I was looking for a way to integrate with python I came across their implementation for a python wrapper. 

I hardly understood it, and usage seems unpythonic to me, I then convinced myself it could be better than that and immediately started my very first opensource project (pypesa) for its re-implementation. 

It wasn't easy, a lot of googling and StackOverflow, but eventually, I was able to come up with something that actually worked, and I finally ported it to PyPI. 

{% github https://github.com/Kalebu/pypesa %}

It now has over 1.9K downloads

It was so fulfilling to me seeing other people using something I crafted and that good feeling lead me to meditate and rethink that I might able to do more to the opensource community taking apart Mpesa package.

For a long time, I have been wishing and admiring being an open-source contributor, inspired by the fact that most software we use today in some ways relies upon OSS whereby people dedicate their time, skills, and effort to build something that we can all use for free. 

That single contribution to the Mpesa package helped overcome the imposter syndrome of feeling unskilled enough and contributed anyway which keep me moving through the rest of the journey 


## Pyswahili 


The same month I started pypesa I opened a new repository titled *pyswahili* while procrastinating preparing a  talk for Pycon Tanzania, envisioning to be the Swahili version of python programming language. 

Honestly speaking, I didn't intend to begin working on this project anytime soon but it changed when I saw the repository with a 0 line code gaining stars and people are betting on it and I said to myself I need to make it real.

Well after a couple of weeks I managed to come with an early implementation of pyswahili with a couple of bugs like replacing non-keyword strings, lack of an interactive repl, unstructured packaging. 

I then shared the early implementation with my fellow devs and they were really excited which lead the repo itself to gain a few contributors and a little bit more stars 

Recently I managed to port to PyPI and up to date it has  been downloaded by over 0.8K

{% github https://github.com/Kalebu/pyswahili %}


## Mtaa 


The third package arose when I came across a Github repository consisting of data about all locations data in Tanzania grouped by region as CSV Files. 

I then thought how about organizing those data as a python package for easy accessibility and usage when it comes to building a real-life application with it.
 
which leading creating mtaa, a python package just do that; 

{% github https://github.com/Kalebu/mtaa %}


## Pysimilar 


Pysimilar came up after a previously published article on how to detect plagiarism in Python using cosine similarity, which stands as one of the most-read articles here on [dev.to](https://dev.to/) and multiple platforms I published including my personal blog. 

After realizing many people were looking into building something like that, I then thought of building a light python package that will enable even complete beginners to able to build a plagiarism detector in python 

 {% github ttps://github.com/Kalebu/pysimilar %}


## More python packages 

*If you can't find it, develop and opensource it* said opensource, So I did and began developing packages focused mostly on simplifying the integration with the APIS, 

These packages include; 

1. [NextSMS](https://nextsms.github.io/nextsms/) a python Package to ease the integration with nextsms SMS Gateway

2. [Tigopesa](https://kalebu.github.io/tigopesa/) Python package to ease the Tigo Pesa Payment API integration

3. [BeemAfrica](https://github.com/beem-africa/python-client) A python library to ease the integration with the Beem Africa (SMS, AIRTIME, OTP, 2WAY-SMS, BPAY, USSD)

4. [Nida](https://kalebu.github.io/Nida/) un-official Python library for loading user information based on National ID number(Tanzania)


## What I have learned? and why you should contribute too?


1. Personally getting to open-source has completely transformed me in terms of perception and improvement in the way I write code than code examples ever taught me.
Therefore I would also recommend If you're currently learning a programming language or looking to advance your skills, one of the best things you can do to achieve that is contributing to opensource 

2. Your contribution to open-source projects can act as your portfolio with vivid evidence on how you write code and document your project which can help you land paying gigs, I recently worked with a client who reached out only after going through my GitHub so it works for sure.

3. You don't really to be an expert to contribute, you just need to have something to contribute that's all, and sometimes you don't even have that something, there are couples of websites such as [CodeTriage](https://www.codetriage.com/)  that highlight issues you fix and level of the difficulties for tons of opensource software.


Well, that's all for this article, I'm glad you enjoyed learning exploring my journey as an open-source contributor, to me this is just beginning and  I really think you should too. 

You can connect me with me on [Twitter](https://twitter.com/j_kalebu)

I also write articles on [personal blog](https://kalebujordan.dev/)