Here come slides I used for Summit 2010 Localization 2.0 talk.
It was a very tough talk to give. Hard to grasp, hard to explain. I originally wanted to devote it exclusively to L20n, and make it as a form of tech talk, but eventually figured out it will not work and there’s much broader vision I need to explain. Thus a few hours before the talk I started rewriting it and end up with what you can find here.
Of course slides alone will tell you just a small part of the story, but it’s better than nothing. 😉
Catching up from the blog post that introduced Pontoon, I’d like to present the project in a little more detail and the vision for a near future.
Clients
As stated previously, Pontoon 0.1 introduces two types of clients – web client and jetpack client. Both share majority of code base (Pontoon, jQuery, jQueryDomec and heavily modified editableText plugin), but because of the limitations of jetpack prototype I had to merge them into one JS file.
user experience
For user interface of Pontoon 0.2 I’d like to focus on a few key aspects that may make Pontoon a tool ready to use in work environment:
Introduce identification system that will sign contributions made by a given user. We may use Verbatim accounts for now.
Figure out a way to recognize the state of localization and allow for continuing localization.
Add ability to view/edit entity in a source view. (much like wordpress’s HTML view)
Fix some common cases like entity with a single anchor should treat the anchor as an entity, not its parent
Improve UI to look nicer and inform user on the outcome of his actions.
With those six improvements (including two top ones which are major), Pontoon will become, in my opinion, ready for real life use and we may offer it for one of the upcoming small websites for those brave souls who would like to test it.
code base
On the code base front, I will definitely want to clean up the sources, which will be easier when jetpack client get updated to new jetpack architecture. editableText plugin will require a cleanup and will be extended to allow source view, so it may make sense to fork it as a separate project, while other classes should be refactored and site-dependent code should be moved away from libraries. Also, CSS inclusions should be merged into libraries.
One thing I’d like to see soon is a third type of a client – one that may be embedded into any website so that the website author can turn on and off the “localization” mode.
Server
Pontoon server will require adaptation to the client side changes, like ability to identify/authenticate users, and then two new things should be possible with the data received from a client. First, server should be able to add translations as suggestions in Verbatim. This way users will be able to suggest translations, leaving up to the registered localizers what to do with it. This workflow is an intended one for Pontoon.
Second thing, is that we should be able to generate a pure, localized HTML file out of a source one and translation list. This way we will be able to localize things like SUMO documents or plain HTML sites that do not use Gettext or even PHP.
Hooks
Hooks will go through a major rewrite, because I want to test the concept of providing an external meta file with information like lists of entities for the client to read. Such meta information is the most natural way to also add ability to pick up localization from a midpoint. The issue here is that of course this will not help the client with localization of websites that do not use pontoon hooks.
It would be also great to add Django hooks, since so many websites this days are migrating to django, and it would also allow us to test how cross-linguistic the hook system is.
Summary
This is my plan for a short term, and I’ll try to get as many of the features described above into Pontoon 0.2 as possible. I prepared a wiki article describing the plan, and I’m open to feedback, ideas, and of course, contribution. 🙂
Just a short note. After getting a very positive feedback in Prague on the Verbatim project, and fairly negative on its performance, I spent some time making it faster and snappier and got it to the point when I believe this problem is mitigated and we can push Pootle Verbatim’s incarnation to production.
So what’s going on right now?
We’re working with the IT team to get a new virtual machine with its own public vhost (you can track the progress in bug 523920). This should happen very soon and once we’re there, we’ll let you know and start using Verbatim to help you manage website localization.
Last half a year was amazing for me. I joined Mozilla Corp., reignited my participation in Mozilla project, worked on several exciting projects and it’s an amazing coincident that this half a year is almost over exactly now, when I’m sitting at Whistler, with 400 creative, innovative people and we’re all listening to Mitchell Baker speaking about our open source roots, and the trunk of the project being about “Human interaction with the Internet”… It’s thrilling.
There are several projects that I’m trying to launch related to Mozilla, I will be speaking about them during the Firefox Summit, and I will blog about it once the summit people share their feedback on it.
One of the elements of Mozilla ecosystem that has been super exciting for me is localization and internationalization. And the great news is that there’s a lot happening around L10n in Mozilla these days. We’re improving the l10n build system, l10n processes, but there’s one very visibly missing area in L10n land – tools. We finally have a project that is going to target this – Verbatim. Verbatim is a project aiming for a webtool that will allow localizers focus on the translation instead of having to spend time trying to figure out how to do the actual translation. If you’re in Whistler, we have a presentation on Verbatim today 🙂
But that’s not all! There is one project that was something I’ve been coding over weekends and while at the airports and on flights and in many other places. It’s inspiring and challenging for me enough to keep working on it over evenings, nights, sundays, and holidays which I have to apologize for to my girlfriend 🙁
Yesterday, I tagged stage2 of the project which means it’s more or less ready to go public and be reviewed by you all, and has a chance to explain itself to the level that may attract others to join me and participate in it.
The project name is Silme, and it is a python localization library that has been structured in a multi-abstract level model. Thanks to it, the library works natively with DTD, Properties, GetText, can work with XLIFF, L20n, ini files and any other l10n data format. Beside, it can work with files stored on drive, in SVN, in CVS, in MySQL, SQLite and virtually any other data source.
On the other hand it’s extensible and flexible enough to work in web app, command line tools, or GUI tools. It’s not only for Mozilla, as any other project can build apps on top of this library. Be it Songbird, Miro, Seamonkey, Firefox, Thunderbird, Addons.mozilla.org, Flock, GNOME, KDE, etc., etc.
If you find above description interesting, please read the original announcement and join the project. It’s totally open and very alpha. If I try to express where I am with it, I think I just passed the mark when the code self explains the idea. Nothing more.
Beside, it’s a lib. Unless people like to localize directly in python env, we need apps on top of it. And it’s at least as challenging as a library itself, but if you want to write a localization app, I think it’ll be easier if you will be able to focus on UI and features of the app, and minimize the work on sole entity operations that Silme does cover.
So… here we are. I’m confident I will keep working on it, and some small simple apps will be created for my own use, but it’s very, very far from being useful, and need a lot of work to get there. Ultimate goal will be to work smoothly with an exciting project that is being mindcrafted in Mozilla these days – L20n.
Please, remember that it’s a hobby library for now, a product of several years of work as localizer, countless nights spent with my friends from Aviary.pl – Polish Localization Team, and the creative environment of Mozilla project. It’s up to you all what will happen next with it 🙂 So mail me, or reach me on IRC if you want to discuss things about possibilities that Silme opens!