calming the XULRunner waters

Mark had it exactly right: Mitchell’s post about XULRunner (and other things) was not an announcement that we are killing XULRunner. It was a statement about what the Mozilla Foundation is planning with respect to some very specific capabilities and deployment plans, due to our analysis of effort and return with respect to our primary mission.

To help people who might have been confused either by the original post or some of the reactions to it, I offer this summary:

  • The Mozilla Foundation will not be working on the a shared, system-wide XULRunner deployment capability in the Gecko 1.9 timeframe. This means that applications which are built on top of XULRunner will need to ship a copy of XULRunner with their apps, or otherwise ensure presence of an appropriate one (version, build flags, etc.). This is, to be clear, what every XULRunner-based application is doing today. Many applications in fact ship with small patches to XULRunner in their distributions anyway, taking advantage of the open source nature of our platform to make different impact/value trade-offs than we do for Firefox, and on their own schedules. This is not to say, by any means, that we do not see the value in a future that includes a universal XR runtime, with appropriate versioning, update, profile-sharing and other wonderful capabilities. It is to say, rather, that we feel the investment required and the risk of destabilization isn’t appropriate for us to undertake directly during this development cycle.
  • The Foundation will very likely not ship a “reusable” XULRunner as part of Firefox 3. While it’s still quite possible that Firefox 3 will be built on top of a private XULRunner, as outlined above, we will likely not take the schedule impact on Fx3 that would be required to make that private XULRunner usable easily by other applications.
  • The Foundation is interested in supporting the production and distribution of “naked” XULRunner builds suitable for application authors to take, customize, and distribute. This is an area in which virtually any member of the XULRunner community (including those who are apparently very invested) can make a very helpful contribution, as members of the Eclipse AJAX group have done already in providing contributed builds. I believe that the SeaMonkey project, which the Foundation supports not through directly-tasked developers but instead through infrastructure and enormous investment in shared platform work, provides an excellent example. XULRunner’s very origin is from “outside the Foundation” in bsmedberg’s early work, and given the presence in the XULRunner community of funded companies like Songbird and Joost, I am confident that both the interest and ability to assist themselves and others in this area are present.

Other important points from Mitchell’s post, which deserve deeper discussion in other posts, include:

  • A desire and commitment to invest in improving interactions with the entire XUL(runner) development community.
  • A continued commitment to invest in the powerful and valuable shared platform for the web and beyond.
  • A keen interest in improving the process of getting good and appropriate patches and other improvements (hello, docs and tools and build help!) into the common repository or pipeline promptly and predictably. As XULRunner itself is about 1000 lines of code that differs from Firefox, the bulk of the work is likely to be in build, packaging, update and other “meta” areas, I suspect.

lighting a candle

There’s going to be a lot of reaction today to Mitchell’s post about Mozilla Foundation investment in XULRunner (Daniel and Alex have already posted theirs, keen folk that they are), and I’m going to be spending the next 7 hours travelling, so I’m going to rush this note out and find out later if it helps or hinders. Exciting!

Hearteningly, I think that people are misunderstanding what exactly is being not done here. Mitchell’s post defines a “standalone XULRunner” as:

[...]an instance of XULRunner that various applications would expect to find on a machine and would share once found. This would allow distribution of a thin “application layer” only, which would then take advantage of a stand-alone XULRunner already on the target machine.
When Mitchell says that the Mozilla Foundation (and, by extension, the Corporation) are not going to invest in a standalone XULRunner, that “XULRunner runtime”, à la the JRE or .NET, is what she’s primarily contrasting, IMO. Daniel’s post seems to be more interested in something much more modest, such as a zip file or DMG that you can take, drop your application.ini and custom code into, repackage with some magic dust, and be done with. I do not read Mitchell’s post, nor do I understand our intent, as “waving off” code that would make that process smoother, nor of presenting any barrier to having the resulting code hosted in the Mozilla CVS repository. Her explicit mention that
clearly understood bug fixes should be a good candidate for immediate check-in whether or not the bug affects Firefox or any other Mozilla Foundation application
should be noted well here. Daniel’s example of improved installation support for “generic” extensions is an example of work that fits this pattern exactly, in my considered opinion, and I would not expect this announcement or direction of Mozilla employee cycles to add any new impediment to that.

(I think in hindsight that the use of the term “packaged XULRunner” or “standalone XULRunner” in this way is probably not as clear as something like “system XULRunner”, though I have become comfortable with the term myself over the last little while. The expectations for a “system XULRunner” are quite high, and it’s that significant and not-well-understood deliverable that the Mozilla Group of Companies is not investing directly in right now.)

