Categories
main mozilla tech

Pontoon – more details and 0.2 plans

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. 🙂

Categories
main mozilla tech

Pontoon – introduction

One of the three core types of content I described in my previous blog post is what I call rich content.

This type of localizable content has certain characteristics that are very different from the common UI entities. Starting from different goal (to provide information), through different size (long sentences, paragraphs), different l10n flexibility (needs ability to reorder, extend, shrink long texts) to much richer syntax (sentences can be styled with HTML, CSS).

Almost a year ago I started playing around some type of a web tool that would allow for WYSIWYG style localization for the web, later picked up by Ozten in his blog post about potential use cases, and finally landed on Fred Wenzel’s mind as he decided to give this idea a try. He ignited the project, and created first iteration of the UI, where I joined him, and added server side.

Now, the idea itself is neither new nor shocking. Many projects were experimenting with some forms of live localization for web content but the solutions we know so far are hardly adaptable for generic purposes. Some require a lot of prerequisites, others are gettext only, and they come as black-box solution which requires you to follow all the procedures and lock your process in.

Pontoon is different in the sense that it is a toolset that allows for rich content localization with grading amount of prerequisites and varying strictness of output. It’s a very alpha mode tool, so be kind, but I think it’s ready to get the first round of feedback 🙂

Pontoon – components

Pontoon is composed of three elements:

  • client – pontoon client is an application that allows for content navigation and localization. It’s responsible for analyzing content and providing ways for the user to translate it.
  • server – pontoon server is an application that the client communicates with in order to send/update translations provided by the localizer and store them later for the website to use.
  • hook – pontoon hook is a small library that can be hooked into a target application in order to provide additional information for the client to improve its abilities.

There are various clients possible, for now we have two – HTML website as a client, and Jetpack 0.8.1 based one. They share a lot of code and they operate quite similarly.

We have one server – django based one – that can receive translations provided by the client, and uses Silme to store them into a file (currently .po), and we have one hook – for PHP – that adds special meta headers and provides simple API for modified gettext calls that gives client direct information on where the entities are located, so that the client does not have to guess.

I’ll dig into details in a separate post, there’s much more into how Pontoon can operate and what are the possible enhancements for each of the three components, but for now, I’d like to present you a short video of Pontoon used to localize two old versions of our website projects.

The video is a coffee-long, so feel free to grab one and schedule 6 minutes 🙂

urls used in the video:

notes:

  • the locale codes that are supported by the server are usually ab_CD, not ab – for example de_DE, fr_FR etc.
  • pontoon does not support multiple users at the same time, so you may observe strange results when many people will try it at the same time. Enjoy alpha mode!
  • “0.1 alpha” means – I’m looking for feedback, comments, ideas and contributions 🙂

Categories
main tech

Reading list for fellow Warsaw TEDxers

Lori and Noam asked me to share some books to read that could get them deeper into the rabbit hole. Here we go:

There is also Mozilla Library with a lot of slide decks on Mozilla project.

And two more decks on Mozilla:

Hope that’s a good start 🙂

Categories
main mozilla tech

The new era of software localization is approaching

Those of you who follow the localization tales of Mozilla project know the mythical “L20n” concept introduced by Axel Hecht over two years ago.

Since then, we spent zillion hours thinking about this concept and maturing it. Every time I was working on any project – be it Verbatim, Firefox, Getpersonas, AMO, Pontoon or Jetpack L10n – I was telling myself how much better it could be, had we have L20n in place. Easier for localizers, easier for developers, easier to maintain. Did I tell you it’s faster as well?

Then, last summer, Jeremy Hiatt joined us for his summer internship and spent 3 months working with Axel and me on pushing some of the implementation concepts forward.

With the end of summer, we got again busy with upcoming Firefox 3.6 release and put L20n again in coma…

Until now.

Without getting into much detail, I can tell you that right now we’re preparing for the next, and hopefully, ultimate push toward L20n 1.0. Over the next few months you will have more than enough of blog posts and papers and demos and examples. We will be asking for feedback, presenting the syntax, experimenting with toolchain, building extensions, and slowly preparing to introduce L20n into Gecko platform and our websites.

We believe that L20n is the most crucial piece of Mozilla localization story, aligning perfectly into our core values. Mozilla is in the best position to push the localization experience to the new level, finally enabling software to speak in the natural language of the reader. Gettext is awesome, but aging technology, properties/DTD that we use in Gecko today, are limited, tens of proprietary formats (used by projects like Qt, Webkit, Apple, Nokia) just replicate the same concept. L20n shifts the paradigms of what localization is to the new level. It’s going to be big, and we hope to get a lot of people involved.

Next week I’ll start with the first demos.

p.s. those who like to read the code, may find first bits of fresh code in my hg repo. Yummy! Isn’t it? 🙂

