Axel Hecht Mozilla in Your Language

August 31, 2010

Lazyweb, can I have compilers in js and python?

Filed under: L10n,Mozilla — Tags: — Axel Hecht @ 8:10 am

For our l20n project, we’ll want to compile l20n source files into javascript. We want to do that both at compile time, and at runtime.

For runtime, I’ll need the compiler written in js by all chances, and for compile time, I’d rather go with python so that I don’t have build a HOST_JS or something. Of course, I don’t want to maintain two completely independent compiler implementations.

Thus I’m looking for code that can generate compilers in js and python, preferably itself in python or some other language we can use at build time, or at least use for one-off compilations.

Any tips?

July 27, 2010

Porcupine, meet Churchill

Filed under: L10n,Mozilla — Tags: , — Axel Hecht @ 12:16 pm

I’ve been talking with Seth today on how we can answer questions about the status of l10n. My grumpy argument was that I wouldn’t know how to make graphs over time actually show progress, instead of just “failure”. I had two naive graphs, one is showing all missing strings summed up over all locales. That graph would be dominated by the long tail of several dozen locales with a few hundred strings each, and you wouldn’t see a dozen fighting over a few strings each.

The other is what I nick-name “porcupine graph”, show how many locales have no missing strings, vs those that have some missing strings. This is what’s actually implemented on the l10n dashboard as tree progress graphs. But how ever small a string change would be, it goes to all red. And it doesn’t help that one can’t mix green and red color gradients, so the graph usually shows spikes of red and a little black.

porcupine

Who’d want that as their progress stats, huh?

Now, during the chat with Seth I came up with the idea to just give a little bit of leeway, and accept some missing strings to be OK, at least for some time. I filed bug 582280 on that, and made a rough initial implementation of it. Nothing fancy, just a constant ignored bound of missing strings. Let’s see how the past two weeks of Firefox 4 look now, with just a total of 5 missing strings being OK, ?bound=5:

two weeks good and bad

Now Churchill won over the porcupine, but it’s still pretty red. Which is OK, we haven’t even branched yet, right? So I went ahead and figured I’d add an option hideBad:

two weeks good

Wow, progress. This graph actually looks like our community rocks as much as it does. Gets me grumpy, because this was really just about half an hour of work, plus a few years of thinking.

Now, how do we look on the long run, say, well over half a year? Bumping the bound up to 15, we’re doing like

half year progress

Pretty good, heh? You can play with it on the dashboard, too. The overall take aways would be:

We have about 20 locales that really track trunk.

We didn’t have that many landings with a high amount of added strings.

I like both :-).

July 26, 2010

Looking at a l10n bugzilla classification

Filed under: L10n,Mozilla — Tags: , — Axel Hecht @ 1:44 pm

We intend to move from components per locale in the “Mozilla Localizations” product to a matrix of products per locale, and components for each of Firefox, Thunderbird, et al. I’ve created an add-on to set up the products and components and laid out in the newsgroup thread. I wanted to share some screen shots on how things look locally now.

enter_bug.cgi?classification=Mozilla in Your Language looks like this:

enter_bug.cgi

Localizers can edit the descriptions on localize.m.o. I’m not totally convinced that the current formatting of the products are great. The double () braces disturb me, both here and on the actual bug form (see below). I might prefer “l10n:ab-CD Language (Region)”.

Enter bug

This is the actual bug entry form, and shows the localized component description. It also shows a rather confusing line wrapping of the product name.

Another aspect that we were concerned about was how it’d look if you changed the product of a bug. Locally, this looks like this now:

Re-productize bug

Got comments? Please leave them in the original newsgroup thread, or here.

July 21, 2010

l20n meetup in the european times

Filed under: L10n,Mozilla — Tags: — Axel Hecht @ 3:02 pm

I heard there was interest to join the l20n discussions, so I’ll do an “even more public” invitation to tomorrow’s l20n call.

We’re going to have that call on conference bridge 206 at 11 am CET, standard mozilla conference call details. Blame Seth for being almost-european these days, even if it’s just timezone. (No, not calling London Europe, no way.)

The agenda for this call is to look at some l20n-compiled files for browser.xul to make an educated decision on how to encode both external vs internal properties, and multi-locale files.

