DEV Community

Gabor Szabo
Gabor Szabo

Posted on • Originally published at


As a life-science student, why contribute to open source projects?

The 2nd issue of the Code Maven Weekly

I teach a lot of students in various sciences. Biologists, chemists, physicist, life-science students. etc. Even among the participants of the currently running Open Source Development Course there are a few. I thought it would be a good idea to give an example why is it a good idea for them to learn how to contribute to open source projects and to do it.

After all peers and bosses might ask why do you do this and it is a good thing to have an explanation.

The story is based on an example one of my students told me.

Let's say you found an open source project that you'd like to use for the science experiment you are working on. It might be a project written by other science student who did not have a lot of experience writing code, and even less experience publishing it. Maybe it was their first project.

Nevertheless they published their code on GitHub and now you can use it.

It looks very promising as your experiment is very similar to theirs.

Basically they gave a gift to you even without knowing you.


The problems might start that you can't even install the project. It is not packaged in the standard way of the programming language. There are no clear instruction on how to install it.


As you try it you slowly find out what other things you need to install in order for this to work. You find out how things need to be configured etc.
You might read a bit of the source code for this. Maybe you found a blog post somewhere on the Internet or a question and answer on StackOverflow.

Anyway, You managed to install it. Yay!

Instructions how to run it

Then you find out that the project does not have clear instruction on how to use it. You don't know exactly what parameters it expects. If you don't provide the correct parameters it raises a very confusing exception instead of a good explanation.
It is unclear what is the expected format of the input file etc.

Again you start to read the code. Read more blogs.

Eventually you figure this out too.

Bugs in the code

Now that you already know how to run the program, you encounter various bugs.

Luckily you know the programming language so you fix the ones that break your application.

You might even add some extra features you needed.

You are satisfied as you can go on using it. Do your science research. Write your paper. etc.

Why contribute to the project?

You already solved all the issues you needed. Why should you contribute to this project?

For one, because it is the right thing to do.

The person who wrote this project gave you a gift by sharing the code on the Internet. True it was not the perfect gift. It was hard to unwrap it and you still had to add some batteries, but still you were much better off with it then without it.

It would be nice if you returned the favor and gave a gift too. You can contribute back the bug fixes, the knowledge you collected when tried to install and tried to run the program.

By contributing to this project you give a gift to the author and also to the next person who will want to use it.

It is a very nice feeling that some random strange thanks you for the project you shared.

Many people report that even a simple thank-you note for their work will boost their ego and they will want to share even more.

Telling them that you use their project and even sending improvements will have a very strong impact.

Your gift

There are also other reasons.

Your name will appear on the project. People who use this project will also appreciate you. You might even want to tell about it to your co-workers or at a job interview. You also get the good feeling of doing something good to others.


I'd like to invite you to subscribe to the newsletter so you will not miss the next issue.

Gabor Szabo

Top comments (0)

50 CLI Tools You Can't Live Without

The top 50 must-have CLI tools, including some scripts to help you automate the installation and updating of these tools on various systems/distros.