One year with the Firefox OS L10n framework

For several years now, the Localization team at Mozilla has been working on a modern localization framework based on the following set of principles and architectural choices that we consider fundamental for the next generation multilingual UI’s.

  • Principle 1: Localizers should be in control of translations. The localization framework should be grammar-agnostic, whether it’s about grammatical cases, genders, or tenses.  Localizers should be able to use the entire expressive power of their language to author translations which create the best experience for the users.
  • Principle 2: Language fallback should be robust and graceful. When a translation is missing or broken the user should be presented with a translation into the next best language, given their preferences. There might be more than one fallback language.
  • Principle 3: Translations should be isolated and asymmetric if needed. The source language of the application should not define structure of the translations (e.g. the lack of pluralization in English should not make it impossible for other languages to use plurals in a given message).
  • Principle 4: The framework should embrace the Web. Localization should react to changes of the runtime environment (e.g. resizing of the app’s window, change of orientation, incrementation of a number of unread messages) and should add as little overhead for developers as possible.

Exactly one year ago, on April 8th 2014, Stas landed the initial rewrite of l10n.js – the localization framework used in Firefox OS. This set us on the path to enable the vision of a modern localization framework driven by the design principles outlined above.

Since then, we have a dedicated, two person team, working full time on advancing this vision and learning how to improve upon it in the process.

The full year of work has resulted in many important features being developed for the platform, including:

  • Language packs: Small packages that decouple language resources from the application allowing us to extend language coverage dynamically when users request it, even after the device has been already released on the market.
  • Pseudo-locales: Programmatically built language resources that emulate different languages allowing developers to test their applications for any multilingual problems before localizers have time to provide translations
  • Asynchronous l10n: Major shift away from using synchronous API’s for retrieving localizations from JavaScript. This results in clean, condition race free code that is easier to write and maintain. It also sets us on the path to enable runtime language fallback.
  • Security: While not traditionally big thing in localization, having an open runtime ecosystem of localizations requires us to make sure that translations cannot accidentally or maliciously impact our code and break it.
  • Error reporting: We’ve made major advancements to help developers and localizers find potential errors early. We reject malformed strings, report missing strings and duplicates, recover from exceptions in our code.

A couple weeks ago we have finalized the work scheduled for Firefox OS 2.2 and begun development for the next major release. The clean and reliable API has given us a good base to start implementing the remaining components of the vision behind L20n in this cycle.

For the current cycle we have scheduled:

  • DOM Overlays: Ability for a localizer to use HTML syntax in their translations and also provide whole localized DOM Fragments to be merged with developer provided skeletons via a secure algorithm. This increases the system’s security and empowers localizers to provide better translations.
  • L20n format: One of the last remaining pieces of the puzzle is the new file format that is designed to store localization data like multivariant strings, entities with values and attributes and variant selectors. This will allow us to start introducing new features to the system that are impossible using the current data storing formats.
  • Lightweight l10n contexts: Together with the whole platform, we want to make a heavier use of the concept of multiple small localization contexts to replace the single-context-per-app approach. It will improve performance and isolation resulting in easier maintenance.
  • API 3.0: Our current API still contains remaining pieces from the old, synchronous API that we’d like to remove. Together with lightweight contexts and on the path to WebAPI we will want to make sure to organize our events, methods and objects to fit the design of other W3C APIs.

With ever-growing understanding of the environment and how the web stack matures, we are also getting close to start extracting the core of our framework to offer for standardization, and that’s an exciting opportunity to fulfill the vision of both Firefox OS and L20n and bring the modern localization framework to the whole web, making it more multilingual and global.

Stas & Zibi

Reducing MozL10n+Gaia technical debt in Firefox OS 2.1 cycle

Firefox OS is becoming a more mature platform, and one of the components that is maturing with it is the mozL10n library.

In 2.0 cycle, which is already feature complete, we introduced the codebase based on the L20n project.

The 2.1 cycle we’re currently in is a major API cleanup effort. We’re reviewing how Gaia apps use mozL10n, migrating them to the new API and minimizing the code complexity.

Simplifying the code responsible for localizability of Firefox OS is crucial for our ability to maintain and bring new features to the platform.