Sorry for the late invite, if you’re not on my radar and can’t make the meeting at such European hours, please follow up here, or by mail, and leave a note of your timezone.

June 24, 2010

Localizing Lorentz

Filed under: L10n,Mozilla — Tags: , — Axel Hecht @ 7:20 am

It’s been a while, but I’ll take a stab at what we did to localize Lorentz, i.e., how did we add strings to a stable branch?

The underlying principle was add-on compatibility, that is, language packs that are out there and compatible with 3.6.* needed to continue to work. The second principle was that while we didn’t want to break existing language packs, we did want to offer our localizers to work on the new strings to get the best possible user experience. So we’re adding strings without adding strings.

Given that we had a project branch for Lorentz, the work on the Lorentz branch itself was rather simple, just code like you’d always do. We didn’t do any special branch mechanics there, and built the Lorentz branch against the regular l10n repositories on 1.9.2. The only caveat here was to not remove strings, only additions were OK. As soon as that work got stable in terms of the strings used, we landed a patch that, for each new string, adds a hard-coded fallback to the code. That way, you pick up the localized string without failing if it doesn’t exist. So much for the work on the project branch.

On the stable branch, things are a bit more tricky. Of course we needed to be able to continue shipping security updates from the stable branch, that is, we didn’t want to turn builds red for strings that aren’t really missing. Yet we wanted to signal that the strings are there and to be localized. Up until then, we only had two stages of strings, missing or not. The latter is what we use for handlers in region.properties, for example. We needed a third stage, “report on this string, but don’t fail”. So I added a third stage to the logic around filter.py in compare-locales. This logic is now used in filter.py on the 1.9.2 branch, but not on central. Another necessary addition was to support filter.py for each module, so that we only had to hack around the toolkit strings once, and ont for all apps on 1.9.2. So there’s now a filter.py file for toolkit on 1.9.2, making sure we only report on the lorentz strings in toolkit.

Once that logic was in place, we added a “strings-only” patch to 1.9.2, which had the benefit of exposing the en-US strings in the regular repository that our l10n community is working on.

The outcome today is that out of the 74 languages we ship, only 25 still rely on the en-US fallback strings.

In bullet points, that’d be:

  • Do not remove strings, so that newer language packs are compatible with older releases.
  • Add strings with en-US fallbacks, so that they can be localized, but don’t error when missing.
  • Make filter.py for the module (browser/mail/toolkit) “report” on the new strings, so that localizers see the strings without hiding real errors from non-fatal ones.
  • Land strings early on the stable branch to get them exposed to l10n (with filter.py, see above).

June 7, 2010

Try’ing talos on node.js

Filed under: Mozilla — Tags: — Axel Hecht @ 7:37 am

I wasn’t all happy with how django helped me in coding the try-talos visualization, so I recreated this based on node.js. The result is a single project on github, talos-node, that just requires you to get a local install of node.js. It will actually incrementally render the pages as it does server side loads, so it doesn’t look completely dead throughout. Outcome at the side is a much better interaction to figure out which test is performing how, you can now mouse-ever one result, and you see all tests, both for your try-revision and the references. I also moved away from showing the range and mean value to showing all values, so you see how your red spot is doing in the flock of blues. There’s an updated screenshot on flickr.

A few comments on hacking on node.js. The nice thing about it is, there are tons of helper modules out there. The bad thing is, most of them are not compatible with a current version of node.js. Is the buzz over?

I ended up hacking my own simple asynchronous templating engine, the guts are shown in the readme.

I hope that being just node server.js once you have node.js up, it’s gonna make people more willing to actually run it locally.

May 31, 2010

[OT] German President Köhler steps down

Filed under: Mozilla — Tags: — Axel Hecht @ 3:13 pm

Sorry for the off-topic post.

President Köhler stepped down. Not a bad move, in my opinion. He came out of Afghanistan and promised our soldiers out there to get support for them back home. And he got back with political cat fight. After the discussion here in Germany of the past few days, he would have never been able to step up for our soldiers around the globe without 2nd or 3rd rank politicians attacking him as being anti-constitutional, and so the soldiers doing service. Independent of the politics, this is not what our soldiers out there deserve, so stepping down from duty is a fair move. And once you get there, you gotta do that ASAP. There’s no room for a president that can’t position himself (or herself, going forward?) when soldiers die doing service.

