the maturity of writing your own

Daniel Glazman has written about the pain he’s experienced trying to update his splinter NVu tree to track the significant Gecko development. It’s a very difficult task, and not one that I would have signed up for. There are a number of suggestions that others have made that might have made the task easier, but that’s for another post. To be perfectly frank, I have little personal interest in making the “maintain a fork of Gecko in another CVS repository” use case materially easier, let alone adding cost to already-difficult Gecko development to support it.

(I had a huge section here about the details of internals-vs-platform and some excellent responses that others have made to the post, but I just moved it to another draft because this post is about something else, dammit.)

What I really want to write about is this passage in Daniel’s latest post on the topic:

Let me first give you an example : suppose you are an experienced c++ coder but a true beginner in Mozilla, and you need to build a xul standalone front-end for an app of yours; you can’t rely on xulrunner yet, because it’s said to a bit immature for the time being. So you want to build a standalone toolkit-based app like Nvu, Firefox or Thunderbird… You start looking at mozilla/browser, mozilla/mail and then you cry. The makefiles are incredibly complex and almost not commented, most of the files in app directory are hard to understand so you don’t really know how to tweak them[...]

If you are a software developer faced with the choice between

  • a piece of software that is designed to solve your exact problem, which is not yet release-quality, but is already being used by other people for their projects in exactly this way; and
  • writing your own such piece of software on the basis of code you don’t understand, and which was never intended to be anything more general than “the startup code for Firefox”

then you might have some reasons to choose the latter, I suppose, but I can’t for the life of me understand how “maturity” is one of them. XULRunner is farther towards its stated goal — which happens to be completely identical to the goal that Daniel uses in his example — than anything you’ll find in the directories that Daniel lists, as evidenced by the fact that a number of people are already using it in service of that goal.

Even if XULRunner falls short of some subgoal today, investment in improving it to suit the needs of your own app is almost certainly the wiser course, as you reduce the need to maintain your own private fork of the firefox/thunderbird/whatever code — back in the early Mozilla days, we used to refer to this as “the stupid tax”, and talk about how it was often a strong disincentive to keep patches private instead of integrating well-designed hooks into the core app.

4 comments to “the maturity of writing your own”

  1. entered 17 November 2005 @ 11:49 am

    Thank you for that. I’m amazed when people say, “neither of these really solves my problems, but I’ll go with the one that solves it the least because of this one minor issue”. I’ve been messing with XULRunner and it’s at least as mature as Mozilla itself was when we all jumped on board that particular train. Most of the issues I’ve had have come from trying to run code that expects to be inside the Firefox or Thunderbird environment and suddenly isn’t, so junk breaks.

  2. entered 17 November 2005 @ 11:55 am

    [...] shaver » the maturity of writing your own [...]

  3. entered 17 November 2005 @ 10:16 pm

    Thanks so much for posting this great read.Danieal seems like he knows what he is talking about most of the time but ti seems he is a bit off on that last passage. Either way like how you pointed out the stupid tax and I hope that we will never have to pay it.

  4. Lukas Ramach
    entered 22 November 2005 @ 2:10 pm

    Basicly i can agree with you about this topic at the current point of development, except for the part where you imply that no one outside mozilla-development understands the startup code.

    But what about the ones who use Mozilla as a plattform for years? I get really big headaches when i think about migrating to XUL-Runner from the Mozilla-Suite code base (I have to admit that the headach regarding switching to Firefox is no less). And yes i need hooks in the startup code that XUL-Runner does not provide (at least on first review) e.g. changing the app icon with the MS-Windows hook for all App-Windows (no the id switch is not sufficent for me).

    And of course there is always the problem to get the acceptance to use a beta software as a base of a final product…

    But nevertheless i hope that XUL-Runner will clean up the mess.