There are four major areas we’re working on:

  • mozL10n.translate – with introduction of Mutation Observer, we want to phase out manual DOM translation calls.
  • mozL10n.localize – this function is extremely hard to maintain and does enough “magic” to confuse devs.
  • mozL10n.get – manual l10n gets are the biggest cause of bugs and regressions in our code. They are synchronous, not retranslatable and badly misused
  • mock_l10n – many apps still use custom MockL10n class in tests, some even use real MozL10n code in tests. This makes testing harder to maintain and develop new l10n features.

We’re working on all four areas and would love to get your help.

No matter if you are a Gaia app owner, or if you’ve never wrote a patch for Gaia. If you know JavaScript, you can help us!

All of those bugs have instructions on how to start fixing, and I will be happy to mentor you.

We have time until October 13th. Let’s get Gaia ready for the next generation features we want to introduce soon! 🙂

Localization framework changes in Firefox OS 2.0 and plans for 2.1

On Monday we branched Firefox OS 2.0 which is the first branch to contain a new localization library that has been developed by my team.

What landed for 2.0

Library landing and reactions

The library itself landed exactly two months ago. In order to avoid any potential regressions, we’ve put a lot of work to ensure that it matches the behavior of the old code that it replaced. I believe we can now claim a success, because with two months of baking on master we didn’t get any serious regressions that would require us to change anything in our code.

The new library comes with a lot of unit tests and is stricter than the old code, so we had to fix a couple of small bugs where code has been passing an object instead of a string to our API and one related to one test failing on old machine with too little memory. That’s been simple to catch and fix.

We also got a few requests to improve the console log output and error output that the library produces in order to simplify developers work.

New features


The major new thing that Stas completed in this cycle is the support for pseudo-locales. While this could be done with the old code, it was significantly easier with the new code thanks to some architectural decisions like separation of buildtime and runtime code.

Pseudo-locales allow developers to evaluate their UI’s localizability against an artificially generated english-like locale to catch any hardcoded strings. It also generates right-to-left locale for testing purposes. Before that, we’ve been relying on often outdated localizations that we kept with our source code. Now we can always test against fully generated pseudo localization.

mozL10n.once wrapper

Another new feature is the introduction of mozL10n.once wrapper. We identified that a lot of Gaia apps are waiting for localization to be ready before they initialize themselves. That makes sense since a lot of those apps want to work with UI and localized strings, but the challenge in asynchronous world is that you never know if your code has been fired after or before mozL10n is ready.

Because of that, simply setting an event listener and waiting for window.onlocalized event is not enough (what if it already has fired before your code was launched?). Developers were using mozL10n.ready wrapper, but the problem with that is that is has been designed to re-fire on reach retranslation which meant that your init code has been fired every time user changed language. That’s not an intended behavior, but admittedly a rare one. What’s worse is that we retained all the init code in memory.

Now, with mozL10n.once we can safely initialize code when l10n resources are available and free the memory right after that.

Uses of l10n API

On top of adding new features, we’ve been mostly busy investigating and improving how the default Firefox OS apps interact with localization API. That led to multiple design decisions including introduction of the described above mozL10n.once.

Once we got the new wrapper, we started analyzing bootstrapping code of each and every Gaia app and updating it to use the proper L10n API. Twenty two fixed bugs later, we’re done!

It’s incredible how much we were able to accomplish in just two short months. We feel much better right now about the bootstrap process and we have a clear picture on what we want to do next.

Use new navigator.languages API

Thank’s to Mounir’s work on navigator.languages API and implementation we were able to remove the only Mozilla specific API in mozL10n. That means that mozL10n should work in any modern browser now!

What we’re working on for 2.1

2.1 will be as ambitious for us as 2.0 was. The hashtag of the work is still #cleanup, but now it’s much more about modifying our API so that it’s more transparent to developers and requires less manual code in their apps.

entity.attributes become node attributes

First thing we were able to land is the transition away from assigning l10n entity attributes as node properties. We cleaned up the hacks that have been used and switched to entity attributes as node attributes.

DOM overlays

Next, we have one leftover from the previous change and that is an infamous innerHTML. We currently don’t have any clear way to inject localizable DOMFragment in Gaia. Fortunately, we have one that fits perfectly in L20n. It’s called DOM Overlays, and we’re working on getting them into mozL10n. That will allow us to further secure L10n API and remove any innerHTML calls.

Mutation Observers

