Contributing to coala

Why?

Since I started using linux I have been a huge fan of the open source initiative.
And why wouldn't I? I can use some of the most sophisticated, cutting edge, well designed software for basically no cost. On top of that you get the overwhelmingly helpful communities for each project.

Everyone knows that the best way to become better at something is to practice. When you look about tips on the internet about how to learn to work with some programming language or framework, you get the same reply "Try working on a project". The problem with this suggestion is that if you have close to 0 experience it's very hard to cook up something on your own. Ideas are not that easy to come by either. Working on an existing project seemed like a feasible idea.

My story on finding coala.

So I decided that I wanted to start contributing to open source projects. If you are in a college environment you have undoubtedly heard about the Google summer of code. I wanted to participate (still want btw) so I looked up some popular open source projects that get accepted every year. Under the GNOME project ideas proposed for 2016 I found some contact details about a possible mentor (later it turned out that he is the founder of coala). We will call him sils like his github username. sils invited me to the community wide gitter channel and advised me to introduce myself as a newcomer.

What is coala?

coala is an open source code analysis tool.

Easy to use COde AnaLysis Application - yes! For all languages! http://coala-analyzer.org/

Its analysis modules are called Bears and they are the reason coala supports (or can support) all languages. The best part about coala is that it's very easy to set up in an existing project. In its current version it is a CLI tool for Linux, OSX and Windows which I prefer because I work in the Linux CLI, but it will have a GUI soon enough. It already has plugins for popular editors such as atom and sublime.

Interestingly coala hasn't participated in Gsoc as an organization by itself but it mentored 2 students under GNOME's umbrella last year (hence me finding coala through GNOME's ideas page).

Getting started

Like a lot of projects, coala has a github page used to host the repo, track issues, etc. In coala the issues have a difficulty level, so every contributor (even complete noobs like myself) have where to start. Just go over the newcomer issues, pick one (usually they are trivial bugs but if you have trouble someone will help you for sure on the gitter channel) and proceed to solve it. This way you learn about the coala conventions on the commit messages and so on.

It's important to note that the newcomer bugs are intentionally left unsolved so that new people can learn how to contribute to coala.

What do you get from contributing?

As I wrote above you get experience, in my case this was very much needed. The most important aspect is that you learn by doing, and as a motivation bonus whatever you do will be used in a real life project. You will be given constructive feedback on your contributions, you will be helped when in need, you will be asked to give constructive feedback and help others in need.

What if you already have experience? The second most important aspect of contributing to open source projects (generally, not only coala) is that you get exposure. Your contribution will be there for everyone to see and review months/years after it was accepted. It is a way to demonstrate what you can achieve. Also you will meet new people that have different opinions than yours for the same matters.

It's a win win in both scenarios (noob/veteran).

Conclusion

This was my experience working with the coala community in the last week. I hope I encouraged you to participate and contribute to some open source project, if that is coala even better. And there goes my first ever blog post.