Categories
main mozilla tech

The world stands on its head

Unrelated opening
Every one of us has those moments when you find yourself old. Even teenagers do, when their younger friends teach them how to use the latest hype du jour on the Internet. I, for one, feel profanely old today, and kind of hardly accepting the reality of the approaching “middle age” thing.

“It’s rare that you see an artist in his 30s or 40s able to really contribute something amazing.” said Steve Jobs. Thanks Steve…

But that was not supposed to be about me becoming 26. It was supposed to be about another miracle that nobody expected to ever happen. Or at least, I’m still genuinely surprised whenever I see the dream of yesterday becoming reality of today.

So, maybe for many of you it will not come as anything striking, kind of  “yea, Poland has always had good community and Firefox market share is above average”, but for me it’s an impossible coming real.


Down to the point
Ranking.pl just published another round of their browser stats for Poland. According to those, Chrome just passed 3% of market share in Poland. It is a real deal. I remember Firefox having 3% – in December 2004, month after 1.0 release, after 6 years of work, Mozilla based browser reached 3% of market share. But that’s not only that! Opera just week ago gained a point and reached 10% of market share in Poland! I remember it – May 2005 – Firefox 1.x at 10.2%.

And having that, we have also Firefox breaking 52% of market share in Poland! 52% is the high and it is clearly an outstanding result that heavily influences the way we should think about Internet in Poland. It’s an amazing award from the users to the Mozilla project and, especially, a group of people in the Aviary.pl team and those working on Mozillapl.org community forum.

In result of all of this, Internet Explorer in Poland, the one web browser that dictated, for over 10 years, how the web looks like, ten years in which the Internet has been shaping up, this web browser has now only 33.38% of market share. One third. Vox populi at its best.

We have 2/3 of users using modern web browsers, and if we add IE8 here, it gets to 3/4, 75% of users. IE6 is used by less than 9% of users and it means that, for example, just by watching the stats, companies will do better by investing in making sure their website works with Opera than checking it in IE6!

Hard to express this feeling. It’s amazing that we can see modern browsers not cannibalizing each other, but sharing the market share gains.

Wake up, revisit the web today, it’s party time!
Think of what’s possible because of that. We have the Web today that means something different for the users and web authors. They can slowly start to ignore IE6, and that is a real deal for everyone who does the web hacking. Users can utilize the powerful webtools, banks can invest in reach online banking, people are also free to choose their operating system because their online experience wont degrade because of that. People can choose out of four major web browsers that are in a healthy competition or they can choose from one of the less mainstream, but still high quality ones like K-Meleon, Camino, Seamonkey, Arora, Epiphany… Over 52% of Polish internet users can change how the websites look via extensions, and how their browser works and what they see via adblocks, flashblocks and others. They can influence their experience and by vast majority they chose their web browser by themselves, understanding what they are doing and knowing that they have a choice now.

I’m pretty sure that this is true not only for Poland, but for other countries. Hungary, where Firefox is at 52%. Latvia with Firefox at 50%,  Bulgaria, where Firefox is above 45% and just passing by IE. Ukraine where Opera has 34% and Firefox has 26%… and I’m still talking about just one region, while the rest of Europe is going through the similar process.

Five years after Firefox 1.0 has been released, we have a different web. The web which has new challenges and opportunities. We have to raise to them and I believe that the next 5 years is going to be super exciting!

Categories
main mozilla tech

Silme is getting ready for 1.0

Not today, maybe not tomorrow, but Silme library is getting ready for its prime time.

I’m currently working on Silme 0.9 which is shaping up to be a release where we packed up all the lessons we learned while working on the project for the last year and a half. It’s going to be the last release with non-frozen API before 1.0 so we have to be sure we’re happy with 0.9 before we release it.

Then, we’ll have Silme 1.0 which is a goo moment to revisit the name of the library. I know native english speakers may find it a good idea 😉

Categories
main mozilla tech

Express Mozilla

Recently I asked Mozilla for new set of business cards. The overall concept of paper cards you give to people is becoming less appealing and I definitely like the “google me” approach, not only because that’s what we really do to find someone, but also because it expresses Google’s vision and theme.

Since I was able to choose the back of the card, I started wondering… How to express Mozilla theme? How to express Mozilla?

After a few hours of trying and failing to produce anything that would even remotely give me the feeling, I went to Mark Surman’s blog for inspiration and found his blog post about visualizing Mozilla in one sentence with wordle. *Click*

Then it went fast. Took similar approach, copied all comments with suggestions, sorted them, gave to wordle which produced this. From there, I used Gimp to resize it and boom, done. Let me know what you think 🙂

Business card - front
Gandalf's business card - front

Business card - back
Gandalf's business card - back