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
My scenario
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 "
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
issue link: https://github.com/newsboat/newsboat/pull/344
project link: https://github.com/newsboat/newsboat
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
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.
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 returnedI 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
issue link: https://github.com/newsboat/newsboat/pull/344
project link: https://github.com/newsboat/newsboat
congratulations buddy.. keep it up..
ReplyDelete