Axel Hecht Mozilla in Your Language

March 23, 2009

New hook for l10n feedback

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

We have a new hook for folks to get feedback on how to expose patches to localizers. We created a bugzilla account community@localization.bugs, which interested localizers are going to follow. I for one do at least.

So when you have a bug and need input on how to localize it, you can now CC :l10n (part of that accounts real name) instead of just me, and get feedback from a variety of different localizers.

If you’re a localizer that’s willing to help out our developers on creating good patches for l10n, please start watching community@localization.bugs by editing your mail preferences on bugzilla.

February 27, 2009

Fennec added to l10n dashboard

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

I just added Fennec localization stati to the l10n dashboard. It’s only pretending to do arm linux tgz’s right now, and it’s not uploading them anywhere. I expect that will happen soon on the main build machines.

There were a few funky edges to make fennec build similar to what we have in Firefox now. Most notably, Fennec uses a completely different directory structure, which looks really familiar once on disk. The main difference is that when Fennec developers check in to a file in mobile/locales/en-US/chrome, that file is actually in locales/en-US/chrome in the repository. When a localizer catches up with that change, they’re really landing to ab-CD/mobile/chrome. That requires some special hooks in the code that watches for l10n changes on the build master. The biggest hurdle was surprisingly the all-locales file in the end. That just blew the logic I had. I’m now loading the all-locales file by assuming that it’s right next to l10n.ini, while I’m still using the path to all-locales in l10n.ini to control what the AllLocalesWatcher pays attention to, to update the list of all-locales in the master when that’s changing in the repo.

What I really like is that we’re adding this product to our localization story in good shape. In my little universe, the big winner is that we’re starting with l10n-merge working. Thanks to mfinkle’s timely reviews, I added logic to the build to export both the gecko and the fennec revisions of the en-US build that’s repackaged, so one can run compare-locales (with or without l10n-merge) against the sources that actually went into the build. This is really important to get the missing strings right, and to ensure that the build is working as good as it can.

So, localizers, now is the time to land. Please make sure to touch base with Stas on any questions regarding web services. Using what we have for Firefox is a good base, though. Gandalf can help with general technical issues, as can I. If you’re not part of the fun, and want to join, please file a bug.

We’re well aware that you’ll need a descent infrastructure to test with. What is most important to you guys? Leave a comment on this post?

February 24, 2009

Triggering l10n builds

Filed under: L10n,Mozilla — Tags: , — Axel Hecht @ 4:03 pm

Localized builds are easy, you take away en-US, throw in the localized files, and you’re done. Piece of cake.

Throw in 3 platforms, four different builds each, 70 locales, and you have a lot of cake.

Yesterday I wrapped up a little experiment that allows one to set up a testing environment for l10n builds, and I figured I’d share some of the outcome. The trick here is to take away the complexity of the actual build and abstract away things like getting the en-US binary, the right source repos etc, and to just focus on when l10n builds should do what. There are more details on what the actual l10n build is supposed to do on the l10n deliverables page. The files for this experiment are in my temporary fork of buildbotcustom/bin. The setup includes l10n builds, en-US regular builds, and en-US nightlies. As far as the interaction between en-US and l10n builds go, we don’t need unittest and talos boxens here. All builds on this setup are fakes, that is, they take a few seconds (mac being quick, linux a tad slower, windows being slow), en-US builds taking longer than a l10n repack. The individual builds are represented by a yellow “Build 3” box, followed by a green box for the only step of that build. It displays some relevant information, in particular, which slave it’s run on (there were two per platform, in one pool), which locale it’s building, and what kind of build it is. Nightlies and regular en-US builds are easy, just the regular column names you’re used to, but the l10n builds can use a little legend:

A build as triggered by a localizer, building Firefox for ja-JP-mac, on slave sw1 would look like this. That would be on Slave Windows 1 (starting with 0, this is the second slave). l10n build
A build as triggered by a check-in for en-US, building Firefox for ja-JP-mac, on slave sw1. The difference here is that it’s showing compareOnly, we’ll see in the flow below why that is. l10n build
A nightly l10n build would again show the locale and the slave, in addition to the fact that it’s a nightly. l10n build

All of these builds share the same builder, for all locales. Just the platforms require different builders, as they’re delegating work to different groups of slaves. That’s because in the end, it doesn’t matter who or what caused that build to be made, the interesting point is whether the build is good or not. We’re not using different builders per locale, just because that doesn’t scale. In this test setup, there are 4 locales, but in real life, we have 70-ish. There’s just not enough space in my flat for monitors to display that.

Let’s move on to see some actual builds in action. Easiest first, as that looks most familiar to what we do with our regular builds. A localizer checks in, and in return, we do a build on all three platforms.

localizer-triggered build

You see the three Firefox test builds on each platform, which are the l10n builders. There is nothing on the mozilla build and mozilla nightly columns, which are the en-US builds and nightlies, resp. There’s only one locale built, in this case, ja-JP-mac, which is the locale for which I had pushed content here. Note to the Japanese localizers, this is on my test setup, so the hg repos I pushed to were local, and in fact, didn’t resemble anything close to your repos.

On to the next scenario, slightly more tricky. Nightly builds. Nightly builds for en-US are triggered by a scheduler that runs each day at a particular time. For l10n, we want repacks of those builds. Which implies that those builds are done, so we run them later.

en-US and nightly l10n builds

You can see a nightly build for each platform in en-US, linux being quick, mac slightly slower, windows being a bore. After a while, there is a l10n build for each locale (this setup has 4, ab, de, ja-JP-mac, x-testing) for each platform, being spread over the various slaves of the pool. Remember, we had two slaves per platform here. In real life, there are many more.

Now we start to see some pitfalls. The scheduler that triggers the nightly l10n builds needs to wait for the en-US builds, so despite the fact that the linux build is done, it’s not scheduled before we expect the windows build to be done. Right, expect. There’s actually no guarantee that the windows build, or any other platform for that matter, are actually done. We just delay the l10n builds to an extent that this isn’t a problem in practice. Another pitfall are respins. If the nightly build is busted, we go in and trigger new nightly builds. The l10n scheduler doesn’t know about those, so l10n builds are not respun. That’s covered by bug 469364.

Now on to the really fun pieces. Let’s look at what happens if a core developer checks in a patch that changes strings. Of course, that triggers the regular en-US builds. But what do we want to do for l10n? We should use this occasion to notify our l10n community that there is outstanding work, so there’s good reason to actually start something right away. Let’s look at what the builds do.

en-US and l10n builds for a l10n-impact change

You can see that the en-US builds kick off at the same time as the l10n builds. Now, what should the l10n builds do? Firstly, notify the localizer about the new strings. Good, let’s do that. But what more? Really, nothing, the next good thing would be to show off the new strings in context, but as you can see from the waterfall (there is some good in waterfalls, lastly), the en-US builds are far from done so far. That’s why the l10n builds have compareOnly set. These builds should merely run compare-locales and report the current string work on the dashboard, and be done with it.

Three kinds of builds for l10n. Why did I mention four initially? I left out the release builds. Those come with different rules and requirements. More details on aforementioned l10n deliverables page.

For the curious ones thinking about how we can use our computing resources, and why sometimes builds take a while without something happening, you can see a nice battle between different builders over the same slave pools, in particular, the slightly cut off l10n builds were waiting on the en-US builds to free their resources.

I hope that this post gives you a more visual idea of what we need to do in l10n builds land, and why.

February 20, 2009

Not a Bonsai

Filed under: Mozilla — Tags: — Axel Hecht @ 11:34 am

News from the tooling sink.

I just brought up what I needed to replace bonsai for hg on stage/pushes. My request list was as follows

  • Query multiple repositories at once
  • Query for landings to particular directories and files

I would love to get graphs and blame and mark, but I’m still hoping on hgweb on that.