It’s also important to appreciate that projects can be very successful in the Mozilla community without being Mozilla Foundation products. SeaMonkey is a great example of a group within the Mozilla community that has shown leadership and motivation in developing, supporting and marketing a piece of software that doesn’t have any Mozilla Foundation employees tasked directly to help it — though some Employees do indeed work primarily in the context of that product as a personal choice, and that’s a fine thing. A XULRunner community can and must exist independent of, though overlapping with, the Mozilla Foundation’s own direct technical investment.

My cab is here, so I must run, but I don’t think that things are as bleak or hostile as some others do. I think that the next few weeks and months will bear out my understanding and expectations, and I’m committed both professionally and personally to helping that they do.

now don’t take this the wrong way

(It’s the weekend, I’m off the clock; if I catch this attributed to “Mozilla”, as I saw people referring to my previous post, I will probably be quite cross. There is irony in that, but you shouldn’t feel compelled to comment on that.)

If people don’t stop link-dropping me Chris Messina’s performance art, I think I might have to hole up in a mountain cabin with automated weaponry and an ever-declining respect for personal hygiene. Don’t get me wrong, I think Chris is a pretty clever guy, and I’ve quite enjoyed the handful of real conversations I’ve had with him. He dances with the camera in a way that makes me a fair bit self-conscious, and he has Fortune Cookie 2.0 down so pat that I expect to open the BBC one day and find out that Venezuela is going to bust his patent and start making generics.

And I have a little of the manic in me too, so I can imagine how awesome it would feel to just Go like that: ranting into a recording for most of an hour, railing against enemies of the revolution; tossing half-formed ideas into the void (where they might contact the half-formed anti-ideas you threw in there 30 minutes prior — so much light); rubbing up against acceptable heresies until they’re polished and gleaming.

But if people are so starved for rah-rah web hope, if they so badly need something to Engage them, to let them feel like they’re glimpsing part of the Web Conversation, like they’re hiding under the tablecloth at the Cool Web Kids club holding their breath so nobody hears them over the gentle hum of pingback high-fiving and literary appropriation that they will spend THREE THOUSAND CONSECUTIVE SECONDS staring at Chris in a looking glass, taste buds a-tingle in anticipation of the next bon mot…. Well, damn, people. There’s work to be done. (Though, in all honesty, we’ve all sat through longer conference presentations that I’m sure were less thought-provoking and interesting. I haven’t even found time to watch Chris’ opus, but I’m pretty confident in this position.)

“Mozilla” can and probably will do many of the things I’ve read in people’s emailed excerpts of the FLV that Chris wanted to nail to the door of the church, because “Mozilla” is all the people who want to be part of it. People who agree that the Web needs a champion that isn’t going to try to slip something in their drink, a champion that isn’t going to ask you to pay to register once your free trial expires, a champion that tries every day to be a living expression of the web and sometimes succeeds. “Mozilla” is the people who build Spread Firefox and the people who dump it when they want to do something else. “Mozilla” is the people who write add-ons for Firefox and the people who will go to their grave improving SeaMonkey long after it was “supposed to be” gone. “Mozilla” is the people who help their friends and co-workers not only use Firefox but understand what that choice means. “Mozilla” is the people who mix their pronouns and metaphors because they’re terrified and proud and excited and can’t make all the things they feel about the web fit into text. “Mozilla” is the people who understand that telling Mozilla what it should be doing is like saying “nobody in my neighbourhood cares about the litter” but not picking up a piece. Chris didn’t need permission from a centralized authority to drive Spread Firefox, even ignoring the odd dichotomy of “you should make a centralized decision to drop SF so that you’re…not acting as a centralized decision making body”, he just needed to be willing to take action that might not succeed, and that would put his beliefs and goals out, in a concrete way, where people could see and judge them. He just needed to be willing to make the hard economic (scarcity, not prime rate) decisions about where to spend his time even if people were telling him he should spend it somewhere else, and I’m pretty glad he was willing. It’s scary as hell at times, and it’s a ton easier to tell people what they should do than to do what you think should be done — I speak from decades of experience here — but talk can’t change the web, can’t protect the web. And the web needs changing and protecting, make no mistake about it.

