Free software is used all around the world, and as such it needs to be translated to all kinds of different locales. Fedora has a very active translation community, and they decided it was time that some better tools existed for contributing translations and integrating with upstream. To find out more about this, I talked with Dimitris Glezos, discussing the new Transifex project, what it was like to work on a Google Summer of Code Project, and much more...
Profession: Software Engineer
IRC Nick: glezos
Interviewed by: JonathanRoberts
To start, if you could explain to us a little bit about what Transifex is, and how the need for it arose?
Transifex is a novel system designed to ease the process of contributing translations to projects hosted on remote and disparate various version control systems (VCS).
It acts as a proxy between the translator and the project maintainer, making the work of both more efficient. By abstracting the VCS to a common, easy to use interface, it makes the submission process to remote projects easier and straightforward. At the same time, by acting as a translation gateway to remotely hosted resources, developers are enabled to reach out to already established translation communities.
The idea was conceived when Fedora developers raised the need to host the development of their projects on more than one type of VCS. Of course, translators started freaking out, because this meant creating new accounts and learning additional sets of commands. Administrators were skeptical as well, since hundreds of new access control lists might be needed on each new system. Transifex will hopefully help both of them do better things with their time.
In contrast to similar systems, Transifex doesn't require the source code to be relocated or the translation files to be copied to a downstream VCS. Therefore, translation merging is not needed, and all downstream projects are equally benefited. Oh, and it's free software!
Can you describe a typical scenario of the translation workflow with Transifex?
Let's say Mike is a developer who wants his software translated. A dedicated SSH key is created for his project, and he uses the public part of the key to create a new user on his VCS. The repository and module information are registered in Transifex, and the project is ready to accept translation submissions.
Diego is a translator who wants to contribute to Mike's project. He opens his browser to http://translate.fedoraproject.org, and logs in with his regular Fedora credentials. He downloads the PO file containing Mike's translatable messages and works on them. Once he is ready to submit them, he selects his file for upload in Transifex, writes a short commit message, and clicks "Preview" to verify the diff and commit details. A second click on "Submit", and Transifex commits the file for Diego, embedding his contact details in the commit message.
Diego's contributions are instantly pushed to Mike's repository, and are readily available to any other downstream project. Mike can be notified for each submission, monitor them from inside Transifex, and limit access to his files as he sees fit.
The Transifex wiki talks about one of the main goals being to enable Fedora translators to contribute upstream more easily; have you had much contact, or feedback, with people and projects upstream about this?
The feedback has been excitingly positive! Fedora developers on Mercurial and Git warmly welcomed the idea, as it makes their projects first-class citizens in our localization community. Also, people from remotely hosted projects like yum, rpm, and Yum Extender have shown interest in accepting translations through it.
The folks behind One Laptop Per Child would like to reach out to Fedora's active translation community to help them get their interfaces localized quickly and efficiently. And since Transifex can work in parallel with the normal way of submitting translations, in a way it's like the OLPC community was suddenly expanded by some hundreds of active translators.
Also, some people from major upstream projects with existing translation communities like GNOME and KDE have shown interest in accepting translations through Transifex, and some others in installing an instance for themselves in order to have their VCS abstracted for translators.
And how active is the current Fedora translation community?
Fedora counts more than 2000 translators who contribute to more than 65 projects in 70 languages. The translatable content counts something like 4 million characters and includes a variety of content types: application user interfaces, documentation, and websites. One of the largest modules (next to the packages descriptions) is the Installation Guide with around 150K characters.
We hold weekly meetings on IRC, and our discussion list receives on average around 150 emails per month. I'd say we are a pretty active community, and I expect the activity to increase even more in the next months.
Some of the work you've done for this was under the Google Summer of Code program; could you tell us a little bit about your experiences with this, and how it worked in relation to the Fedora project?
GSoC was fantastic! It was a great opportunity for me to focus for a substantial amount of time on working on something useful and exciting. And doing that in the vibrant Fedora community and close to sharp and motivated people has been an great experience.
I hope next year Fedora will have more proposals, promote the program better, and have twice as many students applying. I will definitely apply for mentorship and put up some ideas myself. It's a great way to get software developed, and new developers introduced to free software communities.
The Transifex wiki page also says that the project has been deployed in a testing environment. How has this testing gone, and will you be ready to move to a full deployment of it in time for the Fedora 8 release?
We've installed Transifex and progressively enabled more features and types of projects, keeping a close eye on it. Some minor issues showed up and have been fixed, and many requests for small enhancements have been implemented.
We're currently at a point where authentication is done through the Fedora account system, most of the packages hosted outside of our default VCS have been added, and active translators use it regularly.
The process of putting it into production on http://translate.fedoraproject.org has already started, which I believe should be completed in the next couple of weeks. The final transition will wait until after the translation freeze, just to make sure the translators will work without any chance of interruption. Also, we'd like to have it announced in many languages at once, so I've got some work scheduled to make sure every message is properly marked for translation.
Once this work for Transifex is finished, do you have any future goals for it? Perhaps new features that you'd like to have added, or to help grow the translation community in one way or another?
I can think of three interesting major new features people have asked. One of them is integrating Transifex into the workflow of upstream translation communities. The access control mechanism will become more fine-grained (eg. per language), and a "Review layer" will be added. This way, language coordinators (either Fedora's or upstream's) can check and correct submissions before pushing the file.
Another nifty feature would be to give developers with distributed VCSs the choice to pull translations from Transifex instead of having them being pushed directly into the master repo.
A popular request among translators is to add a workflow management layer on top of Transifex, enabling support for translation assigning, progress monitoring, lightweight in-team communication (eg. through commenting), etc.
Finally, if you would tell us a little bit about yourself: how you got in to free software originally; things you love to do when not coding/translating...!?
I remember being attracted to the free software world by the community spirit and culture of projects like Mozilla. Back then I was excited I could follow the progress of my favorite projects through its open discussions. I met my local community, and slowly got involved into translations and some i18n coding. At some point I felt confident enough to start contributing with code, a bit of documentation and articles, and some design here and there.
When I'm offline, I can probably be found in the middle of nowhere rock climbing and photographing (some times other rock climbers), cooking strange exotic food, and enjoying good cinema.