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

C program jackpot

/*Program to show sum of 10 elements of array & show the average.*/ #include<stdio.h> int main () { int a[ 10 ],i,sum = 0 ; float av; printf( "enter elements of an aaray: " ); for (i = 0 ;i < 10 ;i ++ ) scanf( "%d" , & a[i]); for (i = 0 ;i < 10 ;i ++ ) sum = sum + a[i]; printf( "sum=%d" ,sum); av = sum / 10 ; printf( "average=%.2f" ,av); return 0 ; } Output: enter elements of an array : 4 4 4 4 4 4 4 4 4 4 sum = 40 average = 4.00 /*Program to find the maximum no. in an array.*/ #include<stdio.h> void main () { int a[ 5 ],max,i; printf( "enter element for the array: " ); for (i = 0 ;i < 5 ;i ++ ) scanf( "%d" , & a[i]); max = a[ 0 ]; for (i = 1 ;i < 5 ;i ++ ) { if (max < a[i]) max = a[i]; } printf( "maximum no= %d" ,max); } Output: enter elements for array : 5 4 7 1 2 maximum no = 7 /*Swapp

Newsboat RSS Reader

Let me tell what is rss reader then i will explain about newsboat,. RSS stands for Rich Site Summary. Simply it is way to subscribe to webpages and when new article is published you can see through the feeds. you get the idea Newsboat is a terminal rss reader which is simple, easy to use and highly customizable how to find rss feed link ?                                   simple trick that i used to find rss feeds in a website check for rss image like above [OR] Right click the website -> view page souce and search for rss copy the link and paste it in urls file in the .config/newsboat/urls (for linux and mac) RSS feeds from twitter: https://twitrss.me/twitter_user_to_rss/?user=<USERNAME> https://www.twitrss.me/twitter_search_to_rss/?term=<SEARCH TERM> example: https://twitrss.me/twitter_user_to_rss/?user=Hytale https://www.twitrss.me/twitter_search_to_rss/?term=Hytale RSS feeds from youtube: https://www.youtube.com/feeds/videos.xml?channel_id

Ecosia

ECOSIA - A Green search engine “ Ecosia donates 80% profits to planting trees” Site: www.ecosia.org Lauched on 7 th December 2009 and created by Christian Kroll available in more than 26 language. It is located in Berlin, Germany.It is also called as CO2-neutral company.Ecosia has donated to different tree-planting programs. Until December 2010 Ecosia’s donations went to a program by WWF Germany that protected the Juruena-National park in the Amazonas. In order to make sure the protection was kept up, the program also drew up and financed plans with timber companies and the  local communities. According to B-labs, as of January 2015, "In donating 80 percent of its ad revenue, the search engine has raised over $1.5 million for rainforest protection since its founding in December 2009." According to Ecosia, by 2015, the search engine had almost 2.5 million active users, and searches through it had resulted in more than 2 million trees being planted.Since October 201