The navigation is a bit rough still, it doesn’t have pages, yet, for example. I’m rather happy with the search, though. As it’s not discoverable, I’ll guide you through a bit. Here’s what a sample search would look like:

Sample search dialog

You get to this dialog by hitting the search button on the top left. First, you see a limit, this is the maximum number of pushes shown. The button switches that on or off in the query. The next two options are a tad more interesting, they allow you to search in a period of time. I use a date-time-picker for both from and until. Again, the buttons switch those on and off. The choice button lets you add more queries for paths and repository names, which are the piece after hg.mozilla.org in this setup. But on to the date-time-pickers…

I actually think those are fancy, and yes, I wrote those from scratch. I shamelessly stole the navigation pattern from Simile’s Timeline, i.e., I have bands with different resolution in time, which you can scroll. As I don’t display any events inside the bands, they’re actually empty, but the topmost band is months, then you have a band for days and one for hours. That lets you select a date and a time in a rather untuitive fashion, once you get used to the fact that sliding to the right is decreasing. Which is right for the UI pattern, it just feels awkward.

I find that UI pretty good, in fact, much better than other datetime pickers I found on the net, or the one that Philipp presented at FOSDEM.

The biggest challenge I have is making it accessible, though. Suggestions welcome. I think that a11y on pushes sucks in general, patches accepted :-).

A note of warning to end this post. We’re adding services at a faster pace than CPUs on the l10n server. Please pound this one with care, i.e., don’t pound it. It’s gonna enforce limits on searches right now to some extent, be nice. Thanks.

January 23, 2009

The daily morning traffic lights

Filed under: Mozilla — Tags: — Axel Hecht @ 3:39 am

The tree is OPEN. However, 2 boxes are orange and 2 are burning.

Man, I hate having patches ready to land.

</rant>

January 12, 2009

7 Things You May (Or May Not) Know About Me

Filed under: Mozilla — Tags: — Axel Hecht @ 11:38 am

Got tagged by Pascal Chevrel.

The rules:

  1. Link to your original tagger(s) and list these rules in your post.
  2. Share seven facts about yourself in the post.
  3. Tag seven people at the end of your post by leaving their names and the links to their blogs.
  4. Let them know they’ve been tagged.

Seven things:

  1. The title of my blog “Maggot Brain” is coming from 1971 album by Funkadelic. I picked that up by cover design, date, and length of songs during my days in Stuttgart, early 90s. Yep, I’m that old. The covers on the net neither show the maggot on the inside nor the skull on the backside of the cover.
  2. I own and listen to a record player. Vinyl.
  3. I’d prefer to be either a good deal more clever or a good deal dumber.
  4. I’ve struck my mother with an airplane. It was a a RC model sailing airplane “Finikofi” by Robbe, 1.60m wingspan. My mother is fine, thanks. Lesson learned: Don’t do bungee launches facing the airplane, left ain’t left. I don’t have that plane anymore, but I still have a bunch of other RC and control-line gear, though I haven’t put it to use in decades.
  5. I’m rather addicted to TV series. I miss the times in Kiel when I could watch them un-dubbed on Danish TV. Pokkers.
  6. I’m randomly allergic to wheat. When I get hit, I get hit hard for about two hours.
  7. Dogs yes, cats no.

And now to the hard part, finding 7 folks that haven’t yet been tagged.

  1. Runa Bhattacharjee, which reminds me that I still owe a T-Shirt to
  2. Mary Colvig, oops. Sorry.
  3. Darius Zarrabi, in the event that his blog just accidently 404s. Otherwise I’d know exactly 0 non-FOSS people with a blog.
  4. Pascal Bleser, who’s our mate for the FOSDEM developer room for years now, it’s gonna be good to see him again at FOSDEM 2009.
  5. Mark Surman, because he’s going to make that a beautiful post.
  6. Chris Hofmann, who’s blogging less than I do :-).
  7. Gijs Kruitbosch, taking him over that bridge.

December 19, 2008

working demo, waterfall and more

Filed under: L10n,Mozilla — Tags: , , — Axel Hecht @ 4:50 pm

