main mozilla tech

simple bash script to recompile libxul

Since I started working on L20n bindings for XUL I always felt frustrated that our build system cannot properly recompile the dependencies. When I work on XUL I’d like to just be able to type:

cd ./content/xul;

and be done with it.

Unfortunately, for the reasons that are beyond my level of understanding, it never worked this way. Fortunately, the bits that you have to recompile are always the same so I created a small bash script that recompiles what I need plus the dependency:

DIR="$( cd "$( dirname "$0" )" && pwd )"

cd $1 && 
make &&
cd $DIR/layout &&
make &&
cd $DIR/toolkit/library &&

Just place it in your build-dir and then:

./ ./content/xul

will do the rest



main mozilla tech

Perceived proximity on the Web

Over the years of traveling around the world to evangelize about Open Web and explaining the position and role Mozilla holds, I’ve encountered an interesting phenomena that I tried to put into a social context for quite some time.

My last trip to China, where I had met with Mozilla community in Shanghai triggered me to write about it, so here it comes.

The Web

The Web is a virtual plane on which human interact. It’s an incredible and amazing plane which breaks a vast number of physical laws and, in consequence, economical laws, biological laws, psychological laws, and, maybe in a most profound way, social laws.

From the social perspective, the web changes everything because聽 it holds an unprecedented characteristic:

The Web almost fully neutralize three basic physical dimensions in which humans operate, and, if that was not enough, it also severely limits the fourth one – time!

Think about it for a moment, please. Isn’t it mind blowing that we’re here, now, as it happens?

Spatial dimensions

Things on the Web are equally “close” to each Web user and the “dimension” that is closest to replace spatial distance – connection speed – is just a temporary factor that is disappearing over the course of a few years becoming ignorable itself.

It may not be the first invention that reduces the eternal impact of spatial dimensions on human life – cars, planes, mail, they all contributed to the sense of the world getting smaller, but the Web just cut it off entirely. You have access to this text from each place on Earth at the very same moment and you can build meaningful connections with everyone on the planet using the same techniques we use to build connections with our neighbors.

The laws of physical proximity and its impact on our social life is being transferred onto the Web and suddenly everyone is socially close to everyone else.


Similar shift happens with the fourth dimension. With mobiles devices, laptops, SMS, video chats, forums, and push&pull notification systems we’ve not only overcame physical distance limitations but we also built a plethora of technologies to store, in a lossless mode, every data byte transferred between human beings. Every piece of communication. Every smile, every word, every information, story or emotion that we manage to encode into any of the digital communication channels may be stored, multiplied, transformed and replayed forever.

Once again, the Web is not the first medium to do it, books, photographs, CD’s, vinyl and cameras where there before, but the Web brought it to the next level. Everything that manages to fit the web can be ripped of action-time limitation. It doesn’t matter when it happens, and how far did it happen. I can record my fingers typing this text and broadcast them to everyone around the world plus let anyone interested watch it in 100 years. All this interesting social/cultural/memetic implications about your daughter reading your blog posts from when you were sixteen kick in!

And the price limes is zero! It costs almost nothing and it will cost less and less! (making economy laws not fit anymore).

Physical vs. virtual

Hola, hola! – as many of my spanish fluent friends would say – but that’s all virtual. Yes, we removed spatial and time dimensions but only from information. Nothing changes in the realm of physical objects. No teleportation, no time travels, right? Right!

main mozilla tech

Pontoon has a new leader!

Oh, Pontoon, hi! When we introduced the idea of Pontoon on the forum of Mozilla Planet, it generated quite a lot of positive comments, but nothing close to what has happened when we showed the first live demo (Shaver did!) at Mozilla All-Hands in 2010.

Pontoon represents what, I believe, will be the future of web localization and I tried my best to rush it to the point where we will be able to verify if such an approach is realistic, but from there, I failed to find enough time to give this project the love it deserves.

Worry not, great ideas don’t perish, and it sometimes takes a vacuum to appear for a new leader to step in!

I had luck to drive Pontoon to the point where it attracted several souls from Mozilla community to keep pinging me, keep asking about it, and, what’s always the best result of an idea, to act.

In particular one gentleman, my long time friend from Slovenia – Matja啪 Horvat, stepped up and took what was there, turned a crank, wrote some code, draw a mockup, moved pieces around, stitched it a bit, and probably invoked some primal magic to assemble new version of it, available here –

He was able to take the source code to the next level and covered up the visual appearance and user experience zone which has been sorta ignored since we started and needed love. He was also willing to jump in and join me and we’re lucky enough to get Mozilla backing for this project which resulted in Pontoon having a new leader!

