Berlin Internationalization sprint or How i18n got some fresh blood and a sexy facelift

When I first heard of the idea of doing a Drupal Internationalization code sprint from Karsten Frohwein I thought that though being a good idea, setting up such an event was so difficult and would take so much time an energy that we'd had little chances to get it done. It is certainly hard to find the time, the place, get together all the people from different countries and get something started.

It happens sometimes that good ideas become reality. So first of all, big Thanks to the sprint organizers who were able to put everything together to help a team of 20 people from several countries to meet at some place and get something done. They kept everything going smoothly for us to be able to focus on what we like to do: Building great Drupal code that we are going to use later to build great Internet sites.

The background

On one side we have Drupal core that though having got many improvements in latest versions for building multilingual sites, still has some important gaps, like things not being fully translatable or not having a straight forward option for it. On the other side we have this 7 years old module, Internationalization, that hacks around Drupal core to get that missing pieces translatable somehow and was needing a good push to keep up with all the great developments that are into Drupal 7.

If you think of any Drupal page element, there are many ways to make it translatable, and there are many places to translate it. And it all makes sense only for people who know exactly what type of data each piece is. While building multilingual sites has been possible for some time for experienced developers and site builders, it was mostly a nightmare for new users trying to make some sense of all the modules and options around.

So while our number one goal is usually making things translatable and release some consistent code, we also need to think of how to make that process understandable. Possible is good. Stable is better. Usable is great.

The sprint

So here we are, 20 people from 5 different countries, working together in a nice venue in Berlin, trying to make some sense of this dated collection of modules that was i18n. Mostly, we've got tons of fresh ideas and Energy. Lots of good energy, like I had never seen before, focusing on this piece of code. And I've really felt overwhelmed most of the time by all the good code, ideas, and work coming my way for reviewing or discussing.

What I thought would be mostly bug fixing and polishing soon became a major facelift of most of the module, around the idea of filling the gaps and provide some usable UI to manage all of the features. So consistency became our new mantra. We had to find a way to make everything translatable somehow and make it look consistent to the user. Now you don't need anymore to understand how something is stored in the database to translate it.

While I could talk of specific pieces of code that were written or who did what, that would certainly take long, as we really got lots of things done, to be truth way more than I had expected. So here's the story on the issue tracker, the #drupal-i18n IRC channel and Twitter and of course, our git commit log, which is pretty long.

The life support system

While we wanted to focus on the task, there are many other important things that are needed to keep a big team going. From some basic venue house keeping, to food or transportation and also some organized breaks and walks around for people to get some fresh air without thinking too much of where to go or how to get there. All this has been nicely taken care of by the organizers, to the point we didn't need to worry about anything else and could really concentrate on coding most of the time.

We enjoyed some dinners, some walks around and visits to other events like the Linux Day which was taking place at the same time, and some sightseeing of Berlin which is by the way a very nice city. I hope I'll have the chance to see some more of it in the future. Special thanks to Stephan Luckow, who's been the barbecue master and provided some good proteins to be converted into better code. It's not only caffeine what you need to keep a programmer going for 5 days.

And we also got accomodation for most of the team provided by the very active and friendly German Drupal community. Here I have to say thanks to Pascal Crott, who had me and some other people hosted at his nice house in Berlin. Some of the days the sprint continued for us till late in the night, either in his living room or in the garden.

What we've got done

Really improved UI consistency, which translates into a much improved usability or, in other words, most of the features are now way easier to find and understand. Now when you try the module, you'll see a Translation tab for every object that is translatable somehow, it doesn't matter whether it is a menu item, a taxonomy term, or a contact form.

Lots of bug fixing and polishing all around the modules. Most of that small annoying issues are now gone. And gone for good because we have now... Tests! Unit tests are not something you see when using the module but help a lot with maintenance, avoiding regression issues and keeping overall quality standards. From a bare minimum at the beginning, we are now at around 50% code coverage.

We've got the 15th module in i18n package, Contact translation. And some other modules, Drupal core included, got also some patches. From Views translation, that's mostly upgraded for Drupal 7, to some Entity translation related patches.

We also had some talks about what it would take to make Drupal core really multilingual, that was some start for the new Multilingual support in Drupal 8 initiative.

Wrapping up and... release!

Next step, which we'll do quietly back at home this week is some clean up, reviewing latest patches and close the few left bugs and yes, we'll have a stable release very soon.

Then some documentation will follow, some parts about using the module itself and some more about how to integrate other modules with i18n API.

Thanks to everybody who participated and to everybody who made it possible, like the organizers and sponsors that supported the whole thing.

If you are coming to the next Drupalcon in London, don't forget to vote for our session proposal on Multilingual Drupal solutions. See you there!

Further reading and related links: