-
What happened to two localizations on the day of Firefox 3.5’s release
Not everything is picture perfect in the world of Mozilla localization. Though it pains me to say that, we hit two snafus at the release of Firefox 3.5. Here’s what happened with our Macedonian (mk) and Serbian (sr) localizations, complete with a mea culpa and a plan on how to fix things going forward.
On the day we released, our community found two very similar errors in our mk and sr builds. In both cases, a misspelling of &brandShortName; inside an <!ENTITY> triggered the “the yellow screen of death” when users selected the Help -> Check for Updates… option to get the new version.
A thousand apologies to our localizers and mk and sr users for not catching these errors pre-release.
With damage control in full swing, we removed the two localizations from the Firefox 3.5 release channels so that users would not receive a broken version of Firefox. The two localizers and the l10n-drivers then worked through our options. We could either release a special post-Firefox 3.5 Macedonian and Serbian version, or wait until the release of Firefox 3.5.1.
The unexpected timing of the Firefox 3.5.1 release helped us with the above decision. Although the circumstances of the security update were not ideal, it did allow us to release mk and sr earlier than expected, getting users of those localizations back on the release track. Furthermore, any users who might have gotten the broken mk or sr version of Firefox 3.5 on release day will be updated behind-the-scenes without having to check for updates. [1]
What happened on the 3.5 release day underscored a few errors in our system that need to be fixed. Here are the proposed and soon-to-be or already implemented measures we are taking to reduce this margin of error:
- Localization sign-off via the Web: Rather than opting-in with change sets, localizers will soon select the Mercurial change set they want to use for a release from a list of IDs pulled from their locale’s repository. How does this help? In Macedonian’s case, a localizer *had* submitted to Axel a change set that corrected the error prior to RC3. However, Axel was unreachable at a conference and couldn’t relay that update to me. Sadly, I submitted the incorrect change set. Mea culpa. This application allows localizers, l10n-drivers, and Firefox project managers to view the choices that have been made, and to the extent possible, test to make sure that the version the localizer wants is good for release.
- Test automation: We are working on creating a script that can be run by our QA team before each milestone that will scan for misspellings in things like &brandShortName;. This bug is tracking that progress. Our QA team also is increasing the number of automated tests that will be run on each locale before each milestone release.
- L10n-testable builds: Presently, we are producing testable nightly builds with Axel’s l10n-merge code that will create localizations with en-US strings replacing any untranslated ones. Now, localization teams can give their testing communities something to test from the beginning of the release process. In the past, localizers had to wait until they had 100% translation before we provided them a nightly build.
- Localized builds with nightly updates: Added to the testable builds above, we’ll soon be able to offer nightly updates to localizers and their testing communities. Right now, only en-US testers of Mozilla’s pre-release versions get nightly updates pushed to them. Soon, *all* localizations will get these nightly updates pushed their way so our global testing community can see the most recent additions made by Mozilla’s developers.
These tools empower the localizers and the testing community, and we believe will help narrow our margin of error so that we don’t repeat what happened to our mk and sr builds.
Many thanks to our Macedonian and Serbian localization teams for their understanding and patience and sorry for the errors discovered at the time of the Firefox 3.5 release.
[1] Mozilla developer rstrong and his team fixed this bug and cleaned up a lot of code for the Firefox 3.5 release so that users of Firefox get updated behind-the-scenes without having to check for updates or get prompted unnecessarily if they want/need an update.
-
A Look at Firefox’s Localization Growth Over Time
Mozilla Firefox’s localization count has grown each and every release over the years. I created the following to show just how much we’ve grown from launch to launch.
.
# Firefox 1 -> FF 1.5 -> FF 2 -> FF 3 -> FF 3.5 .
.
75 Languages added 27 af .
74 Growth 56.25% ar .
73 as .
72 be .
71 bg .
70 bn-BD .
69 bn-IN .
68 ca .
67 cs .
66 cy .
65 da .
64 de .
63 el .
62 en-GB .
61 en-US .
60 eo .
59 es-AR .
58 es-ES .
57 es-MX .
56 et .
55 eu .
54 fa .
53 fi .
52 fr .
51 fy-NL .
50 ga-IE .
49 gl .
48 Languages added 11 af gu-IN .
47 Growth 29.73% ar he .
46 be hi-IN .
45 ca hr .
44 cs hu .
43 da id .
42 de is .
41 el it .
40 en-GB ja .
39 en-US ja-JP-mac .
38 es-AR ka .
37 Languages added 5 ar es-ES kn .
36 Growth 15.63% bg eu ko .
35 ca fi ku .
34 cs fr lt .
33 da fy-NL lv .
32 Langs added 4 ar de ga-IE mk .
31 Growth 14.29% ca el gu-IN ml .
30 cs en-GB he mn .
29 da en-US hu mr .
28 ast-ES de es-AR id ms .
27 ca-AD el es-ES it nb-NO .
26 cs-CZ en-GB eu ja nl .
25 da-DK en-US fi ka nn-NO .
24 de-DE es-AR fr ko oc .
23 el-GR es-ES fy-NL ku or .
22 en-GB eu ga-IE lt pa-IN .
21 en-US fi gu-IN mk pl .
20 es-AR fr hu mn pt-BR .
19 es-ES ga-IE it nb-NO pt-PT .
18 fi-FI he ja nl rm .
17 fr-FR hu ko nn-NO ro .
16 he-IL it lt pa-IN ru .
15 hu-HU ja mk pl si .
14 it-IT ko mn pt-BR sk .
13 ja-JP mk nb-NO pt-PT sl .
12 ko-KR nb-NO nl ro sq .
11 nb-NO nl nn-NO ru sr .
10 nl-NL pl pl si sv-SE .
9 pl-PL pt-BR pt-BR sk ta .
8 pt-BR ro pt-PT sl ta-LK .
7 ro-RO ru ru sq te .
6 ru-RU sk sk sr th .
5 sl-SI sl sl sv-SE tr .
4 sv-SE sv-SE sv-SE tr uk .
3 tr-TR tr tr uk vi .
2 zh-CN zh-CN zh-CN zh-CN zh-CN .
1 zh-TW zh-TW zh-TW zh-TW zh-TW With the release of Firefox 3.5, Mozilla added twenty-seven localizations and grew our locale count by 56.25%. Future versions of this graph might include an overlay that shows Firefox usage statistics for each of these locales. I’ll work with Ken Kovash to figure out some more ways to interesting present the data.
-
Testing the latest localized version for Firefox 3.5
I posted this to the Mozilla L10n newsgroup, but for maximum coverage, I’ve reposted it on my blog. Special thanks to Marcia, Axel, and Chofmann the various resources I reference below.
——————————————–
To all of our great community localizers and testers…
Over the past few weeks, many of our Mozilla community members have done testing and landed fixes for Firefox 3.5 as we close in on our release. We are now in the last hours before we ship our release candidate that we can comfortably call Firefox 3.5. If you have time this weekend, it is a great opportunity to do some last minute testing for your localization.
Where to download the latest localized nightly version of the Firefox 3.5
http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-1.9.1-l10n/
Please hammer on these builds mercilessly to make sure that things work well. If you notice things that worked in Firefox 3.5 beta 4, but do not work in this release, we would like to know about it right away.
What to Test
You can run a set of localization test cases by going to Litmus, Mozilla’s testing suite. This URL will take you to the “l10n run”.
https://litmus.mozilla.org/run_tests.cgi?test_run_id=36
If you don’t have a Litmus account, you should be able to create one quickly. Please email us if you need any help.
How to report feedback
Please try filing a bug for your locale with Bugzilla. The basic set of instructions are below. If you are not comfortable filing a bug, you can report it to your locale leader who should be listed in the specific locale on this main Teams page:
https://wiki.mozilla.org/L10n:Teams
Things to remember when filing a bug in https://bugzilla.mozilla.org/:
- Always include the Build ID that you tested on. If you type about: in the URL bar, this will give you the Build ID.
- Always include clear “Steps to Reproduce” the bug.
- Always check to see if your bug has already been filed. This link will help: http://tinyurl.com/2465be
- Use the regression keyword if it indeed a regression from a previous release. And, please tell us in the main comment of the bug if it is a regression from a previous release.
- If you happen to crash, please include the Breakpad ID in the bug. You can get this by typing about:crashes in the URL bar.
If you don’t wish to file a bug, report issues through http://feedback.mozilla.org or through the mozilla.feedback.firefox.prerelease newsgroup (I just linked to the Google Group). However, we prefer bugs as feedback since those are easier to track.
Finally, keep in mind that no comments or questions are off limits. Please send along any remarks or questions that you think are appropriate at you test. It’s all appreciated.
Thanks to all of you for helping test Firefox and making it the browser of choice for millions and millions of people all over the world!
-
Four more locales added for Firefox 3.5 RC1
We’ve added four more locales for Firefox 3.5. These include Oriya, Romansh, Spanish (Chile), and Tamil (Sri Lanka).
Many thanks to Manoj (or), Sarves (ta-LK), Gion-Anrdi (rm), and Emilio (es-CL) for putting in some great effort in the last hours to complete their translations. Although a set of productization bugs still exists for these languages and Staś is working with these folks to resolve them, we’ll still ship the four new locales with Firefox 3.5 RC1. Malayalam will also join us for this release after translating 148 strings in the final push. ml has been with us in the past but slipped last time. Welcome back, Ani and Joyce.
If you’ve been counting, we *should* get up to 75 localizations for the final release of Firefox 3.5, shipping simultaneously across three platforms. Yesterday, I was skeptical we would not even come close to the number from beta 4. But, here is what happened…
Over the evening time in California, we lost a bit of sleep as we checked throughout the night on the status of teams and responded to emails. After midnight, we noticed that Alexandru (the maintainer of Narro) had seen a couple of localizations with translated strings that hadn’t been pushed back to us. He sent us one changeset and we waited a bit longer. At 4:30 AM, Staś got up and landed ta-LK in its repository since the team had not had the chance. Then, by the 5 AM code freeze, Alexandru committed the Vietnamese team’s final changes. Axel continued managing that opt-in thread I mentioned in my post yesterday. He and Staś also helped sort out some Mercurial landings that got a bit twisted around. By 11 AM in Mountain View, Axel was reporting on code freeze to the Firefox product team. We learned when builds would start (Sunday May 24), buying us a bit more time to finish our l10n, allowing a few more locales to make it in the process. We’re not finished yet, but we are very close…
This morning the l10n-drivers were chatting about how every time we go through a release, we are blown away by the responsiveness, dedication, and professionalism of this group of volunteers. Hats off to the localizers one more time.
-
The L10n leadup to Firefox 3.5 RC1
Why am I nervous today? It’s that time again. We are in the final hours before the code freeze for Firefox 3.5 RC 1, and we’re biting our nails to see how many locales make the deadline. You see, each time we go through a milestone release, it takes a noticeable amount of coordination and work. The following post describes a bit about what the l10n-drivers do in the lead-up to each release.
During these last hours, to-do items fly around like a pile of leaves caught in a vortex, and the l10n-drivers stick our hands out trying to catch each one and put it to rest. For example…
I just sent out 23 final emails to our localization team leaders who have not translated the final strings that were added shortly after we shipped Firefox 3.5 beta 4. In case you’re wondering, if those 23 volunteer teams are unable to submit their final translations, then we won’t have 75 localizations for RC1.
Axel is tracking all the “opt-ins” for all the locales who are interested in making this release. For those familiar with how revision control systems works, we do not take the last updated Mercurial changeset that is listed on the localizer’s l10n repository. We want to be sure they are not testing or making any other last minute changes. To ensure we have their final approval, we ask them to tell us the specific version to take. I’ve blogged about this roll call in the past.
And, although it is not mandatory, many localizers are updating the corresponding in-product web pages and product pages hosted on our websites. Pascal is managing all of that by trading off sleep.
As I typed this, Staś was trying to follow up with new locales like Romansh, Chilean Spanish, and Sri Lankan Tamil, to see if those teams can finish their productization tasks for this milestone. Why do we make such an effort? The simple answer is that our l10n policy requires that any new locales must spend some amount of time with the release in beta so our localizers can gather feedback from end-users about their translations. During a major release cycle like now, it’s a perfect time for these new locales to ship releases within the official beta process so they don’t have to spend time in beta after we release Firefox 3.5.
Behind the scenes, the entire l10n-drivers team is on IRC answering questions and responding to requests from localizers and others about the release. Axel is also managing that one bug that keeps track of all the locales we intend to ship. And, we are all-hands-on-deck to make sure all goes smoothly.
Finally, mastering timing and communication when trying to coordinate a group of 75 localization teams is difficult, especially when you have moving pieces like the Geolocation strings that hit after last minute. It’s a bit of a new world with Mozilla l10n. Little changes like that one I just linked to are now multiplied by 75 groups who have to update their locales, even if we had already made announcements like, “Strings are frozen, begin translating“. In this specific example, we added two strings after we said go. That was followed up with some apologies and updates on work to be done.
I’m usually the optimist, but I’m not sure we are going to hit our mark for this release, as we have in so many releases in the past. In the end, when we are ready for the release of Firefox 3.5, we should have close to 75 localizations. Between now and then, we’ll be stressing all the way. For RC1…we’ll see what the final count is sometime tomorrow.



