Majority of localizability code in Gaia apps is related to localization of DOM nodes. With Mutation Observers we will be able to significantly reduce the amount of manual calls to mozL10n API and make majority of calls be just about settings data-l10n-id attribute with Mutation Observers doing the rest.

Not only will it reduce the use cases of mozL10n.translate and mozL10n.localize, but I expect to be able to cut by over 50% the number of manual mozL10n.get calls and manual operations that are currently used to set the result of that call into the node.

Mutation Observers will simplify Gaia code, reduce the amount of bugs related to language switching and get us closer to runtime l10n API that we want to offer for Gecko.


There are still some interesting edge cases around how code boostrapping relies on particular pieces of environment. Does your code need DOM to be interactive? Does it need l10n resources to be loaded? Or maybe you need DOM to be localized? All those events happen asynchronously and we currently do not have a clean way to guard against any combination of those that your init code may require.

We’re working on a bootstrapping wrapper that will allow app developers to simply define which pieces of environment should their initialization be blocked by.

That will further secure the app boostrapping process and limit the risk of condition races.


One part of the bootstrap puzzle is how we fire event when certain bootstrap things happen. Right now we fire window.onlocalized event that means that mozL10n resources have been loaded, but doesn’t tell us anything about if document’s DOM has been localized (and is ready to be displayed).

With the work on the new event, we’ll be able to remove the global one, and settle on triggering on event on document and one on mozL10n object. Did I tell you that we’re still cleaning up? 🙂

Move mozL10n to document

We originally placed mozL10n object as a property on navigator object. Because our API is transitioning to be per-document, it becomes an inconsistency and an obstacle to keep mozL10n API on navigator object. It hardly fits the world with iframes, ShadowDOM and HTML Templates. We’re going to move it to document.mozL10n.

Remove inline l10n

One of the built time optimizations that we have in Gaia is called inline l10n. We store some portion of the l10n resources within each HTML file in order to localize the UI before it is displayed. It’s not very scalable, costs us memory and performance, but historically helped us prevent flashes of untranslated content. We hope to be able to remove this optimization in this cycle which will significantly simplify our internal code and give us some small memory and performance wins.

Is this L20n yet?

While we introduce L20n concepts into mozL10n, we’re still pretty far from being able to say that we support L20n API in Gaia. There’s a lot of work to do and it’s going to be a challenging work as we port L20n concepts to Gaia, and merge lessons we learned while working on Gaia into L20n spec and implementation. What we hope to end up with is a single codebase used in Gaia and offered to web developers.

It’s an exciting journey and I’m so happy to make Firefox OS’s localizability the most modern among all OSes!

Wymyślanie Sieci na nowo

poniższy post jest tłumaczeniem postu Mitchell Baker “Reinventing the Web

W zaledwie 20 lat Sieć stała się jedną z najważniejszych infrastruktur współczesnego życia. Dziś dostrzegamy szansę, by Sieć, przez kolejny skok, stała się jeszcze bardziej użyteczna, przyjemniejsza, by otworzyła nowe szanse przed biznesem i mogła lepiej służyć celom społecznym.

Wyobraź sobie bogactwo i wolności Sieci płynnie zintegrowane w urządzeniach mobilnych. Wyobraź sobie, że to wszystko działa i to działa niezależnie od tego czy używasz aplikacji do specjalnego celu czy przeglądarki by odkryć swoją własną drogę.

Wyobraź sobie, że pobierasz aplikację i ona działa na wielu urządzeniach, niezależnie od jakich producentów pochodzą. Wyobraź sobie, że możesz wybrać czy chcesz kontaktować się z dostawcą aplikacji bezpośrednio czy przez Apple, Google albo Microsoft.

Wyobraź sobie, że masz wybór tego kto kontroluje Twoją tożsamość. Logujesz się na stronę i wszystko co zrobiłeś w sieci staje się dostępne dla świata? A może logujesz się i tylko to co Ty uznasz za publiczne staje się dostępne dla świata?

Wyobraź sobie poczucie bezpieczeństwa kiedy jesteś online – kto cię śledzi, kto sprzedaje informacje o tobie, kto cię chroni i jak możesz ochronić siebie sam.

Wyobraź sobie, że rozumiesz Sieć, poczucie kompetencji by robić rzeczy, by zmieniać te które istnieją i tworzyć kolejne, które spełniają twoje potrzeby. Wyobraź sobie, że uczenie się Sieci jest fajne i wykracza poza świat programistów obejmując zwykłych ludzi.