I’m proud to announce that I’m stepping down from Pontoon leadership position and Matjaz is taking over! I’ll be serving him as a mentor and a peer and I’m absolutely confident that the baby is in the right hands!

Please, join me in congratulating Matja啪!

You can also track his progress at and on Twitter.:)

main mozilla tech

Thunderbird to become the default in Ubuntu!

Great news from Budapest where Ubuntu project is holding their version of our All Hands 馃槈

According to Michael Larabel Thunderbird will become the default choice for Ubuntu’s mail/newsgroup client! That’s a strong prove of progress that Thunderbird has made, and trust me, Ubuntu does not swap the defaults that easily.

Well, it now seems that we’ll have two of our products used as pretty important defaults in this most popular Linux distribution – Firefox and Thunderbird! (although we do have a strong competition for the browser slot).

Congratulations to the team working on Thunderbird!

main mozilla tech

Falsy Values – volunteer opportunity

In just about a week Warsaw will be hosting a major JavaScript event – Falsy Values.

Falsy Values is brought to you by the two people – Damian Wielgosik and Pawe艂 Czerski – who made their way onto the Web Event Stage last year with their widely praised Front-Trends conference.

This year, they focus on hardcode JavaScript. This conference is not about soft disciplines, not about social science, it’s solely about hacking the modern Web.
With stellar workshops and talks, with names such as Douglas Crockford, Tantek 脟elik, Tom Hughes-Croucher and our homegrown stars like Kornel “porneL” Lesi艅ski, it has what it takes to be the powerful event to be at.

Now, such an event is not going to happen on its own, it takes passion, dedication and the one thing we all should value most – time – to shape it up and deliver.

One of the unique features of this conference is that it really is handmade by those two fellows who work 24/7 right now to plug all the cables in the right slots, bring supply to the tables and speakers to the microphone.

All hands on deck!

As you may have guessed from the title – we believe we could use some help during the event itself!

If you’re located in Warsaw, or if you will be here for the time of the event, and you’re looking for a chance to participate in what’s going to happen there, help us make it perfect, learn the unique lesson from behind the scenes, here’s your chance!

We’re looking for geeks who seek experience in helping us run this event. Several brave souls to support speakers, guide the crowd through the agenda, run fiercely to aid some brother in JavaScript arms who’s in danger of any kind (like – you know that moment when your WiFi doesn’t work?)

We expect you to be there with us (even an hour before the opening), assist when needed and enjoy the conference. We offer an opportunity to learn, gain experience and help us make the best event in the JavaScript world since Brendan invented this monster!

Get in touch with us! Email me (gandalf at mozilla dot org)聽 or contact Damian and Pawe艂 directly and we’ll go from there. Hurry up, we only have 5-7 slots available!

main mozilla tech

L20n gets tangible

While Firefox 4 was the main focus for the last weeks and months, I’ve been also making progress with the next iteration of Mozilla localization technology – L20n.

Here are three things that constitute a milestone for me and should make it much easier to test and play with the features of it.


Toobox guides you through the examples of various localization scenarios and how L20n solves them. It blends incremental learning of features available to both developer and localizer. At the bottom it contains several more complex example that should rarely happen but constitute the latter part of Pike’s “easy things easy, complex things possible” mantra.

XPCShell tests

It’s a small (two at the moment) set of tests that run l20n code. It’s a great start point to play with how the library works and how the format works. You can adjust the compiled code, or the library code and see if it gives the expected result.

Live toolbox

What can be better than a toolbox for a geek? Yes. A live toolbox. A toolbox you can not only read, but one that you can actually touch, change, hack on and see the result live.

It’s a hack itself, so don’t be harsh pls, but it does the job. I even included a set of 7 examples (example1 to example7) that correspond to what you can find in the Toolbox. Feel free to modify the L20n code, see if it compiles properly, play with the compiled code, change the HTML or JS and see the results live!

Also, if you encounter a bug, you can save your code and send it my way so that I can investigate it. The compiler is just an initial approach, and a moving target right now as we still don’t have a finalized JS structure schema, but it works for most simple and medium complexity cases, so I’d say it’s ready for you to play with it!

Next steps

Now, that we have Firefox 4 released (yay!), and mozilla-central is open again, I hope to work on landing the initial set of L20n Gecko bindings which requires some updates to the patches themselves first. With that part, we’ll be able to start investigating migration away from current DTD/properties format into the wonderland of L20n.


main mozilla po polsku tech

Web O’Wonder po polsku!

Pisa艂em niedawno o kampanii Web O’Wonder.

