Language can be very difficult to capture within software localization. Each natural language in the world evolves at its own pace and in its own unique way, creating vibrant and rich means of expression. Sadly, simple static string translation is often ill-equipped to properly accommodate gender, conjugation, plural, or case changes required within the language by changing string variables and other run-time string composition issues. This is why we created L20n.
We’re super happy to announce that we’ve released an amazing tool to help localizers, engineers, and localization tool developers learn and practice L20n themselves! l20n.org contains a real-time text editor that allows you to edit L20n code and visually see how it impacts localization. The real-time editor is part of the “Learn” section of l20n.org dedicated to walk you through what L20n has to offer, feature by feature, and give you a chance to try these features out in real-time.
L20n is a localization framework (comprised of a pseudo-programming language) meant to transfer the ability to localize software using the fullness of any language from the developer to the localizer. L20n empowers localizers to be more independent of source language developers and have more control and flexibility in localizing software according to their native language’s demands.
l20n.org is live and running now! Go give it a try! Not only is it live, but its hosted on github for you to fork and contribute to. Enjoy testing out L20n!
Speed & memory:
- Fixed: 805241 - JS: Merge the new baseline compiler.
- Fixed: 804676 - JS: Remove dependence of Ion compilation on ScriptAnalysis::analyzeTypes.
- Fixed: 825928 - Graphics: Layers refactoring.
- Fixed: 865546 - Graphics: Large scaled images in SVG's cause choppy scrolling.
- Fixed: 854803 - Graphics: Images on slow network continously use 1 full core.
- Fixed: 600307 - Rewrite and cleanup DOMStorage code.
- Fixed: 566746 - Form history should use asynchronous storage API.
- Fixed: 697377 - Form Autocomplete should use asynchronous storage API.
New web technologies:
For more, read Firefox 23 for developers.
Security & privacy:
- Fixed: 838692 - Don't allow navigating named targets from sandboxed iframes.
- Fixed: 549697 - Add click-to-play plugin UI to the addon manager.
- Fixed: 834836 - Turn on pref to block mixed active content.
Other notable fixes:
- Fixed: 858538 - Download-attribute kills WebSocket connections.
- Fixed: 560072 - Object.getOwnPropertyDescriptor throws for many DOM objects.
- Fixed: 485149 - Using box-shadow on a <fieldset> with <legend> does not follow box shape.
- Fixed: 857820 - Drop only blink effect from text-decoration: blink; and completely remove <blink> element.
- Fixed: 369180 - Proxy Authentication required while typing Search String.
- Fixed: 649216 - Remove unnecessary delay when clicking tab close buttons sequentially.
- Fixed: 636564 - [Mac] Lion-style floating scrollbars.
Speed & memory:
- Fixed: 840282 - Land OdinMonkey (asm.js optimizing compiler).
- Fixed: 759585 - Change the granularity of collection from compartment to zone.
- Fixed: 829747 - Do Async Canvas layers update.
- Fixed: 716859 - Streaming WebGL Buffers (Double-buffering, etc).
- Fixed: 751418 - Enable OpenGL acceleration on Skia.
- Fixed: 753768 - Move page thumbnails I/O off the main thread.
- Fixed: 716140 - Multithreaded image decoding.
- Fixed: 689623 - Layout needs to provide information on which images are visible or likely to be visible.
- Fixed: 810151 - Use readahead for ordered jar files such as omni.ja. Should be ~10% startup speedup.
New web technologies:
- Fixed: 629801 - HTML: Implement <time> element.
- Fixed: 839371 - HTML: Implement <data> element.
- Fixed: 841948 - HTML: Enable <input type=range> on Nightly and Aurora.
- Fixed: 345195 - HTML: Replace the anonymous <input type='text'> in <input type='file'> by a simple text.
- Fixed: 829602 - JS: ParallelDo intrinsic and self-hosted ParallelArray.
- Fixed: 846406 - JS: Implement arrow functions.
- Fixed: 789897 - JS: Implement the preventExtensions and isExtensible trap for proxies.
- Fixed: 839979 - JS: Implement Object.is.
- Fixed: 690659 - XHR: Filename parameter in the FormData.append method.
- Fixed: 604039 - DOM: Prototype Gamepad (Joystick) API.
- Fixed: 650295 - DOM: Add support for speech input.
- Fixed: 782211 - DOM: Implement notification API spec.
- Fixed: 736324 - DOM: Allow naming blob URL.
- Fixed: 783129 - DOM: Implement the document.register interface method.
- Fixed: 407983 - DOM: Add clipboardData to the onpaste event.
- Fixed: 737100 - DOM: Extend Pointer Lock for non-fullscreen elements.
- Fixed: 805613 - Fullscreen: Handle multiple fullscreen documents concurrently.
- Fixed: 724554 - Fullscreen: Don't exit fullscreen when focusing window on different display.
- Fixed: 700023 - Fonts: Enable Graphite font shaping by default.
- Fixed: 419588 - Image: Add support for multiple ICO and ICNS sizes.
For more, read Firefox 22 for developers.
Security & privacy:
- Fixed: 818340 - Block cookies from sites I haven't visited. (Blog posts: Jonathan Mayer, Alex Fowler)
- Fixed: 790732 - Stop defining |Components| object in content scopes.
Other notable fixes:
- Fixed: 82301 - Today History folder should be expanded by default.
- Fixed: 767944 - Implement a manager for centralized quota and storage handling.
- Fixed: 253564 - Plain text documents should word-wrap. (Toggle using View > Page Style or the pref “plain_text.wrap_long_lines”)
- Fixed: 548763 - [Mac] Show download progress in dock icon.
- Fixed: 844604 - [Windows] Increase default text size on hidpi displays.
- Fixed: 748740 - New tab is not opening after "Ctrl/Cmd+Click" on a link if there is "event.stopPropagation()" in the "click" handler.
- Fixed: 738952 - PDF: make "Save as..." File menu entry and Ctrl+S work.
- Fixed: 743252 - PDF: Don't print the URL and other information when printing PDFs.
- Fixed: 830267 - Don't store plugin preferences via pluginreg.dat: store them per-mimetype.
- Fixed: 760140 - AAC and MP3 not supported in <audio> (but AAC supported as a <video> sound track!) when the Fluendo Complete Codec Pack is installed.
Netscape open-sourced the code to its "Communicator" Internet suite, using its own long-standing internal code name as a label for that project: Mozilla.
I always liked the sub-line of a lot of the marketing material for this time - under the Mozilla star/lizard logo and a huge-font "hack", the material said "This technology could fall into the right hands". And so it did, even if that took time. You can learn a lot about that time by watching the Code Rush movie, which is available under a Creative Commons license nowadays. And our "Chief Lizard Wrangler" and project leader Mitchell Baker also summarized a lot of the following history of Mozilla in a talk that was recorded a couple of years ago.
Just about a year later, in May 1999, so 14 years ago, I filed my first bug after I had downloaded one of the early experimental builds of the Mozilla suite, building on the brand-new Gecko rendering engine. This one and most I filed back then were rendering issues with that new engine, mostly with my pretty new and primitive first personal homepage I had set up on my university account. After some experiments with CSS-based theming of the Mozilla suite, I did some playing around with exchanging strings in the UI and translating them to German, just to see how this new "XUL" stuff worked. This ended up in my first contribution contact and me providing a first completely German-language build on January 1, 2000.
A few months after that, in May, I submitted my first patch to the Mozilla project, which was a website change, actually. But only weeks later, I created a bug and patch against the actual Mozilla code - in June of 2000, 13 years ago. And it would by far not be the last one, even though my contributions the that code were small for years, a fix for a UI file here, a build fix for L10n stuff there. My main contributions stayed in doing the German localization for the suite and in general L10n-related issues. Even when Firefox came along in 2004, I helped that 1.0 release with some localization-related issues, esp. around localized snippets for its Google-based and -hosted start page - and stayed with L10n for the full suite otherwise (while Kadir would do the German Firefox L10n). I wrote a post in 2007 about how I stumbled into my Mozilla career.
As Firefox became rapidly successful and took an increasingly large standing in the project and community, I stuck with the suite as I liked a more integrated experience of email and browser - and I liked the richer feature set that the suite had to offer (Firefox did cut out a lot of functionality in the beginning to be able to found its new, leaner and more consumer-friendly UI). When in March of 2005, it became clear that the suite was going into strict maintenance mode and be abandoned by the "official" Mozilla project, I joined the team that took over maintenance and development of that suite - once again using a long-standing internal code name for that: SeaMonkey. In all that project-forming process 8 years ago, I took over a lot of the organizational roles, so that the coders in our group could focus at the actual code, and eventually was credited as "project coordinator" within the project management group we call the "SeaMonkey Council".
When I founded my own business 7 years ago, in January of 2006, I was earning money in surprising ways, and trying to lead the SeaMonkey project into the future. We were just about to release SeaMonkey 1.0 and convince the first round of naysayers that we actually could have the suite running as a community project. In the next years, we did quite some interesting and good work on that software, and a lot of people were finally realizing that "we made it" when we could release a 2.0 version that was based on the same "new" toolkit that Firefox and Thunderbird were built upon, removing a lot of old, cruft code and replacing it with newer stuff, including the now common-place add-ons system and automated updates among a ton of other things. I would end up doing a number of the major porting jobs from Firefox to SeaMonkey, including the places-based history and bookmarks systems, the download manager (including a UI that was similar to the earlier suite style), and the OpenSearch system. With the Data Manager, I even contributed a completely new and (IMHO) pretty innovative component into SeaMonkey. In those times, I think I did more coding work (in JS, mostly) than ever before, perhaps with the exception of the PHP-based CBSM community and content management platform I had done before that.
The longer I was in the SeaMonkey project, the more I realized, though, that the innovation I would like to have seen around the suite wasn't really happening - all the innovation to the suite came from porting Firefox and Thunderbird features and/or code, and that often with significant delay. Not sure if anything other than the Data Manager actually was a genuine SeaMonkey innovation, and I only came up with that when trying to finally get some innovation going, back in 2010. I was more and more unsatisfied with the lack of progress and innovation and the incredible push-back we got on the mailing list on every try to actually do something new. In October of 2010, I took a flight to Mountain View, California, to meet up with Mitchell Baker and talk about the future of SeaMonkey - and I also mentioned how I wanted to be more on the front of innovation even though I seem to not manage to get the SeaMonkey community there. Not sure if it came out of this or was in the back of her head before, in one of those conversations I had with her, she asked me if I would like to work for Mozilla and Firefox. I said that this caught me by surprise but we should definitely keep that conversation going. Just after that I met then-Mozilla-CEO John Lilly, and he asked if Mitchell had offered me a job - just to make sure. As you can imagine, that got me thinking a lot more about that, and gave me the freedom to think outside SeaMonkey for my future. I was at the liberty to think about my personal priorities in more depth, and it became clear that the winds of change were clearly blowing through my life.
Where this all will lead me in the future? No idea. I'm interested in moving to the USA and working there at least for some time - not just because it would make my day cycle sane and having most or all my meetings within the confines of the actual work days in the region I'm living in, but also because I learned to like a lot that country has to offer, from Country Music to Football and many other things (not to mention Louisiana-style Cajun cuisine). I'm also interested in working from an office with other Mozillians for a change, and in possibly becoming even more of a manager. Of course, I'd like to help moving the Mozilla mission forward where I can, openness, innovation and opportunities on the web are something I stand behind nowadays more than ever - and Firefox OS as well as associated technologies promise to really make a huge impact on the web of the future. I'm looking forward to quite exciting times!