Mozilla tworzy ten świat. Mamy jego wizję, architekturę, technologie i plany produktów. Te produkty tworzymy właśnie teraz. Mamy zasoby finansowe, by zrealizować te cele. To ekscytujący i bardzo produktywny okres. Spójrz w nasz raport roczny, aby zobaczyć co zrobiliśmy i co jest na horyzoncie. Dołącz do nas, by razem budować ten świat.

L20n – what to add before 1.0

As I mentioned in my last blog post, we’re narrowing down the list of features that we’re willing to consider for inclusion into L20n 1.0 prior to its freeze and release.

Here’s the list:

Name Driver Target Milestone
difference between entities/macros from the resource and variables provided by the developer stas 1.0
difference between public and private attributes/entities gandalf 1.0
default values for hashes/arrays gandalf 1.0
globals namespace gandalf 1.0
import command gandalf 1.0
conditional blocks gandalf 1.0
value as ID (gettext mode) stas ?
string as ID (simple gettext mode) stas ?
key as string stas ?
relative referrals gandalf 1.0
dependency list gandalf 1.0
computer readable comments gandalf ?
multi-language resource files gandalf 1.0
Switch expression gandalf ?
attribute indexes stas 1.1
nested indexes gandalf 1.0
Expression errors gandalf 1.0
workflow gandalf 1.0
resource file syntax stas (support from: kaze, fantsai) 1.0
forbid referencing public entities stas ?
Macro attributes gandalf ?

All of those features represent some feedback item we got and we’re trying to evaluate it ASAP in order to finalize the parser/interpreter couple and work on the workflow toolchain for L20n 1.0 next.

If you want to discuss any of the items, join our localization-20 group and start a new thread for each feature.

If you want to add a new feature to be considered, start a wiki article in L20n/Features namespace.


L20n, feedback round

Last months have been extremely busy for L20n. I basically focused 100% of my time on the project, driving simultaneously multiple aspects of the project to completion.

L20n is a very complex project, not only technically, but also socially. Localization technologies have always been of minor importance for most of the software world so we never really develop technologies that could anyhow match the complexity of the human languages. The most common mindset, even among those who have to deal with localization, is that you can get “most of the stuff” done with simple key-value pair lists where English string is a key, and target localization string is a value.

It’s a bit like claiming that most of Firefox front end could be written in BASIC.

L20n is on the other side of the spectrum. It brings the localization technology to the new level, and in result breaks almost all paradigms of what people are used to do with l10n and breaks how it “usually works”.

In result, the major challenge when helping someone learn what L20n is, is to convince the person that she has to stop trying to match its components to the concepts the person knows from other l10n frameworks. It will just not do.

The reward is that once you get beyond the game of “how does L20n relate to Gettext / DTD / Properties?” people get into the “Oooh!” moment and what follows is a litany of ideas of what would be nice to have if we are about to reinvent the localization technologies. I love it 🙂

As many project leaders before me have observed, getting close to a target milestone always turns you from a visionary leader that sets the goals and drives them to completion into some sort of a butcher that says “no” to everything except the most crucial additions in the fear of never ending cycle of adding more and more without getting your project released.

So here we are. For the last month we’ve been working pretty close with several projects – Boot 2 Gecko, Jetpack, Firefox – and we got plenty of feedback, from minor additions to major suggestions. Now is the time to narrow down the list of changes we’re ready to incorporate for 1.0, close the list, work toward the release, and push everything else back to L20n:Next.

In the next blog post I’ll list the proposals and the status of the discussion on those.

Mozillians on Digital Freedom

Matjaz wrote a blog post on his presence in ACTA debate in Slovenia. With multiple interviews, shows and a speech at a government organized roundtable discussion, Matjaz became an ad-hoc representative of our collective in front of the audience that we rarely interfere with. That is just awesome Matjaz! Congratulations, dude!

But it’s not only Matjaz! Mozillians have been active all around Europe in the public debate on ACTA. Me and Staś have been both helping the civic NGO side on ACTA front in Poland, Otto in Estonia, and Bogo in Sofia, just to mention a few.

Three things that strike me about this are:

