Building Online Communities: coala
Coala is a language independent analysis toolkit. It empowers developers to create rules which a project’s code should conform to. The founders & contributors to the coala project — Lasse, Adrian, Araf, Abhay, Tushar and Adhityaa — told us how they collaborate and manage a community around their project.
Tell us a little bit about yourself and the coala community. How did it all begin?
Lasse (@sils1297): The whole project started back when I was developing a little kernel for fun. I had a friend whom I somehow managed to convince to help me — though he really wanted to write Python and not have anything to do with my C code. So he wrote a little code checker. It was all a fun project without any ambition of growing into something actually useful but we continued it and it evolved. We did two complete rewrites to get a cleaner software architecture and eventually we ended up with something unique and very very useful for researchers and developers.
What common goals do you have as a community?
Adrian (@Adrianzatreanu): We are a community of volunteers. All of us have a strong desire to learn new stuff and enhance our existing skills. We believe that the best way to achieve that is by enjoying what you do. Programming all day can become monotonous. So to keep ourselves motivated we constantly stay in sync, thanks to the Gitter chat channel.
Even though we are volunteers, and we build and maintain coala in our free time, we have a huge emphasis on quality of work. We work hard to keep our codebase organized and we urge the new contributors to do the same.
What issues related to the project are you most excited about these days?
Lasse (@sils1297): coala is currently growing from my “personal little pet project” to a real community. This introduces many new nontechnical aspects into our community: we’re attending conferences all around the world and are also trying to focus on getting the word out about us instead of only writing code.
Also we do have expenses and we would love to reward contributors more than we do right now, ideally be able to cover travel for conferences and such things. We’re trying to get sponsors for this and a small group is also working towards founding a startup around coala (GitMate.io) which already helps us saving time when developing coala itself.
We don’t want to convert coala into a company: It is very important for us though to keep the community separate — and especially independent — from our startup while establishing a good relationship with mutual benefits. More developers and resources for coala and better code analysis for everybody.
Araf (@arafsheikh): Currently some of the coolest ideas are being implemented by Google Summer of Code students. The ideas include:
- Decentralizing the bears from coala, thereby simplifying the coala framework.
- Ability to write bears in any programming language.
- Intelligent settings guessing, saving time and reducing errors.
- Parsing language independent documentation.
- A new command line tool to create new bear and modifications to Lint class.
- A brand new interface for user-friendly code analysis reports.
- Language independent indentation algorithms.
- Integrating coala with the Eclipse IDE.
These new features will drastically improve coala in the upcoming months and we are excited to see them be brought to reality.
What are the main issues discussed in the coala Gitter channel?
Adrian (@Adrianzatreanu): We use multiple channels to deal with various topics, just like any large community does on IRC.
There is the main channel (link) where all newcomers drop in and say hello, allowing us to greet them and invite them to our community. This is one central point where we talk about general issues, technical as well as non-technical.. We also have discussions on topics such as cultural differences, or sometimes even have storytelling times. At coala, we try our best to keep the environment pleasant, making everyone feel comfortable when chatting with us. There are only a few rules here:
- Be polite, etc. — we don’t allow rudeness or impoliteness on our channels, nor on our repository. But it’s worth mentioning it wasn’t the case until now.
- Do not use @/all unless it is totally necessary, such a huge announcement that anyone would be interested in, or something that is really important, because the main channel is huge, and there are a lot of lurking people.
- Be aware and respect the cultural differences that people have.
There are also a growing number of other topic related channels to reduce the heat on the main channel for conferences, GSoC and so on.
What are the most important factors that you have taken into account while creating and maintaining the community? What factors contribute to the success of your community?
Araf (@arafsheikh): What excites me most about the coala community these days is the sheer inflow of newcomers. The community has seen exponential growth over the past two months. Most of the newcomers came to the coala community with short term goals, but that quickly changed and many ended up becoming core members and maintainers. The coala community managed this by reaching out to the newcomers in a friendly manner, guiding and helping them at every step. This is one of the biggest and the most underestimated challenge that a growing community has to face.
Abhay (@abhsag24): I believe the quality of the code base, documenting everything, 100% test coverage helps a lot in understanding how all of it really works, our codebase is huge and it might seem difficult to read at first, but measures like these enable our newcomers and even regular contributors in improving and managing our existing code. Also our strict code review policy helps us to keep learning from each other.
What are the key challenges that you encounter while managing the community?
Tushar (@tushar-rishav): One challenge is working with people in different timezones. Our community consists of people from all around the globe, working together in the same environment. This can be a problem sometimes, but on the bright side our community remains active throughout the day.
Another major challenge that we face is holding the newcomers. We have very strict quality assurance and newcomers sometimes tend to struggle for days with the same pull request. We mean to offer all our help, but we need cooperation, which sometimes isn’t received. But I guess this is the way it is in every community.
Lasse (@sils1297): Indeed! Another challenge that I observe is that senior members of the community are almost exclusively occupied with tasks like code reviews as well as helping people.
There’s a positive aspect to it: from what I’ve heard and know we’re a very helpful community with very low response times which is totally due to us bringing people to talk to us directly right ahead and also allowing asynchronous communication which wouldn’t be possible when using IRC or something. However managing the community needs a very serious amount of time. To counter this we try distributing tasks as well as developing tools like coala itself or GitMate to automate as many trivial steps as possible and be able to do things that matter: personal interaction and actual productive work.
How do you encourage participants’ commitment and contribution to the community?
Tushar (@tushar-rishav): We offer them help, actively encourage them and try to keep them motivated. We are very open-minded and always welcome suggestions and ideas.
It is also important for us to reward the awesome things done by the contributors, especially newcomers. We try to give positive feedback publicly and regularly where applicable. Whenever someone adds a new feature or fixes an important bug we publicly tweet via our official Twitter account thanking the author. This is rewarding for both sides!
Moreover, every contribution when merged is directly uploaded to PyPI as a usable development version, so the new stuff is directly distributed and usable. I think that’s something delightful and encouraging for the participants as well as the users!
Adhityaa (@hypothesist): When I started, it was initially daunting. The whole code review process, learning the nuances of git, conforming to the code standards, and so on. But the key is simple: perseverance. It always helps to ask questions when you feel lost. At the coala Gitter channel, the response time is amazingly low: I’ve never seen a question go unanswered for more than an hour.
As Tushar said, one of the biggest perks when it comes to contributing to coala, and open source in general, is the effect you can have in a very short duration. Getting to see your contribution go live to thousands of users is an exhilarating experience.
In my experience, the best way to start getting involved would be to start with simple, trivial bug fixes. We teach the newcomers the basics of how to contribute — getting to know the existing code base, submitting your patch, and getting feedback from reviews. It’s all about getting over that initial peak.
And from there, the journey is genuinely amazing :)
What advice would you give to someone who wants to start an online open source community from scratch?
Lasse (@sils1297): Don’t think people will come to you on their own. Building a good and healthy community takes a lot of passion combined with a lot of effort as well as the openness for long term investments. Focus on quality and growth, rather than short term success. Give your project the ignition energy it needs to get the ball rolling and remove obstacles to keep it that way.