Nied艂ugo po moim po艣cie zg艂osi艂 si臋 do nas Krzysiek Wr贸blewski i zaoferowa艂 swoj膮 pomoc. Pomogli艣my mu za艂o偶y膰 konto na Verbatimie, przygotowali艣my stage, i prace ruszy艂y. Liderem lokalizacji by艂 Krzysiek, pomaga艂 mu Leszek “Teo” 呕yczkowski, a ja stara艂em si臋 by ich praca napotyka艂a jak najmniej przeszk贸d.

Kr贸tki wywiad:

G: Jak dowiedziale艣 si臋 o projekcie i co sprawi艂o 偶e si臋 zg艂osile艣?
K: O projekcie dowiedzia艂em si臋 oczywi艣cie z Twojego bloga na Polskiej Planecie Mozilli. Zg艂osi艂em si臋, bo chcia艂em zobaczy膰 jak przebiega proces t艂umaczenia i mia艂em troch臋 wolnego czasu 馃檪

G: Jak Ci si臋 pracowa艂o przy nim?
K: Pracowa艂o si臋 bardzo dobrze, na pocz膮tku musia艂em opanowa膰 Verbatima, ale nie by艂o to trudne, szczeg贸lnie z pomoc膮 pana Leszka. Nie zdziwi艂o mnie za to, w jaki spos贸b Wasz zesp贸艂 dyskutuje na temat najdrobniejszych szczeg贸艂贸w, bo z tego jeste艣cie znani 馃槈

G: Co bylo najtrudniejsze?
K: Co by艂o najtrudniejsze? Konieczno艣膰 porzucenia takich 艂adnych czcionek na rzecz standardowych, z powodu niedost臋pno艣ci polskich znak贸w 馃槢

G: Ile czasu zaj臋艂o Ci to t艂umaczenie?
K: t艂umaczenie zaj臋艂o chyba z tydzie艅, co raczej nie jest mistrzostwem 艣wiata, ale nie 偶a艂uj臋 po艣wi臋conego czasu 馃檪

Po zako艅czeniu pracy nad Web O’Wonder, Krzysiek pomaga przy kilku innych projektach specjalnych – t艂umaczy m.inn. gr臋 mobiln膮 Spark. Poza Krzy艣kiem, pomaga nam te偶 Pitazboras, oraz siecobywatel, a gro pracy wykona艂 Teo.
Poza wysokiej jako艣ci t艂umaczeniami, Krzysiek napisa艂 tak偶e dodatek do Thunderbirda – Glasser i mam nadzieje, 偶e b臋dzie mia艂 ochot臋 na prac臋 z naszym zespo艂em przy nast臋pnych projektach 馃檪

A za t艂umaczenie WoW nale偶膮 si臋 Krzy艣kowi gratulacje!

p.s. Je艣li masz ochot臋 si臋 przy艂膮czy膰 i pom贸c z t艂umaczeniem, za艂贸偶 konto na Verbatimie i dodaj sugestie. Je艣li chcia艂by艣 (chcia艂aby艣) przej膮膰 kt贸re艣 z t艂umacze艅, wy艣lij mi maila na zbigniew at aviary kropka pl.

main mozilla tech

Crazy times for the localizers

March of 2011 is special for all of us. It’s the Firefox 4 release month and the whole project is operating in it’s “crazy” mode.

One particular plane on which it’s pretty visible is localization as we’re involved in almost every aspect of the release, every little detail, every step of the product release, every engagement campaign and of course in every bit of discussion about the state of the web that happens in our respective countries.

The story

As an organization that has glocalisation imprinted on the very fabric of its universe, we always feel responsible for making sure that everything we do is localizable, so that our communities around the world can translate and adjust everything that Mozilla project creates and use it to promote the Mozilla mission in their regions.

That’s easy to say, much harder to do. Especially as we grow, and the number of projects that we touch goes up. Firefox 4 release brings an unprecedented number of web projects that are part of our push to make bring the web to the next level.

Those projects vary from HTML5 demo sites, through Mozilla Developer Network Demo Studio, social web projects for twitter and facebook, web games to new Mozilla Foundation campaign – Join Mozilla. In total, I believe, we’re preparing 12 separate projects that we call “special projects” that are going to more or less closely accompany Fx4 release (not to mention Firefox 4 l10n itself, and our major projects like SUMO, MDN, AMO).

Each of the projects is very different and unique, uses different set of technologies and is embedded into different environment and yet we need to unify it for our localization community so that they don’t have to learn how to localize each of them separately.

Given the usual amount of challenges multiplied by 12 different setups it could have been a mess and it should have been impossible, but thanks to a great work done mostly by Sta艣 Ma艂olepszy, our team of l10n-drivers unified the experience as much as possible and localizers are right now doing an amazing job by bringing those special projects to every corner of the Earth, to billions of people.