1) The whole generation of Mozillians who gained their experience by shaping local Mozilla communities in Europe are now becoming respected public figures precisely because of what we are doing at Mozilla project. For years we’ve been responding to what was needed, adapting to the changing landscape on the cross of the local and global Web, growing up to roles that had to be filed. It’s amazing to see that our experience and cred gained by fighting for the Open Web is now placing us in the spotlights when the future of the Internet is being debated.

2) We all seem to intuitively build our positions on a small set of principles that we wrote just a few years ago.
I remember the time when Gerv has been driving the conversation at FOSDEM trying to isolate the limited set of statements and principles that unite us, Mozillians, and I even remember voices questioning the need for such a document arguing that we were successfully able to raise and grow our project without it.
These days, the very first thing that we do when we face something that we intuitively feel is wrong for the Internet, is that we cross check it against the Mozilla Manifesto.

We are united under this manifesto, it does work as a written summary of what we believe in and now it serves us as a point of reference when we face proposals that are not in line with the Internet that we want to see. Just take a look at Polish Mozilla Community position on ACTA, or read Matjaz’s speech.

It  grows far beyond what we originally expected and everyone who worked on this document should be proud now. I certainly am!

3) As individuals, but also as representatives of Mozilla project, we are being asked to speak, because people want to know what Mozilla thinks. It’s important. Like in all other debates that we took part in, web standards, browser wars, web video formats or privacy, Mozilla has a unique role and it’s fundamental for us to walk this thin line of subtle balance that we aim for with our hybrid nature. I’m particularly proud to read Mitchell’s words and also journalists commenting on our statement in a way like the following:

Essential statement on ACTA by Polish Mozilla Community
It’s worth pointing out, that the community’s position is very rational, calm and stripped of the emotions that are driving most of the conversation these days.
Polish PM, Donald Tusk, has said that Poland will not ratify ACTA if the there will be any doubts, and this statement by the community clearly presents those that are of vital importance for the information society.
The statement written by the Mozilla community in Poland is important for yet another reason. Its authors are not connected to any market player. Mozilla Community is not an NGO or political organization. Usually, Mozilla and its community do not comment law related topics.
Those are the people that usually avoid law related topics focusing on their great, a bit crazy vision.
Apparently what has happened, made them feel they have to speak up.

In cases like SOPA in US or ACTA in Europe, Mozilla DNA that has shaped all of us, is being injected and influences the debate in a profound way.
The same vision that has shaped Firefox, Thunderbird, Drumbeat and tons of other projects and products, and through this influenced how the Web looks like today on both, technological and social layer, has also shaped our minds and beliefs, and through this is now impacting the public debate that is being held all around the world on the future of the Interent.

Isn’t that just amazing?

p.s. We’re igniting a newsgroup devoted to the topic of digital freedom. Join us there!

Stanowisko Polskiej społeczności Mozilli w sprawie ACTA

Polska społeczność Mozilli opublikowała stanowisko w sprawie decyzji Rady Ministrów w sprawie podpisania umowy ACTA.

Zachęcamy do zapoznania się z naszymi wnioskami.

Mozilla Europe i Mozilla w Europie

Projekt Mozilla odnosi niesamowite sukcesy w Europie. Cele jakie postawiliśmy sobie, spisane w ramach Manifestu Mozilli, są bardzo dobrze odbierane w środowisku Internautów w Europie.

Dzięki temu Mozilla ma świetne wyniki udziału na rynku Europejskim, ogromną rzeszę osób uczestniczących w projekcie, świetne kontakty z innymi społecznościami internetowymi, silne społeczności lokalne i w efekcie mamy miejsce przy stole w trakcie ważnych debat dotyczących przyszłości Internetu.