So if there are other aspirants to Ze Frank’s throne out there who want to spend an hour energizing the blogeratisphere and getting fitted for a pulpit — and I’ll be honest, you’re almost certainly not going to do it as well as Chris, unless you are actually Ze Frank — I encourage you instead to make a screencast showing someone how to use a part of Firefox, improve a document for a web developer near you, test an add-on from the sandbox, help someone make their web site work better with Firefox and SeaMonkey and Opera and Camino and Safari and all the other standards-oriented browsers out there, test a nightly, participate in any of the bazillion discussions about where the browser and platform could and should go. Do something that you think “Mozilla” should be doing, because if you’re on the web, and you care about the web, and you’re afraid that we might yet again have a monoculture of stagnation on the Internet, you’re “Mozilla” — even if you don’t know it yet.

the high cost of some free tools

(This is going to be a little long, for which I guess I could apologize, but it’s my blog, so whatever.)

So let’s try this one on for size, because everyone is offering the web developer a set of tools to lure them off the web. You’ve got your silly season participants, and you’ve got your — no, honestly, grown-ups came up with this name — JavaFX Script stuff, and they all want you to give up this archaic web thing for something so much shinier, and faster, and man have you seen the cooking-show demos?

You can point and you can click, and you will get an application, and it will run on the web (says Silverlight, because Microsoft has always been about the web: they were just getting up a good head of steam when they left IE6 dangling for years; they were always planning to come back) and on the desktop (says Apollo, because Adobe is best known for its “web” stuff in this space, but when Silverlight comes to the web, I mean, what would you do?). And it will be glorious. You will have graphics and drag-and-drop widgets and you can bet there will be pretty colours and probably a billion language choices, and if it doesn’t generate the cutest little installer then you can have your money back.

Adobe and Microsoft have always had better tools, in part because they’ve staffed and organized hard against them, but also in large part because their platforms require tools — that’s a big part of their business model. I don’t think you should need to buy, or even use-for-free, any given tool to build the web, and by using and helping to drive open web technologies Mozilla lets people choose the tools they want to use. We don’t force you to use the ones that we make money or marketshare on: you can use Eclipse or Firebug, Rails or J2EE, Komodo or Notepad, YUI or Dojo. If you ask the people who are building the exciting and significant apps on the web today, be they gmail or eBay or twitter or facebook or flickr or even Windows Live Search, I bet you that vanishingly few of them use IDEs. They use the tool that works best for them, for a given problem, sometimes using a bunch at once. I would be very surprised to discover that all of a given team even uses the same text editor, to be frank.

(We also don’t make you sign licensing agreements to get the format specifications, or prevent you from competing with us. We don’t tell you where you can and can’t install the software. We don’t tell you what you can and can’t tell people about your experiences, or that you can’t give it to other people with whom you might want to collaborate.)

If you choose a platform that needs tools, if you give up the viral soft collaboration of View Source and copy-and-paste mashups and being able to jam jQuery in the hole that used to have Prototype in it, you lose what gave the web its distributed evolution and incrementalism. You lose what made the web great, and what made the web win. If someone tells you that their platform is the web, only better, there is a very easy test that you can use:

Is this the web?

When the tool spits out some bundle of shining Deployment-Ready Code Artifact, do you get something that can be mashed up, styled, scripted, indexed by search engines, read aloud by screen readers, read by humans, customized with greasemonkey, reformatted for mobile devices, machine-translated, excerpted, transcluded, edited live with tools like Firebug? Or do you get a chunk of dead code with some scripted frills about the edges, frozen in time and space, until you need to update it later and have to figure out how to get the same tool setup you had before, and hope that the platform is still getting security and feature updates? (I’m talking to you, pre-VB.NET Visual Basic developers.)

Mozilla has always valued and supported web developers, and in turn those who support developers with tools and other assets, and we’ll invest more in this area over the coming year. But we’ll do it in a way that makes sense for the whole web, and brings to bear the human-manipulable power of web technology: a great set of primitives that people combine in very different ways, giving developers a great opportunity to choose tools and toolkits and patterns and technology that suit how they want to work and what they want to build.

The web can eat toolchain bait like this for breakfast. And, if Mozilla has anything to say about it, it will do just that. You won’t have to give up the web to work offline any more, or programmable 2D graphics, etc. Soon you’ll have the power of 3D and great desktop/application integration as well, via projects like canvas3d and registration of content handlers, and you’ll have it in a way that’s built on open specifications and a tool ecosystem that isn’t a monoculture. Why wouldn’t you choose the web, given its record and power and openness?