My vision of the future of Mozilla local communities (part 1)

I know, bold title.

Since I decided to start a blogging week, I see no reason not to start with a major topic I have been working on for a few months now.
  The future of local communities in Mozilla is made of two parts – Social and Technical.

I’ll start with the former, and it’s going to be a long one – you know me.

Notice: This is the way *I* see things.  It is not representative of the l10n-drivers, the SUMO team, the QA team, or the marketing team.

But, it represents the progress of thinking about local communities we’re making right now. It is different from what you saw some time ago, and it may change in the future, it does not represent any kind of consensus, and my peers may disagree with me on some of my points.

A little bit of history

Historically, and by that I mean years 2000-2004, when first strong local communities were constituted, it was centered all around localization.  The localization ecosystem had several characteristics.

  • finite number of projects
  • core of any local community were localizers
  • each product had limited number of strings
  • each product had a release cycle not shorter than 1 year
  • we had limited awareness of localization importance among Mozillaians

Another specific thing about that time was that Mozilla as a community/project started growing faster than Mozilla as an organization.  By this, I mean that people started participating in Mozilla all over the world, sometimes faster than the organization could predict, know about, understand and harness.  It was very independent.  What happened in Poland, was very different from what happened in Italy or U.S. or wherever.  At the days when Mozilla was formally organizing, few people at the “central project” could predict what was happening across the world.  At times, it was very frustrating to them…things were happening so fast, beyond the organization’s control.

As a motivated community, the Internet allowed us all to download the early Mozilla products, and gave us something to gather around.  We did and it was amazing.  People started fan sites, discussion forums, and “news-zines”,  The most determined ones started seeking ways to bring Mozilla to their country.  The most natural way to participate was to localize the product, and by localize I mean various actions that make the product more suited for the local market – translating, changing defaults and adding new features or modifying existing ones.

All this work was usually targeted in two directions – toward local markets, where those early community leaders were building local branches of Mozilla, and toward the Mozilla project to fit the concept of local communities, and the fundamental goal of internationalization of a project into the core of our project culture.

Thanks to that work in those days, today we can say that Mozilla is a global project and we recognize localizability as one of the aspects of Mozilla approach to projects.

But since those days, many things has changed. What was good by that time, may not be enough today.

Growth and Variety

Fast-forward to today:  Mozilla today as a meta-project is producing much richer set of projects/products/technologies than we ever did.

We create many websites of various sizes.  We have blends of websites and extensions (like TestPilot).  We have webtools like Bugzilla, addons.mozilla.org.  We have products likeFirefox, Thunderbird, and Seamonkey. We have a mobile product with higher screen space limits.  We have experiments that are introducing new level of complexity for localization like Ubiquity or Raindrop.  We have more content than ever.

The point is this: local communities represent Mozilla through a diverse set of mature products, early prototypes, innovative experiements, one-time marketing initiatives, and documents like our Manifesto that will live forever.  This means that the work flow has changed dramatically since the early days.  Different projects with different or changing frequencis are becoming the standard for communities to absorb in a new differentiated and highly competitive marketplace.  And, our communities need to evolve to respond to this.

Each product has different characteristics and the local delivery through l10n and marketing means a very different type of commitment.  It now requires different amounts of time and energy, different types of motivation, and different resources.

Additionally, we’re also more diversified in the quest to fulfill our mission. We have regions where modern web browsers constitute vast majority of the market share, where governments, users and media understand the importance of browser choice or privacy and Internet is a place where innovation happens. But, we also have places where it is not the case. Where incumbent browsers are still the majority, where the web will not move forward in the same way it did in the past, where the latest technologies cannot be used, where privacy, and openness sounds artificial.

Recognizing this shift is important factor to allow us to adjust to the new reality where local communities have to expand beyond just localization.  They must become local Mozilla representatives who are experienced in evangelism, marketing, localization, software development, and all other aspects of Mozilla.  We need to get more local and grow beyond the responsibilities of our local communities in the past.

In the next part, I’ll cover some ideas for the future…

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

Update on Verbatim

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.

Silme 0.5 released

silme logoProjects need releases. It’s important. It’s like a birthday for a project – they get a milestone to mark the progress.
On the other hand we have developers. They need unlimited time and no deadlines. When one meet another, we have an interesting arm-wrestling battle between those two, but ultimately one has to obey to the Oath of the Bazaar, if you know what I mean.

Release

So, here we are, Silme was asking for a release for long enough and I postponed it over and over so it’s time to make the cut. Today, I’m proud to announce the very first official release of Silme – python l10n library. Silme has been announced to mozilla.dev.l10n long time ago, and since then it has been continuously developed in a small, but quite interesting project structure with support from Adrian Kalla, Stefan Plewako, Ricardo Palomares, Staś Małolepszy and management guidance from Seth Bindernagel.

It’s very, very hard to explain Silme concept to those who never tried to work on localization development.

Let me try: It’s like a DOM API for localization.