Sadly that’s reducing the President of the Federal Republic of Germany to a single point, which isn’t fair. But this is a point the president can’t fail, and thus I think that Köhler stepping down could very well be the lesser one of two evils.

Off-topic post, as in, this is my personal opinion and in no way affiliated with my roles within Mozilla.

May 20, 2010

‘Try’ing to look at Talos

Filed under: Mozilla — Tags: , — Axel Hecht @ 3:15 am

I’ve started to hack on the bcp47 patch, and as I add complexity to the chrome registry code path, I’ll actually need to look at performance results. Being a good citizen, I’ll start with try-server builds. TBH, the prospect of having to do that kept me from starting on this patch for a while, and it didn’t come far yet, too. Now, enough rant, I’ve created a hack. Open the book of e-ville.

When looking at talos results, I’ve got two problems: An overwhelming amount of numbers, and, in particular for the try server, finding something OK to compare with. All tools we have so far compare runs that are close in time, but in terms of try, that’s not necessarily close in code, nor anything else good. So here’s what I did:

  1. Open the try pushlog, and select a push to investigate.
  2. Load /try/json-info?node= until the reference repo has a parent of that changeset pushed, checked via /mozilla-central/json-pushes?changeset=.
  3. Load up to five later pushes than the one found.
  4. Load a total of ten pushes including the ones above going back in time.
  5. Ask graphs-stage api for the perf results.
  6. Average per test and platform, and create a scatter plot for each, with 1 being the mean, displaying min and max of the mozilla-central reference numbers, plus the try result.
  7. Show missing perf results in the try run and the base results.

On to the caveats: None of the json apis above support cross-site XHR requests, AFAICT, so I had to create a full blown web app to do this. I picked django just because that’s what I’m used to. The app is tested on 1.1.1, but should work on 1.2 as well. So far, there’s no db requirements.

Even worse, json-info is really slow, so the app as it is right now doesn’t even remotely scale. Mostly the reason why I don’t intend to host it anywhere as is.

I don’t understand why there is pretty much noise in which test results actually come up. Nor if graph-stage is the right graph server to use to begin with.

It looks like ripped out of the book of e-ville.

Here’s the two screens for your sneak-preview pleasure:

The start screen, where you can select your push:

First screen of my ughful try talos compare app

After clicking Go, and waiting a while, you’d end up with

second screen of my ughful try talos compare app

You can get to the alert showing test name and platform by clicking on the dots.

If you’re interested, the code is triple-licensed and on hg.mozilla.org. Patches welcome.

I could in theory see solving the perf problems with integrating the pushes app we have for the l10n dashboard, but that’s more involved than I feel like spending time on right now. Mostly because I don’t exactly know how good refreshing the try clone would perform.

April 28, 2010

Starting the discussion on the l20n source file format

Filed under: Mozilla — Axel Hecht @ 4:18 am

I just kicked of the public discussion on the l20n source file format in the localization 2.0 google group. This is supposed to be the first of a series of discussion guiding us to a specification and a plan on how to implement it.

Why a google group? We’re hoping to gather feedback from within and outside the Mozilla community, and we’re hoping that not branding the discussion group might help. Yeah, we’re branding it google instead, we’ll see if it works out.

We’d love you to jump in on the discussion, to criticize and experiment. Replies are not bound to any particular form, as are proposals. Put them where you think you can transport the message best and send a pointer to the group.

The spam settings on that group are currently “first post is moderated”, and both Gandalf and I can flip the switch for you. So if you think that your message doesn’t make it through, poke either of us.

April 11, 2010

Lorentz l10n trees are dealt with

Filed under: L10n,Mozilla — Tags: , — Axel Hecht @ 9:11 am

The project tree for Lorentz is winding down at various places, and the l10n dashboards make no difference.

The l10n builds off of the projects/firefox-lorentz project tree named “lorentz” have been stopped, and the sign-offs are closed.

Sign-offs for the ongoing work on 3.6.x including the lorentz strings should now go back onto the fx3.6 app version. Sign-offs from the lorentz tree have been migrated to fx3.6 where it made sense to me.

« Newer PostsOlder Posts »

Powered by WordPress