How io.js built a 146 person, 27 language localization effort… in one day.

If you ask a community to build it, they will come.

On my first trip to Korea I was stunned to find out that, not only was there a huge Node community in Korea, but that they had built their own support network and resources we had no idea about. To date, this is how the substantial multi-language community has functioned, creating silos to support their local communities.

@isaacs, @mikeal and the play(node) organizers, Seoul, Korea, Fall of 2012

Part of the vision for io.js is a project that can grow and flourish through a community that contributes and drives every part of the project. When it came time to create a localization effort I didn’t just want to structure groups to translate a website and some documentation.

What I wanted to do instead was create spaces for community members to collaborate with each other in their language of choice. They can use that space not just to translate documents but also to support their local community and connect that community with the project. In io.js we have open collaborative efforts that drive evangelism, social media, and even our roadmap. Why shouldn’t the non-english speaking community be a part of that?

What a Saturday!

We’ve had a few people in the website project pushing to translate the site and some of our recent blog posts in to Spanish. Building on work pioneered in NodeSchool, where local meetups get their own repo and team, I asked if they would like a Spanish Localizations repo/team to organize their efforts.

NodeSchool Taiwan

I logged a new issue on the website repo asking if anyone else would like to pitch in. I pointed some people to the issue on Twitter and we saw a quick flood of people signing up.

Everyone who signed up by commenting on the issue was added to a team for their language. That team is the admin of a repository in the iojs GitHub org for that language. After I setup each repository I logged an issue with some “first steps.” It can be hard to make people feel like the really own a new space like this. I intentionally left each repository description and README empty so that the first step for each new language community was to create these themselves in their native language.

I also instructed them to register a Twitter account for their language and any other social media accounts relevant to their community. io.js has seen a lot of success using social media to bring contributors and attention to key issues and we’ve also been using it to talk about the success we’ve had to keep people excited and motivated. The goal here was to try and produce similar success in other languages and to clearly broaden the scope of the these teams from “translators” to “community organizers.”

As a final step I encouraged these teams to log a new Issue as a task to translate the latest weekly io.js update. This was a subtle nudge to begin working out the process by which these groups will define and divide up tasks. Some of the faster communities immediately stepped on each others toes a bit, with more than one person translating the same things at the same time. Of course they quickly worked this out and because they worked through and created the process by which they collaborate themselves they have a greater sense of ownership over it than if I or someone else had handed them such a process.

The real treat was watching what people did without any instruction at all. Before the day was over people were translating the website, adding more collaborators themselves, creating shared email accounts, and coming up with a variety of strategies for sharing account credentials between team members.

First JS talk given under water! JSConf.asia 2013, Phillipines

Language vs. Localization

People quickly noticed that the teams were per language and not per localization (es and not es_ES). These teams/repos are collaboration endpoints and I wanted to allow the broadest possible group of people that can understand each other to participate. For instance, the Spanish team (iojs-es) can easily communicate with each other and collaborate effectively enough to produce several localization (es_ES, es_MX, es_CO, etc). They can also share a list of available speakers for meetups and conference to help grow our international evangelism efforts.

Network Effects

I spent pretty much the entire day using GitHub admin tools: creating teams, adding members, creating repos and logging issues.

New people signed up in waves. First, someone would find out about the effort on Twitter, tell their friends, and a few would sign up. Once the team started working through the steps in the first issue they’d register a new twitter account, follow @official_iojs, and then @official_iojs would send out a tweet directing people who wanted to get updates in that language to follow the new account. Each tweet about a new language account would be re-tweeted, circulated, and bring in another wave of signups.

This happened across a new timezone every hour which in turn would bring new signups a few new languages each hour. On Sunday morning (PST) I woke up and added everyone who had signed up while I was asleep. I went back and added up what the last day had brought and was stunned to see we’d brought in 146 people across 27 language teams in just a single day.

If we can accomplish all this in just one day I can’t wait to see what this community brings in the next month ☺