Below is a summary of what happens there.

main mozilla po polsku tech

Mini kampania z okazji wydania Firefoksa 4

Wraz z nadchodz膮cym wydaniem Firefoksa 4 Mozilla planuje ma艂膮 kampani臋 promuj膮c膮 HTML5&Friends. szuka os贸b ch臋tnych do pomocy w t艂umaczeniu tej strony. Oferujemy dost臋p do serwera testowego, niewielk膮 ilo艣膰 string贸w do przet艂umaczenia i spor膮 dawk臋 zas艂u偶onego poczucia dobrze wykonanej roboty.

Zainteresowanych zapraszam do mailowania do mnie (zbraniecki at aviary dot pl) lub od razu do wej艣cia na Verbatim –聽 – zak艂adasz konto i dodajesz sugestie.

Uwaga, wysoka jako艣膰 t艂umaczenia mo偶e skutkowa膰 niemoralnymi ofertami dalszej wsp贸艂pracy ze strony 馃槈

main mozilla tech

Hard Blockers Counter 1.0

A little bit more of coding, a few bug reports later, HBC is ready for its prime time. Version 1.0 fixes the nasty toolbar height problem, it gives a user an indication of the interval covered by his plot and is just overall better.

It can be downloaded from an listing, and the source code is available at 馃檪

A few of the lessons learned and thoughts:

  • builder is awesome, but it needs more real life users. A lot of bugs are only reproduced after you write your extension for some time, hundreds of revisions etc.
  • AddonSDK is excellent for this kind of extensions. It has everything you may want and makes the whole code extremely clean and simple to write and maintain. Just look at it – about 50 lines of core code – your cat could read that.
  • AddonSDK needs more real life users. Like with the builder, bugs show up only when you really use the extension you created.
  • AMO is an excellent developer friendly platform – it gives me a lot of satisfcators in a form of stats, and ability to manage my extension release process.
  • AMO-builder bindings need more real life users. I felt like I’m the first to try to push builder based extension to AMO – many trivial bugs that can be only revealed if you try to go through the whole thing.
  • AMO’s review/release process is excellent for the extension of the Old Days. It gives us a pool of high quality, verified extensions, that are easy to find and safe to use. It does not work with agile development. Builder and AddonSDK makes creating ad-hoc extensions super simple and quick (literally, 2 hours and you’re done with the first version, every new version is about 15 minutes of work). When you then push it to AMO it feels like Matrix slow motion then – you suddenly wait days for a preliminary review, not to mention almost two weeks you have to wait for a full review. My last revised version is super old comparing to what I claim to be the “stable” one now 馃檨

This issue requires a little bit of description. I do not try to say here, that what AMO reviewers are doing is wrong – quite the opposite, I believe the whole process is excellent and anything that is exposed to the millions of users should get some time to season and be tested and be reviewed. It’s just that AddonSDK/Builder gives you a totally different setup that fits different needs. I believe AMO will need a workflow for extensions that are created in 10 minutes, distributed in 20 minutes, updated 5 times during 4 hours and are becoming useless after one or two days.

Think of a conference where schedule is updated often and people have hard time to track it. Using AddonSDK/Builder you can create an extension for it in literally 20 minutes (xhr, panel, widget). AMO is excellent for distributing it, updating your users etc., but it requires very different approach than say, AdBlock or Firebug. Then, you add a feature (ability to mark the talk you want to attend and get a notification when its room/time changes) and upload a new version 15 minutes later. You want to switch all your users to the new one now. Then you fix a small bug affecting linux users, and update users once again.

It’s amazing that Firefox is becoming a platform where it is possible, and I can’t wait for such application for AMO 馃檪

  • AddonSDK requires a lot of users with their use cases. Myk’s approach is to iterate often which means to get version 1 ASAP and then add new features for version 2 instead of trying to build an ultimate solution without a release. I love this approach and it serves AddonSDK well, but now we need version 2 of many of the packages there – it can only be done if people start using the packages for a real life extensions and report what they miss. Like – Widget content cannot be easily themed. Or, you cannot control Panel’s scrollbar appearance. Jetpack team cannot plan for those use cases, they have to come from jetpack users. So be brave! Try things, report everything you need! 馃檪
  • There is a group of at least 500 people who deeply care about our release process. They’re ready to increase the amount of items on their screen to have a continuous updates on our progress toward Firefox 4. And it’s been just two days. It can motivate people to help, make them feel the sense of progress, help them understand the challenges better. It sucks outsiders closer to the inner circle. I believe we can do much more and the nightly users, mozilla planet readers and the audience of my extension deserve the chance to get more info which can help them start contributing! 馃檪