Mozilla builds have become dependent on extensions including cookie, wallet, and xmlextras (for XSLT) at least. We need to eliminate these unconditional compile-time dependencies, replacing them with XPCOM-based runtime dependencies where the calling or dependent code fails-soft if the extension is missing. The techniques are well-known, and typically involve the calling code publishing a generic interface that extensions can implement and specify for callbacks when registering themselves with the calling code.
We do not propose to change the extensions configured in default builds, so don't panic -- you won't lose your favorite default extension feature! But we will police *all* extensions with a tinderbox configured without any extensions, and back out or require prompt fixes to remove any future compile-time dependencies. There have been attempts by volunteers to fix these dependencies in the past, which have been frustrated by non-technical objections, by mixing attempts to clean things up or generalize further with what should be more straightforward indirection via XPCOM techniques, and by lack of support from extension owners. See bug 18352 (http://bugzilla.mozilla.org/show_bug.cgi?id=18352), which records one such attempt, and which is now the tracking bug for all the necessary work items, filed as separate bugs, to fix this problem. We need active support, if not direct action to re-integrate modularly, from the extension owners. Please update the relevant dependency bug if you own the extension it covers: xmlextras dom dependency: http://bugzilla.mozilla.org/show_bug.cgi?id=92377 cookie various dependencies: http://bugzilla.mozilla.org/show_bug.cgi?id=113519 wallet embedding dependencies: http://bugzilla.mozilla.org/show_bug.cgi?id=113538 wallet mail back-end dependencies: http://bugzilla.mozilla.org/show_bug.cgi?id=113540 If there's an extension not listed above, please file a new bug and link it as a dependency of 18352. We would like to implement the new zero-tolerance policy against build-time dependencies on extensions on February 1st. If you own an extension and can't reintegrate modularly by then, sound off here and in the bug. With your help, perhaps a volunteer can do it by then. Or maybe we can figure out a better date that still fits in 0.9.9. But we are serious, so there will soon come a point where a bogo-dependency on an extension will be cut by backing out the code that couples non-extension sources to extensions at build time. /be
