Amazing work guys! Thanks to the shiny new API in l20n.js, the Music NGA 
re-write was able to take full advantage of all the goodness it brings, 
including RTL-compliant time formatting and the client/service split for views 
via bridge.js.

Also, many, many thanks for all the perf improvements! :-)

-Justin


> On Nov 4, 2015, at 12:30 PM, [email protected] wrote:
> 
> Hi Gaiaers!
> 
> I'd like to start a new tradition of providing you with a summary of work 
> that has been done during the a given cycle in my module[*].
> 
> It may be surprising for people less familiar with complexity of the l10n 
> ecosystem to notice that our L10n team has been so visible in the number of 
> commits - both me and :stas accruing over 120 commits in this cycle placing 
> us both in top 20 commiters.
> 
> The reason is: L10n is complex. It's also severely under-developed compared 
> to most layers of modern app systems. And that is both, a curse and a 
> blessing. A curse because we have no-one to learn from. Nobody has figured it 
> out, no GUI toolkit has a good l10n system and we're with l10n more or less 
> where the webdev world was with HTML4 and PHP.
> 
> The blessing is that we have an opportunity at Mozilla to push the state of 
> the whole industry. It's a niche where with limited resources that we have, 
> we can make the Web Stack better than any other stack.
> I humbly believe that we are doing it, and 2.5 is an important milestone on 
> that route.
> 
> 
> The biggest accomplishment of this cycle for us is the introduction and 
> deployment of new L10n API. This API is based on years of research work by an 
> L10n team in Mozilla led by Axel Hecht. When we took over L10n module in 
> Firefox OS, we started moving the module and refactoring the codebase to work 
> in the paradigms of that approach.
> 
> And at the beginning of 2.5 cycle Stas landed revision 3 of our API in Gaia 
> source.  Right now it's opt-in:  the code needs to link to 
> shared/js/intl/l20n.js to use it.
> 
> For the rest of the cycle we improved the new codebase vastly improving 
> performance and memory consumption. At this point L20n 3.0 beats the previous 
> API in features, security, performance and memory.
> 
> This, and a lot of refactoring of the code to be more asynchronous, allowed 
> us to move the first four Gaia applications to it - Music, FM, SMS and FTU 
> are fully transitioned and running on top of the new API.
> 
> Other highlights:
> 
> * Significant improvements in our test coverage, asynchronous non-racy APIs 
> and security of HTML l10n
> * Huge progress in reduction of our technical debt. We removed thousands of 
> lines of complex JS code replacing them with simple declarative HTML 
> attributes
> * DOM Overlays API allows us to localize Document Fragments
> * Bidi markers make composed localized strings work well in LTR/RTL scenarios
> * We transitioned whole Gaia to use Intl API for date and time formatting 
> which significantly improves Firefox OS user experience in non-latin based 
> languages
> * We moved to use the same Intl API in our composed localization strings for 
> number formatting, so any numbers passed to l10n as variables will be 
> formatted properly for the current locale
> * After trying multiple solutions we settled on an amazing module bundler 
> internally, rollup.js, which helped us save memory.
> * We leveraged the new internal architecture to properly use client-service 
> bridge architecture in multi-view apps (see Music)
> * Made our build system much more strict about l10n errors allowing us to 
> catch many potential race conditions with localization resources
> * Introduced first experimental version of our future localization format - 
> l20n
> * We deployed mozIntl API that is a staging ground for future JavaScript Intl 
> API
> * Lots of work on ECMA TC39 group to get a lot of features needed for Firefox 
> OS into Intl API rev. 3 (ES7).
> * migrated our pseudo-locales to work well with Intl API (following Google 
> pseudo-locales rather than Microsoft pseudo-locales)
> * We're helping with a lot of performance related work, with both me and 
> :stas becoming peers of the Performance Module and improving our ability to 
> make Gaia apps start fast in any locale
> * We are working with JS/Gecko and Gonk teams to fix long standing 
> time/timezone/date problems to make our platform work well across timezones.
> * deprecation of the old l10n_date.js library in favor of Intl API and mozIntl
> * removal of over 400 calls to the deprecated mozL10n.get method!
> * some ground work to enable our whole build/l10n workflow to handle our new 
> l10n format
> 
> 
> That's a lot of work. Over 120 commits in gaia 2.5 is just the visible part 
> of the iceberg with over 300 commits to our l20n.js repository and lots of 
> work going to various l10n/intl polyfills, ECMA specs and other repos.
> 
> With 2.5 being done, we already started working on 2.6 cycle which we're very 
> excited about because it feels like we have less and less of cleanup work, 
> and we start to work on real improvements and new features! We still have 
> some debt, but we believe 2.6 may be *the* cycle in which we'll finish that 
> part of our work.
> So, what's in our plans? Here are some teasers:
> 
> * Final rush to remove all mozL10n.get calls (almost 500 calls to remove). 
> Most of that work is in System and Communications
> * Integration tests - we now have a framework for that and we can start 
> testing our HTML/DOM API in the browser
> * Move (almost) all apps to l20n.js and deprecate l10n.js
> * Introduce declarative Intl API for HTML
> * Try to remove build time optimizations for l10n
> * More work on advancing Intl API and getting 3rd edition of ECMA 402 to have 
> everything we learned we need to make Firefox OS look good
> * Start using our new localization format and introduce new l10n features 
> that it allows for
> * Move language packs to our build system
> * We are starting to look at Web Extensions and browser.html and poke them 
> with a probing stick
> * We are experimenting with exposing l20n.js 3.x to the Web community. 
> Supporting some older browsers like IE11 is the current crux.
> 
> I don't know how many of those goals we will be able to accomplish in this 
> cycle and how many will have to catch the next train, but with those 
> features, I believe that we will have the best multi locale UI platform in 
> the World. And that's a goal worth pursuing!
> 
> Thank you to all reviewers, committers, allies, RTL team, and the amazing 
> sheriffs who had to back out a few eagerly landed patches. We're working on 
> it! :)
> zb.
> 
> 
> [*] I believe it would be valuable for us to start providing such per-cycle 
> summaries rather than per-quarter summaries. Quarters are artifacts of our 
> management structure, not our project structure.
> _______________________________________________
> dev-fxos mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-fxos

_______________________________________________
dev-fxos mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-fxos

Reply via email to