Building Online Communities: Akka Project
Tell us about a little bit about yourself and the Akka project community. What is Akka project? How did it all begin?
Akka is a toolkit for building highly scalable, concurrent and distributed applications on the JVM. The project was started by Jonas Bonér who in 2009 decided to create a library to help him build concurrent, distributed apps heavily inspired by Erlang and its “let it crash!” motto. Later the project evolved into an important part of the Scala community and crucial part of the platform supported by Typesafe (later to be known as Lightbend), which is the company supporting the majority of Scala compiler work as well as multiple great open source projects, such as Akka or Play.
We have a fun infographic that we made to celebrate 5 years of Akka (back in 2014), that shows the evolution of the toolkit as well as people joining and contributing different modules etc. I joined around that time actually and the rest, as they say, is history.
What common goals do you have as a community?
I like to think of it as pushing distributed systems where no man has gone before :-)
This may be somewhat overstating it, however we certainly pushing the envelope pretty hard with some of our projects. With some of the recent initiatives we lead, like Reactive Streams, which are aimed to become a part of Java 9 and were a cooperation between us and multiple excellent engineers across 5 or more companies, one gets this feeling that we’re actually moving the ecosystem to places where it wouldn’t have been otherwise. Another notable example of this is Roland Kuhn’s experiments with Typed Actors over the last years, which actually made academia reach out to us for joint research, as the problem is currently not only explored by the Akka team by academic researchers themselves.
What are the main issues discussed in the Akka project channel on Gitter?
We have a number of Gitter channels so topics differ from channel to channel. For example the core team is always online on the akka/dev channel, and it’s the place where you can ask the team for help on contributing and actually developing Akka. Then we have the akka/akka channel which is a general user discussion channel, we also sit around on that channel, but due to sheer amount of chats going on there, we’re not able to answer every question — good thing though that we have an excellent and lively community that’s happy to help anyone out there.
Then we also have more specific channels, like “akka persistence cassandra” or “reactive kafka” (our streaming Kafka integration library), which are projects that we maintain yet are not really part of core Akka. Questions there are often very specific about the tech used.
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?
First and foremost, it has to be a nice and inviting place you want to be part of. We personally invest strongly in guiding newcomers into the community and also set a tone of a nice place to discuss and freely ask any questions you might have.
We also have contributing guidelines and sometimes run competitions or hackathons to encourage new people to join the project.
What are the key challenges that you encounter while managing the community?
The largest challenge we have is actually one of those good problems to have actually–since it’s about being able to keep up with the community as it’s become so large that is becomes hard to keep up. We get a lot of questions, ideas and contributions and responding to the communities questions and feedback can sometimes end up being almost a full-time job by itself. We try to share this responsibility across the team, so that we still get some offline time to get focused and get some coding done.
How do you encourage participants’ commitment and contribution to the community?
We of course have the obvious things which are tickets marked as easy to contribute and such, but actually many contributions from the community start out from initially being a question on Gitter, then we chat a bit and if it turns out something wasn’t documented clearly enough or could be done better then we ask if the person if they’d be able to help us out and contribute the change — very often people are really happy to contribute back. We try to make it as much as a pleasant process–which shows in retention of contributors I think :-)
Then we sometimes do something a bit extra, like running a blog post competition (we called it the Summer of Blog back then), or for really impressive contributions we even handed out a few ScalaDays tickets to the most active contributors recently.
Based on your experience, do you feel that the open source communities have changed and evolved over the past years? If so, how?
In recent years, especially with Github and Gitter communities have become even more personal and human. Mailing lists and for example IRC channels were always around, but somehow the entry barrier seems to have been somewhat higher. On chats nowadays we get people from more diverse backgrounds I think — seems the ease of getting into a Gitter chat really helps in the outreach.
Some of the examples about openness we practice are that we publish our discussions as well as sprint plans on the akka-meta repository, so everyone is able to keep track of what we’re up to–and hopefully, figure out how they could help out as well.
What advice would you give to someone who wants to start an online open source community from scratch?
I strongly recommend people to “default to open” when working on projects. It really rarely is the case that someone will come in and “steal” your ideas (remember to use an open source license that expresses what you want to achieve). More likely than that though, is that someone might find interest in your library and start helping you out on it.
I’ve more than once just had a small personal pet project explode in popularity and contributions, and suddenly be widely adopted — funnily enough one of them being a git / maven plugin I created in 2011 and now tons of corporations or other open source projects depend on it, contributing to its maintenance as well. Having that said, there’s nothing more satisfactory than having your OSS project lift-off.
Anything else you want to add?
Yes, I’d like to take this opportunity to give a hint at a small coding event / competition we’ll be running in a week or two from now — keep your eyes peeled as we’re going to announce it on lightbend.com and akka.io, there will be fun swag to win and it’s a great chance to get into not only using, but actually contibuting back to the Akka project :-)