Thanks to Reed, I just put up my latest pet project up on the l10n server.

It’s offering a new web interface for buildbot builds. It does so by feeding the status data that buildbot has into a database on the one end, and on the other end is a django app displaying that data.

The nice thing about this is that writing features (or fixing bugs) is “just webdev”. Compared to whatever you want to call tinderbox hacking.

There are already a few concepts demoed on the site. All urls are in flux, note the “stage” in them. But the principle should be obvious.

Firstly, you can get to a regular waterfall on waterfall. Yes, there are some time-sorting issues there. But it’s quick, which is cool. Compare it to the regular buildbot waterfall (didn’t bother checking which timerange that shows). And it offers a nice compromise (IMHO) for displaying detail or not. For finished builds, it shows one box per build. For builds in progress, it shows a box per step (it doesn’t show a box for the build for those steps, which is confusing). It has a blame column, too. Whenever you see a change number, that links to a new page, which lists all builds for that particular change. This one shows an en-US check-in with all locales turning red, for example. Another one just shows how things go green for Arabic again, as that localizer checked in.

For the l10n builds, that’s peanuts, but if you’re landing on a tree with real compiles, being able to follow all builds for your landing, and no others sounds cool.

And django comes with helpers for generating feeds, so creating a meaningful live bookmark to follow your own landing doesn’t seem like an unsolvable RFE.

There’s more. You can restrict the waterfall to only show builds for a particular slave. You can restrict the shown builds to only show builds with a particular property, say, the Macedonian builds, compared to all builds.

There’s obviously lots of room for improvement, the code is in the tinder app in my hg repo. Volunteers welcome.

December 2, 2008

1.9.1 l10n repositories open for business

Filed under: L10n,Mozilla — Tags: , — Axel Hecht @ 2:40 pm

To echo this on planet, too, the 1.9.1 l10n repositories are open for business.

Please read my introductory post in mozilla.dev.l10n before making changes to both the l10n-central and the releases/l10n-mozilla-1.9.1 repositories.

If you have questions, please ask in #l10n or in the newsgroup.

I have triggered builds on all comm-central apps and Firefox 3.1 to pick up the new setup, so the dashboard is all good again. The tree names remain unchanged, i.e., fx31x is the Tree towards Firefox 3.1, now picking up changes on the releases/l10n-mozilla-1.9.1 repositories as well as releases/mozilla-1.9.1 for en-US changes.

November 6, 2008

FOSDEM 2009

Filed under: Mozilla — Tags: — Axel Hecht @ 11:27 am

FOSDEM 2009 will be on February 7/8. Please block your schedules for that weekend, as it will be great as ever.

If you’re in Europe, you know that you want to come. If you’re not, you know that John suggested to try Europe out, and there’s hardly a better chance to do so than FOSDEM.

“This” years program committee will be Brian King, Paul Rouget and me. If you’re interested in presenting, please add yourself to the session proposals on the wiki. We’ll start this off as free-form as you’re used to.

As always, we’re going to keep you updated on things as we find them out, more details to come.

November 5, 2008

extensions, l10n, and tools

Filed under: L10n,Mozilla — Tags: , — Axel Hecht @ 4:15 pm

Wladimir Palant has two recent posts on perl scripts he did for helping him in managing localizations for Adblock Plus and TomTom Home.

Sadly, Wladimir ignored about a year of development in the compare-locales work, and a whole other flock of utilities available as part of the translation toolkit.

This year of development is the result of testing almost 80 different locales against up to 4 different applications and thousands of localizable strings, trying to catch more and more fatal errors in each update. The development hasn’t stopped yet, too. There is more in-depth work going on in Gandalf’s Silme project, for example.

While I appreciate that more folks are paying attention to l10n and extensions, it’s unfortunate to see such work being invested in steps back in capabilities.

Another approach was recently started by Jean-Bernard “Goofy” on the babelzilla wiki and forum. I’m looking forward to add to and help with that project.

« Newer PostsOlder Posts »

Powered by WordPress