Skip to main content

My First Open Source Contribution

It's my dream to contribute to open source. It is all started in 2 year of college i came to know the linux is so much awesome to work and learn about computer and know about github where you can find the open source software code.

I thought, I need to learn more to contribute to the software community later i read lot of article about contributing to opensource.

Every article say
  • Learn a programming language you like.
  • Find a project written in programming language you choose.
  • Read it.
  • Use it.
  • Find any bug open a issue.
  • Fix the issue
Seems like simple as pie. I thought let's give it a try

My scenario
  • I use C to solve program in hackerrank and other coding sites and i know little bit about C++ and java at the time.
  • when i searched for the project, all project are seems to be dinosaur huge, Finally i convinced myself and pick a project.
  • I started reading the source code.
  • It donot understand lot of code and i donot know where to find those answers.
then frustrated and QUIT.

Well i cannot forgive myself that i cannot do anything.

I haven't thought about it for few years. I started learning different language and using git to store couple of my project that i done in my college days.

Things tends to change sudden when

I logon to Reddit platform and subscribe to programming language subreddit that i like and check few article when i have free time
Suddenly i saw Newsboat software migrating from language C++ to Rust ( If you donot know newsboat, it is a command line highly configurable rss reader )
I thought - can i contribute to this project
I dropped a comment in that article that i like to contribute to it and i donot know where to start

Link to the Article
Well i got the reply and i followed what exactly he told then

I forked the repository and check the source code

Also i checked the issues of once in a while, suddenly author of the repository opened a new issue " Port utility functions with simple arguments to Rust " so i checked the utility file i have seen few function that are simple

Well my mind said this is the time to make your dream come true. I select function  "get_default_browser" which is to get the environment variable of BROWSER if it not exist then lynx is returned

I checked how to set and remove environment variables in rust implemented it and ported c++ test case to rust and run the test cast. Well we need to also run the C++ test case to check ported rust code works

To run C++ test i decided to use a docker container, I pulled rust container from docker repository
and install necessary dependency that are required by the software and i ran the test

Guess what, Failed :(
OOPS the test case failed are not due to my code ( big relief ) then i searched the github repo to find a way to contact the maintainer to tell my problem

i found IRC ( Internet Relay Chat ) channel #newsboat so i joined the channel and asked the question and i waited for about 2 hours after that i got the reply then i try the solution he provided to pass the failed testcase but it didn't work so i was spending half the day fighting with this  and him on the other hand giving few solution

After that we found out I used container so it has no locale.
(locale - parameters that defines the user's language, region and any special variant preferences that the user wants to see in their user interface Eg: en-US means English UnitedStates)

Then i ran all the test Voila all test are passed so i made a Pull Request to the Main repository and checking for his commands



Yikes i have written unit test case which is not suitable for this scenario because changing the environment variable may affect other test case behavior so he told to convert those into Integration test and also specified.



So i created a struct EnvVariable which can be used to set and remove environment value and once
the test case is done it will replace the new value with old value So i made the pull request again





Nope..

Well he told to remove EnvVariable struct because integration test runs seperatly so i didn't affect other. I went to home for Festival ( i stayed there for 6. days) when i checked my bag i forgot to bring laptop charger so i cannot do the change. Then after i came to work i made the pull request

and ....

ACCEPTED



I was very happy that i finally contributed to the open source



Things i learned from this contribution
  • I learned about integration test.
  • configuring locale in linux
Contributors are awesome they were very humble and answered all my question.

issue link: https://github.com/newsboat/newsboat/pull/344
project link: https://github.com/newsboat/newsboat




Comments

Post a Comment

Popular posts from this blog

My experience in iOS Hackathon

This is my second hackathon, my first hackathon was on machine learning if you want to check out that article by following the below link https://thangaayyanar.blogspot.com/2018/02/what-i-learned-from-machine-learning.html So let's get started First let us discuss about the idea of what we are trying to achieve in this hackathon. From the above image you can able to know that we are going to recognize text from the image and use it to do find which field it is.  we separated this idea into three modules Identify the region Recognize the text  Field classification Module I : Identify the region To identify the selected region we used Vision framework ( ML framework provided by apple to detect the object ). The vision framework give us the boundary of the text region ( i.e frame - x,y,width,height ).  Then using the above region we crop the selected region and pass it to the next module. Module II : Recognize the text To recognize the text we ...

Vim - Text Editor which last for Decade

what's Vim?     Vim is a highly configurable text editor for efficiently creating and changing any kind of text. It is included as "vi" with most UNIX systems and with Apple OS X                                                                                                            ---> From Vim.org  when i first heard it, what a command line editor which is awesome and i said to myself  NO WAY, there are tons of editor which looks good and easy learn curve such as Atom,Sublime,VSCode and bunch others What makes vim special than other editors?  Different from everything you have used before ( because it has modes - insert mode,visual mode,Command mode ) Forget the mouse ( why?...

Demystify - Linux GUI

GUI In Linux GUI ( Graphics User Interface ) as everyone know about.  I am writing this article so that we can able to understand how to run GUI apps in containers but we need to understand how it works in linux. Why linux?   Most of the container we use are Linux based inorder run GUI in Linux we need know how it works.. Back in early days computer fill the entire room and if you want to access it you will be presented TTY (TeleType Machine) you can still see this screen if you press CTRL + ALT + F1 in Linux. ( To get back to GUI press CTRL + ALT + F7 ) Linux spin off 8 TTY when it boots ( we can configure more or less ) Graphics in linux is handled by bunch of little programs. They are Display manager Display manger which is the key component for graphics in which mainly graphics servers lie in linux the X.org is the defacto of Display manger. which has two components X Server  X Client Here little twist server talks to the client ( o...