Staś Małolepszy Localizing Mozilla

Flickr View All » Tristan workingElevator lobbyA DODOcase for the iPadA nanogramMozilla's red carpet in Ten ForwardKitchenOfficeOfficeLaura working

Mozilla Fennec L10n Productization Guidelines: Part 3. Compatibility criterion

fennec_logoA couple of weeks ago, I started a series of posts about the productization guidelines for localized Fennec builds. Post one discussed productization and why we need separate guidelines for Fennec.  Post two described the purpose of productization.

Today, let’s discuss the compatibility criterion, which I believe is the most important guideline for localizers to consider.

The compatibility criterion: Services included in Fennec must render correctly on mobile devices, assuring good readability and ease of interaction.

The compatibility criterion is important, because it allows us to base on Firefox’s guidelines and adapt them to the mobile context. In other words, Fennec’s productization should follow Firefox’s guidelines, making exceptions when the compatibilty criterion is not met.

As you probably remember, there are 5 productization components in Firefox, mapping to components in Fennec (in fact, the future of the live bookmark and the getting started page in Fennec is uncertain, but let’s just assume for now that they’re in):

  1. Content handlers (a.k.a feed readers)
  2. Protocol handlers (currently: webcal, mailto, irc)
  3. Search engines
  4. News feed (a.k.a. Live Bookmark)
  5. The ‘Getting Started’ page

Fennec should ship only with services that meet the compatibility criterion. We should not promote websites that render badly on mobile devices, are impossible to read (e.g. because of the broken layout not adapted to the small screen), or impossible to interact with on mobile devices.

The good news is that I don’t expect there are many websites that don’t conform to this guideline. After all, Fennec’s developers have gone to great lengths to make sure the browsing experience is as good as on a desktop browser. You can pan and zoom easily, increasing the text size and focusing on chosen part of the website.

But I can imagine a couple of scenarios effectively breaking the mobile user experience, for example:

  • a Flash-based ad covering a significant area of the website which is difficult to close/discard (due to very small close button),
  • a non-standard input element with no accessibility fallback, which makes typing text into it difficult or impossible,
  • websites detecting a small-screen device (which as a practice is not bad) and offering a broken layout.

I’m sure you can think of more example like these. Feel free to add them in the comments.

Mozilla’s mission ensures that the Internet, desktop and mobile alike, evolves in the  correct direction. In this context, that means open, participatory, and innovative. Good for the users. With Fennec, we’re becoming reponsible for building mobile Web the right way. We have the momentum and power to make an impact and make sure web designers and developers don’t ignore mobile in their projects. Because with no doubt, mobile will become one of the most important contexts of using Web, independently of region or demographics. Even more so, mobile is gaining a lot of traction in developing countries, which skip directly to the age of personal and portable computing. I like to think that we’re responsible for the direction in which the mobile Web evolves: open, participatory, and innovative.

Please add your thoughts. Is this criterion too strict? Too vague? Just right?

* * *

In the next post I’ll try to summarize my thinking about the search engines in particular and suggest a couple of categories of search engines that we might want to ship Fennec with.


BugXhibit: an interface to Bugzilla’s search results

This is awesome. Andrew Sutherland hacked up a very cool proof-of-concept interface to Bugzilla search results using MIT’s SIMILE Exhibit library. It allows you to query Bugzilla using the Quick Search syntax and displays the results in form of a faceted interface, which in turn lets you slice, order and group the search results easily.

I immediately liked the idea (in fact, I’ve been thinking about something like this since I first experimented with Exhibit, but never got around to learn more about the Quick Search syntax and buglist.cgi options) and created a very simple search command for Ubiquity to be able to access Andrew’s tool quickly and seamlessly.

I then started to experiment with different queries as I continued to work, so that I can test both the Quick Search and the Exhibit interface on real-life examples. This has been such a great help to me already, and it hasn’t been even a day since I started using it.

Up until now, to quickly get a status of a locale or a bug, I’d simply start typing the bug’s summary in the awesome bar and then go directly to the bug (if there was only one that I was looking for) or to the dependency tree of the locale’s release tracker. However, the dependency tree doesn’t give much information (only summary, number and status), which is not enough when you’re using keywords (e.g. “fixed1.9.1″) in open bugs to indicate that the bug was fixed on branch but not yet on trunk. (I wrote about it before.) Bugzilla’s Quick Search is great help in this situation, because it lets me be more precise about which bugs I want to see. However the default buglist.cgi view isn’t very useful to me in this scenario: it’s just a flat list of bugs, whereas I’m interested in grouping bugs by locale, at the very least. Enter BugXhibit, which allows you to slice and dice the search results to your liking.

One other thing that made this so helpful for me and that we introduced a couple of weeks ago, is the “productization” keyword in bugzilla.mozilla.org. We use this keyword for all bugs related to productization of Mozilla software, i.e. third-party services that extend its functionality (search engines, protocol and content handler, live bookmarks etc.). This allows me to see all open productization bugs with a query as simple as “!productization“, and Andrew’s BugXhibit lets me further manipulate this data by selecting bugs for a specific locale only (in “Components”), bugs that havn’t been yet fixed on branch (select only “productization”, not “fixed1.9.1, productization” in “Keywords”) or bugs that only regard protocol handlers (“protocol” in “Text Search”).

Since I wanted to tweak the interface a bit, I ended up cloning BugXhibit’s repository and making some small changes.  Namely, I set the ordering criteria of the Tile view to “Component” first, “Bug status” second and “Keywords” third. I chose component as the first criterion because in bugzilla.mozilla.org, under the “Mozilla Localizations” product, components translate to locales. I’m pretty sure I could use SimileAjax.parseURLParameters() to specify the ordering in the URL and somehow tell Exhibit to use it in the Tile view. I just don’t know yet how to do that :)

