Why app-global extensions are essentially broken · 2010-08-18 12:44 by Wladimir Palant
Should I rather title this blog post “App-global extensions considered harmful”? I hope not because I see some valid use cases for installing an extension in a central location where it will be taken over regardless of the profile used. However, the current implementation in XULRunner/Firefox has some very nasty side-effects which make using this mechanism a bad choice. And there are apparently many people making the same experience.
XULRunner in large projects, part 4: Localization pitfalls · 2010-07-17 02:41 by Wladimir Palant
I am back from the Mozilla Summit and somewhat managed to process all the new information I got there. But instead of posting yet another summit summary or more summit photos (what, you didn’t know how great this summit was?) I have a far more boring topic for today: localization of XULRunner-based applications.
XULRunner in large projects, part 3: Bugs, bugs, and more bugs · 2010-07-05 22:36 by Wladimir Palant
I already mentioned platform bugs in the previous article but this discussion is worth expanding. Fact is, with the XULRunner code base being rather huge you are bound to find bugs and inconsistencies if you only dig a little deeper. Most of them will be minor though some occasionally turn out mission critical.
XULRunner in large projects, part 2: Why XULRunner isn't like Java · 2010-07-04 12:53 by Wladimir Palant
When talking about runtimes people often expect XULRunner to be something like Java. Sometimes people will also mention .NET — if you are one of them feel free to replace the word “Java” but “.NET” everywhere in this article, it shouldn’t affect the meaning in any way. Fact is, XULRunner is very different from Java and I will try to explain why.
XULRunner in large projects, part 1: What is that "XULRunner" thingy, anyway? · 2010-07-02 03:25 by Wladimir Palant
I applied to lead a session on XULRunner in large software projects at the Mozilla Summit. Unfortunately, that proposal was rejected, no talk for me at the summit. Yet there is apparently some interest in the topic, I got messages from two people who won’t be attending the summit asking for slides. I won’t create any slides but I decided to share my thoughts on the topics I wanted to discuss. Having spent the last three years building XULRunner-based applications (first TomTom HOME, now Songbird) I have some experience in this area. Still, this will be necessarily a one-sided view so don’t hesitate to comment.
Getting screen coordinates for an HTML element · 2010-01-31 02:27 by Wladimir Palant
getBoxObjectFor() is deprecated, we all know that. And there is
getBoundingClientRect() now which is much better anyway. But what should I do if I need the screen coordinates of an HTML element?
getBoundingClientRect() won’t provide them and translating doesn’t seem possible (
window.screenX is not the screen position of the window’s client area). Google found only a newsgroup discussion yet I already knew that popups can be positioned relative to a node automatically. I need to update the position of a popup that is already open and there doesn’t seem a way to realign the popup with its anchor node without closing it (at least not in Firefox 3.5).
AMO getting serious about add-on security · 2009-11-14 15:36 by Wladimir Palant
Good news: AMO is finally getting serious about improving security of add-ons. Several bugs that I filed almost a year ago and didn’t have time to follow up on have suddenly seen some movement, even to the point of setting a two weeks deadline to resolve the security issues (thanks, Jorge). Sure, this approach won’t make you new friends and one add-on author preferred to remove his add-ons rather than fix them. But it is really overdue to start enforcing policies.
Mixing absolute and relative lengths in SVG clip paths · 2009-03-12 12:14 by Wladimir Palant
A supposedly simple task turned out to be pretty hard and now I am left guessing whether I am dealing with an SVG spec issue or with a Gecko bug. I need to make corners of a XUL element transparent, something that should be easy if you apply SVG effects to it.
Avoiding naming conflicts in overlays · 2009-02-16 23:12 by Wladimir Palant
XUL overlays are a great mechanism for extending existing functionality. However, there is a catch — any scripts loaded by an overlay are sharing the namespace with the scripts loaded by the original page and the scripts loaded by other overlays (typically from other extensions). So if extension Foo defines a global variable myGreatVar and extension Bar chooses to define a global variable myGreatVar as well, bad things will happen — both extensions will end up accessing the same variable and usually both extensions will behave erratically because of that. Same happens with functions, if two scripts define the same global functions the second function definition will override the first. The situation is worst for constants — a constant cannot be redeclared meaning that one of the extensions will cause an error message.
Five wrong reasons to use eval() in an extension · 2009-02-06 13:35 by Wladimir Palant
eval() function. I have seen it used in very many extensions but only a few actually had a good reason to use it. So I want to go through all the wrong reasons one would use