Works? Probably not… Well. Let me try the descriptive way. Silme is a toolset for a developer who wants to work on localization tools. It can read localization files, it can write them, it can modify them, it can search through them, it can process them, merge, split, localize and help you get some statistics out of the localization files. It probably can juggle them, although support for this is rather experimental.

Continue reading Silme 0.5 released

Seth w Czaterii w środę

W środę, o godzinie 16 gościem Czaterii (Interia.pl) będzie nie kto inny jak Seth Bindernagel, menedżer zespołu l10n-drivers w Mozilli. Seth zajmuje się zarządzaniem całym procesem internacjonalizacji i lokalizacji na (już) 63 języki produktów Mozilli (w tym Fennec, Thunderbird, Firefox).

Seth jest duszą towarzystwa, facetem, który choć nie ma żadnego doświadczenia technicznego zajeżdza innych, żeby pomogli mu zrozumieć Mercuriala (ostatnio sam stworzył pierwszego patcha!), ogarnia cały zespół, stworzył pierwszy zestaw celów kwartalnych w historii prac nad L10n i stara się otworzyć Mozillę na współpracę z innymi projektami lokalizacyjnymi. Można z nim spędzić 15 minut i rozwiązać najważniejsze problemy, albo siedzieć do 5 nad ranem w siedzibie w Paryżu przygotowując 6 nowych lokalizacji, które zostały dodane w Firefoksie 3.0.4.

Poza tym jest doskonałym kompanem do kufla piwa i pierwszą osobą w historii mojej pracy w Mozilli, która wyciągneła sporą ekipę do klubu 🙂

A, no, i… no i zupełnie przypadkiem jest menedżerem moim i staszka oraz opiekuje się adrianem podczas jego stażu w Mozilli Corporation. 🙂

Jego największym marzeniem jest dołączyć do Polish Mafia i właśnie odwiedza warszawę z okazji Internet CEE.

Punkt 16:00, środa, czateria. Do zobaczenia 🙂

Slides from Silme talk

Just got back home after

Expedia screenshot
Expedia screenshot

wondering if that gives me the “longest trip home” award from EuMozCamp crew. William, beer will do this. 🙂

The event was great, I’ve been at so many mozilla events during last 8 years yet beyond “normal” awesomeness of those events, once againt some elements of what happened were a big surprise (Mix group – you know who you are) 🙂

For now I’m attaching Silme talk slides, for those who couldn’t make it to the talk. (it’s also the very best documentation we have so far):

It requires tengwar-gandalf font to display some elements, but is pretty readable without it.

If you have any other questions regarding silme, jump in on #l10n channel, silme folks are there.

Right now I’m working on logging system and then PEP08, API freeze, documentation and then release! 🙂

Silme progress

First update after public announcement. During last week, Silme received several minor stability patches in trunk and got initial support (patches [1], requests, feedback on API) from several developers including Stefan Plewako from Aviary.pl and Flock projects, Adrian Kalla from Aviary.pl and an intern in Mozilla Corp., and Pike himself 🙂

Beside of that I spent some time during Firefox Summit on talking with people of Pootle/TranslationToolkit fame to identify potential problems that they faced. It was extremely supportive for me and gave my major take away is that if I want to reach my goal of having one, common abstraction layer for l10n objects I have to merge two very different concepts – single locale files (like DTD, properties, ini) and multi-locale files (XLIFF, GetText, tc).

Multilocale branch has been ignited to address this. I already did several tests and it seems that I will be able to support both models in one API without making both feel like hacks.

Pike raised another concern, that I tried to keep for later which is a concept of entity/l10nObject processing. Initially I assumed that it’s a minor topic, and on this level of abstraction I assumed that leaving the entity values unprocessed is OK for now. Unfortunately, especially with L20n being the next Big Thing for Silme, entity processing becomes very important and has to become a legimate element of the library skeleton.

I started early hacks of l20n.py format parser leaving my brain in free conceptual thinking mode and waiting for Pike’s time to talk about grammar inconsistencies.

Last big thing to come is a soon to happen switch from svn repo on my server, to shiny new hg.mozilla.org. This requires me to spend a few hours on svn-to-hg migration tools, but should help with later branching and support easier collaboration between many developers.

Current roadmap is pretty dense for stage3, and may be latter splitted, but does not currently involve work on end-user oriented apps like a webtool. Once I have this two major restructurizations ready (multilocale/pre-processing), I’ll get back to providing proof-of-concept tools. We’re of course looking for more developers so let me know if you’re interested 🙂

Silme goes public

Mitchell Baker speaking
Mitchell Baker speaking

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!

ZipWriter hits trunk

 Woho! Bug 379633 is fixed!

ZipWriter just has been included into trunk.

You may say it’s a small thing. Who cares? Opera, IE, Safari lives without it and you can rarely see users complaining that their browser lacks scriptable zipwriter, right?

Hah! Mozilla is a platform, not “a browser”. It *does* influence any effort towards Xul editors, Mozilla IDE’s and… L10n tool 😉