I uploaded the code to the l10n server, go ahead and try it if you wish: bugXhibit-st.

Yet again Exhibit turned out to be a very interesting project and a great tool for sketching prototypes quickly. It has a great potential for creating dashboard-like interfaces (e.g. we currently use it on the l10n dashboard) and I’d like to experiment with it more in the near future, while working on the new l10n dashboard that’s being developed.

I’m sure I’ll continue using BugXhibit, especially through the Ubiquity command. Thanks a million, Andrew!


Posted
16 May 2009 @ 1am

Tagged
,

Comments
2 Comments

When should we resolve l10n bugs as fixed?

Here is something that got me thinking recently: should we use the same workflow with regards to marking bugs as fixed for l10n bugs that we use for development bugs? Let me try to explain.

For development, the process takes place simultaneously on several branches. For example right now, we work on trunk (mozilla-central, Firefox.next), 1.9.1 (releases/mozilla-1.9.1, Firfox 3.5) and 1.9.0 (CVS trunk, Firefox 3.0.x). When a bug receives a patch, it first lands on trunk, and the bug is marked as fixed. Then it lands on branch(es), after getting needed approvals, and the bug is given the fixed-* keywords, for instance, fixed1.9.1.

I have a feeling that this workflow doesn’t fit well into the localization process. The localization efforts often focus on only one branch. In the current case, that’s 1.9.1. Some localizers like to keep their 1.9.1 and central repos in sync, and that’s great, but we don’t require them too. If they prefer working on 1.9.1 only, that’s perfectly fine. After all, strings on trunk have higher probability of changing, so it’s understandable that someone prefers to wait until they stabilize. I.e. until they land on a more stable branch.

So translations land first on 1.9.1, and for many localization, they will only be pushed to central after the 3.5 release, at which point central will no longer be central, but will be given its own branch. The process will start over: the localization efforts will focus on this branch, because this is where the next major release of Firefox will come from.

As you can see, for localization the workflow is reverse: we first translate on the more stable branch, and then port over to the dev branch (trunk). And this is what made me start thinking whether we should change the rules of marking the bus as fixed.

Why is this a problem? Let’s take Assamese as an example (just because it illustrates my point quite well and I’ve been working on it recently). Bug 443139 is the Firefox 3.5 release tracker for Assamese and it’s blocked by a couple of bugs that will need to be resolved before we can release Assamese version of Firefox. In fact, most of them have been already resolved, so we’re really close to releasing Assamese. Congrats to the Assamese team :)

If you look for example on the “Firefox 3 RSS reader setup for Assamese” bug (bug 443145), you’ll notice that it was marked as fixed and has a fixed1.9.1 keyword. That’s because it was fixed on both trunk and branch. So the bug’s status is now “resolved fixed” (thanks to the landing on trunk), and it doesn’t block the release tracker anymore.

But now take a look at the “Search engine setup for Firefox 3 for Assamese” bug (bug 443142). The fix landed on 1.9.1 only, so the bug has the fixed1.9.1 keyword, sure. But since it hasn’t been yet fixed on central (for Firefox.next, mind you), the bug’s status is “new”, and it is still blocking the 3.5 release tracker. Why the lack of landing on central should block a 3.5 release?

That’s a problem for me, because it makes using and following the tracker bugs harder. Of course the right question to ask here is “if we mark this bug as resolved fixed right now, how do we make sure that the fix lands for Firefox.next, too?”. I don’t have a good answer to this yet. But even in the current workflow, if the fix lands for Firefox.next after mozilla-central gets branched again, will we mark the bug as fixed, or maybe just add a fixed1.9.2 keyword? (or a different one, depending on what the name of the branch will be).

I don’t have any concrete proposals right now to address the problems described above. I feel that we should just resolve bugs as fixed when the fix lands on current next-major-release branch (1.9.1 these days). We should still use keywords to make it easier when looking back at fixed bugs to figure out on which branches they were fixed. Lastly, next time we branch from trunk, we should somehow make sure all the fixes are included. I’m not yet sure how, though.

What do you think? I wanted to share my thoughts on this out in the public. I’d be grateful for your comments!


Bulgarian (bg), Marathi (mr) and Occitan (oc) move out of beta in 3.0.9

Great news! Another 3 locales on the 3.0.x branch have just moved out of beta as of 3.0.9 release. This is a major milestone for these locales, their localizers, and, of course, our users who now can enjoy the polish and top quality of the final releases in their native language.

  • Добре дошли, хора!
  • Planvenguts umans !
  • मनुष्यांचे स्वागत आहे!
  • (Welcome Humans!)

Many thanks to Ognyan (Bulgarian), Sandeep and Priti (Marathi) and Yannig (Occitan) for their continuous work on the quality of the localization and awareness of it among local users. The 3.0.9 release is a culmination of weeks and months of the efforts by these guys, both on the localization front (translation, productization, web parts, testing) and the promotional one (advertising the beta builds, getting feedback from beta users, increasing awareness of the browser etc.). Good job!

Thanks for all the bugs we fixed together. Looking forward to working with you again soon on next updates and versions of Firefox.


Posted
18 April 2009 @ 8pm

Tagged
,

Comments
1 Comment

Celebrating the *Pole* position

46,8% as of today. Celebrating with Aviary.pl folks in Cracow. Legendary!

This race is only about to start :)


Older → ← More recent