Mało kto jednak wie, że ten sukces udało nam się osiągnąć korzystając z bardzo skomplikowanej struktury organizacyjnej – w rzeczywistości istnieją trzy organizacje które powstawały w różnych momentach w odpowiedzi na konkretne problemy jakie nasz projekt napotykał (, i

Peterv ustawia pierwszy hosting dla Mozilli Europe w 2003

W ciągu ostatnich lat społeczność Mozilli w Europie pracowała wymiennie z jedną z tych trzech organizacji co niepotrzebnie komplikowało sytuację i utrudniało synchronizację.

Jedną z nich, stricte europejską jest stowarzyszenie Mozilla Europe założone w 2004 roku przez grupę aktywistów Mozilli w czasach gdy Mozilla Foundation nie była w stanie operować efektywnie na terenie Europy i szukaliśmy własnych rozwiązań pozwalających nam organizować nasz projekt.

Przez ostatnie 7 lat Mozilla Europe opiekowała się większością aktywności projektu, organizowała spotkania, wspierała konferencje, uczestniczyła w rozwiązywaniu konfliktów w społecznościach, chroniła marki, współpracowałą z prasą i angażowała się we wspieranie rozwoju projektu w różnych regionach Europy.

Od lipca 2005 miałem zaszczyt uczestniczyć w pracach stowarzyszenia jako członek zarządu. Był to niesamowity czas i ogromna odpowiedzialność, ponieważ Mozilla Europe koordynowała tworzenie się struktur i społeczności w Europie, ale też szansa na wykorzystanie mojego doświadczenia i wiedzy z Polski w skali całego kontynentu.

Mozilla jes niezwykłym projektem, ponieważ od wielu lat już stanowimy tak unikalny byt, że nie mamy od kogo się uczyć. Wszystkie decyzje, struktury, modele pracy i rozwiązania jakie mają służyć realizacji naszej misji musimy albo wymyślać całkowicie od nowa, albo adaptować do swoich potrzeb te zaczerpnięte od innych projektów Internetowych, kreatywnych firm, fundacji non-profit, albo projektów Open Source.

Dotychczasowe decyzje i kierunki działań pozwoliły nam rosnąć i adaptować się do zmian na rynku Internetowym na tyle skutecznie, że dziś Mozilla ma większe możliwości realizowania swoich celów statutowych niż kiedykolwiek w przeszłości!

To zaś pozwala nam skupiać się na adaptowaniu i rozwijaniu samej struktury projektu, tak aby przenosić udane rozwiązania lokalne na poziom globalny. W efekcie powstał projekt “One Mozilla”, którego celem jest unifikacja projektu w ramach jednej organizacji globalnej – Mozilla Foundation.

W efekcie powoli i sukcesywnie staraliśmy się identyfikować działania jakie podejmuje stowarzyszenie Mozilla Europe i wdrażać je na skalę globalną w ramach całego projektu. Wiele inicjatyw które przez lata działy się tylko w Europie pod auspicjami Mozilli Europe staje się globalne jak funkcje reprezentantów Mozilli, wolontariuszy pełniących funkcje rzeczników prasowych, uczestnictwo w konferencjach, organizacja własnych spotań w ramach inicjatyw MozCamp, współpraca z agendami rządowymi zajmującymi się Internetem i tak dalej.

Taki model organizacji pozwala nam lepiej skalować nasze działania na cały świat i pomagać innym regionom korzystać z tego co powstało w Europie, a także ułatwia synchronizację i efektywność relacji między projektem a fundacją.

Efektem ubocznym była też powolna redukcja roli stowarzyszenia Mozilla Europe na rzecz globalnej Mozilla Foundation i ostatecznie zarząd Mozilli Europe przy współpracy z Mozilla Foundation podjął decyzję o rozwiązaniu tej pierwszej i przekazaniu wszystkich inicjatyw pod auspicja globalnej Mozilli Foundation.

Ten ruch jest czysto operacyjny, nie wpływa w żaden sposób na nasze cele, działania i prace. Mozilla Europe nie zatrudniała pracowników i zarząd jest przekonany, że ta decyzja nie powinna mieć żadnego wpływu na pracę projektu i naszych społeczności.

Prezes stowarzyszenia, Tristan Nitot, oraz członkowie zarządu z niżej podpisanym, będą nadal opiekować się działaniami Mozilli w Europie i traktujemy ten ruch jako czystą redukcję biurokracji a także okazję do przedyskutowania modelu organizacji naszego projektu w Europie.

Chcemy zaktywizować większą grupę lokalnych społeczności do pracy na poziomie całej Europy i uruchamiamy nowe inicjatywy pozwalające większej liczbie osób wpływać na losy Mozilli na poziomie całego kontynentu. Mamy nadzieję także na silniejszą reprezentację naszych działań w ramach projektu Drumbeat oraz licznych inicjatyw znanych z Mozilla Labs w Europie a także planujemy otworzyć kilka otwartych przestrzeni dla osób zainteresowanych pracą nad rozwojem Internetu w ramach projektu MozSpaces. Pierwsze powstaną w Londynie i Berlinie w 2012.

Byłem ogromnym zwolennikiem tego rozwiązania ponieważ widzę w nim szansę na lepszą adaptację naszych działań w Europie do dynamicznego rynku Interentowego oraz na zwiększenie aktywności samej Mozilla Foundation na poziomie globalnym w Europie, Azji, Afryce czy Ameryce Południowej.

Europa jest przykładem i inspiracją dla społeczności Mozilli na całym świecie i wierzymy, że nasze globalne struktury są dziś wystarczająco silne, aby móc bezpośrednio angażować się i reagować na potrzeby lokalne. Sieciowa struktura naszego projektu dojrzała przez ostatnie lata i sprawia, że możemy dziś więcej niż kiedykolwiek przy mniejszym poziomie biurokracji.

Członkowie zarządu Mozilli Europe wraz z liderami społeczności lokalnych stworzą następny rozdział historii Mozilli w Europie i współpracując z Mozilla Foundation będziemy rozwijać projekt Mozilla reagując na potrzeby i wyzwania kolejnych lat.

Tyler o ocenie błędów

uwaga: ten post jest moją prywatną opinią, nie jest stanowiskiem żadnego z projektów w których pracuję.

uwaga 2: ten post nie jest opinią o wszystkich portalach i vortalach informatycznych. Są wciąż serwisy które dbają o jakość informacji, które weryfikują dane, które szukają u źródeł, których dziennikarze interesują się tematem na który piszą, a i w tych które wywołam tutaj do tablicy nie zawsze jest tak źle. Ale jest źle wystarczająco często bym pozwolił sobie na uogólnienia.

Przepraszam, że niezbyt często tu piszę ostatnio, ale mam mnóstwo pracy z L20n, Pontoonem i innymi fantastycznymi projektami nad ktorymi pracujemy i coraz mniej motywacji do prostowania tego co panowie copy&pasterzy napichcą.

Tym razem jednak zbieram się w sobie i prostuję ponownie. Otóż webhosting, dziennik internautów i dobre programy znów łyknęły plotkę i bujde ze slashdota jak rybka haczyk i ucieszone donieść raczyły, że “były szef społeczności”, że “zrezygnował”, że zanim to zrobił doniósł o “nowy cykl wydawniczy (…) bardzo źle wpływa na jakość Firefoksa” i tak dalej i tak dalej.

Pewnie, można olać, wszak to, że panowie wykonująct te copy&paste tłumaczenia (czasem nawet z autorskim komentarzem, zazwyczaj sarkastycznym i definitiwnie wieszczącym kłopoty Mozilli, ewentualnie deklarującym ekspercką wiedzę jakoby innym przeglądarkom wiodło się lepiej) zrobią to następnym razem niezależnie co tu napiszę.

Wiemy to bo niecałe półtora tygodnia temu te same portale donosiły o nieuchronnym usunięciu numerków wersji z okna “O Programie” Firefoksa dokładnie w ten sam sposób klonując sensacyjne doniesienia slashdotów z tak samo poprzekręcanymi faktami, plotkami i przekłamaniami. A 4 dni temu donosiły, że Mozilla planuje walczyć z Chromem przez WebAPI… i tak dalej…

Wiemy też, że tak jak zawsze nie skorzystają ze starej dziennikarskiej zasady pytania u źródeł, albo chociaż dania szansy wypowiedzenia sie drugiej stronie do której kontakt dostają regularnie od Lukasza Kluja, ode mnie, googlając/bingując Mozillę w Polsce lub na ślepo wpisując Nic to nie da.

I tym razem wpadka, pomyłka, nie przyniesie wstydu, w odróżnieniu od slashdota nie zaktualizują swoich wpisów, nie zawstydzą się a czytelnicy radośnie w komentarzach skorzystają z okazji do kolejnego flamewara na temat tego która przeglądarka jest lepsza i jakim epitetem obrzucić współkomentatora który śmie woleć inną.

No to dla sprostowania:

  • Mozilla nie jest firmą w tradycyjnym tego słowa znaczeniu. Jest projektem, społecznością. Wszyscy którzy się wypowiadają i pracują w nim to kontrybutorzy, członkowie społeczności. Tyler jest członkiem projektu Mozilla. Część osób jest zatrudniona w Mozilla Foundation w różnych formach do różnych zadań. Tyler nie jest.
  • Tyler nie zrezygnował z uczestnictwa w projekcie tylko z pracy w grupie zajmującej się oceną nowych zgłoszeń
  • Tyler nie napisał nic na temat wzrostu liczby błędów w Firefoksie w wyniku nowego modelu wydań
  • W projektach open source pojęcie “bug” odnosi się do każdego zgłoszenia – czy to jest błąd, czy propozycja zmiany, czy pomysł. Zdecydowana większość z tych zgłoszeń jest nieprawidłowa lub duplikuje zgłoszenie już istniejące. Pisanie więc o “6000 błędów w Firefoksie” jest więc po prostu myleniem czytelników.
  • Ocena zgłoszeń to praca która od zawsze w Mozilli jest ścieżką przez którą przechodzi wielu nowych wolontariuszy, ja zaczynałem od pracy nad tym, Gavin, i inni też. Od takiej funkcji sortowania i kategoryzowania błędów do realnej oceny wpływu szybkiego cyklu na stabilność przeglądarki i liczbę błędów w niej jest bardzo daleko.
  • Jeśli któryś z dziennikarzy interesuje się naprawde tematem stabilności przeglądarki to może zechce przetłumaczyć wpis Jessiego Rudmana na temat statystyk błędów krytycznych Firefoksa w kolejnych wersjach (i artykułu Kairo na ten temat?)
  • Bugzilla Mozilli w ogóle nie jest narzędziem “jakościowym” tylko “ilościowym”, zbieramy setki zgłoszeń dziennie, większość nigdy nie zostanie rozwiązana, bo albo nie ma sensu, albo nie jest ważna (w stylu: “Hinduska wersja Firefoksa na system Solaris sprzed trzech lat ustawiony z czcionką cyrylicy nie wyświetla poprawnie strony CNN w wersji z 2008 roku”), albo nie jest do odtworzenia, albo nie jest w ogóle problemem tylko propozycją którą nikt się nie zajął i czeka na kogoś kto się danym tematem zainteresuje. Rozmowa o liczbach w takim kontekście i emanowanie nimi jest wynikiem głębokiego niezrozumienia tematu o którym się pisze.
  • Tyler napisał dwa sprostowania. Niestety sprostowania są mniej skandaliczne, a więc mniej atrakcyjne, niż oryginalna plotka. Szkoda, prawda?

Dużo się dyskutuje ostatnio na temat przyszłości prasy i mediów w dobie Internetu. Niestety z przerażeniem obserwuje dewaluację jakości dziennikarstwa dotyczącego tematów komputerowych, które idzie równolegle ze wzrostem liczby osób używających Internetu i zwiększającą się dynamiką tego co się w Webie dzieje.

W tym samym czasie kiedy wszędzie wokół mnie w Polsce kiełkują społeczności eksperckie, sceny front-endowe, back-endowe, webappowe, HTML5, webgamingowe itp. dziennikarski front słabnie w oczach, redukuje siebie sam do formy i skupia się na straszeniu użytkowników.

Czasem zastanawiam się jak to jest pracować jako dziennikarz IT, podpisywać się nazwiskiem pod tekstami i do tego stopnia nie interesować się tym co się dzieje z Siecią. Nie rozumieć czym jest Mozilla, czym Webkit, jak tworzone są standardy, jak wygląda współpraca twórców przeglądarek, czym jest W3C, Ecma albo jak działają projekty open source.

To smutne, ale drodzy panowie redaktorzy – obserwowany przez Was spadek czytelnictwa nie wynika z “kryzysu” mediów ani tego, że ktoś Wam “kradnie” czytelników. Obniżacie jakość, skupiacie się na plotkach, właściwie większość tego co piszecie o wydarzeniach wokół przeglądarek jest pełna przeinaczeń, błędów i dowodów, że tak naprawde tym tematem niezbyt sie interesujecie i nie staracie się go poznać. Dziwi Was zatem odwrót czytelników? Moim zdaniem głosują nogami.

A panowie rednacze – newsy o przeglądarkach cieszą sie popularnością? To może zatrudnijcie do pisania ich osoby które interesują się przeglądarkami? Na eventach takich jak Front Trends, Falsy-Values, czy zbliżający się onGameStart właściwie każda, losowo wybrana osoba będzie się nadawać. Zyjemy w czasach pasjonatow, warto z tego korzystac do budowania wartosciowych srodowisk 🙂