04.11.08
One License to Rule Them All (Phase 2)
Over a year ago, I filed bug 368091 to make it possible for Toolkit’s copy of license.html (about:license) to serve as a licence file appropriate for all mozilla.org projects, not just the then-Corporation Fire/Thunder pair. (That bug was itself the result of a September 2006 bug to fix the XPFE copy of license.html to stop telling Camino and SeaMonkey users their official binaries were released under the Corporation EULA, which in turn was the result of a June 2006 bug to clarify the licensing references for Camino.)
For a long time bug 368091 sat unloved, with the neglect punctuated by brief flurries of activity which generally ended with exasperation and stalemate over seemingly mutually incompatible requirements. In the meantime the two copies of license.html grew to three, and every change to about:license had to be made either three or six times across mildly-forked copies of the file. This was no fun for anyone involved, including branch drivers approving changes for licensing compliance. Finally, after Stefan Hermes filed a bug last month about bad redirects on mozilla.org (and indirectly about bad URLs in SeaMonkey following its switch to Toolkit), I decided to post an interim patch for 368091 just to get the discussion moving again. Several weekends (and two additional patches for 368091 and one for Thunderbird), we’re down to only two copies of license.html on the trunk, and the Toolkit copy is now suitable for all mozilla.org applications. Phase 2 is complete!
For the curious,
toolkit/content/license.htmlis now pre-processed before being packed intotoolkit.jar, which ensures the copy of the license intoolkit.jaris devoid of application- or organization-specific EULA blocks. Firefox now takestoolkit/content/license.html, pre-processes it to include the Mozilla Corporation EULA block, stuffs that file inbrowser.jar, and sets up a chrome override so that about:license’s chrome URL (chrome://global/content/license.html) is overridden with the chrome URL for the Firefox-specific version. Thunderbird currently strips out the “about:license” fragments of all of the anchors intoolkit/content/license.htmland ships a stand-alone file instead of shipping a stand-alone forked copy oflicense.html; after bug 428144, Thunderbird will also post-process in its EULA block. If you’re building a browser-type application, you can use the Firefox model to build your own license file; if you’re building a non-browser application, the Thunderbird model (most of Phil Ringnalda’s original “ship a stand-alone file” work in bug 339117 plus my patches from bug 427316 and bug 428144) should work well for you.
When I started filing these bugs back in June of 2006, I never intended that “one license to rule them all” would turn into what appears to be an obsession (at that point, I certainly didn’t expect I would fix any of the bugs along the way, let alone most of them). For over a year bug 368091 has been my #2 tab—perhaps that should have clued me in to the borderline obsession—and I’m delighted that I can finally close that tab. We’re not quite done with the quest to drive the number of license files on the trunk to one—XPFE (and thus Camino) still has a copy, but its days are numbered once I’m done with Camino 1.6 release work—and there are a couple of other follow-ups to finish, but we’ve completed the hard part of the trek.
This has been an interesting journey for me, and I extend thanks to everyone who helped out along the way—Gerv Markham and Frank Hecker at the Foundation, Robert Kaiser, Chris Thomas, and Stefan Hermes from SeaMonkey, Phil Ringnalda from Thunderbird (who, among other things, kept reminding us that any solution had to work for non-browser apps), Reed Loden on the www.mozilla.org side of things, Benjamin Smedberg for finally driving me to the correct solution, code review, and the SunOS tinderboxen bustage fix, and Samuel Sidler for getting things rolling (perhaps I should be cursing him instead?
).
Stay tuned for Phase 3, coming in a few weeks, and then our long international nightmare will be over.
April 15, 2008 at 2:06 pm
[...] is the sum for my six current active Terminal tabs from the tail end of One License to Rule Them All (Phase 2) on (I had to quit Terminal once I had the fix mostly complete because of some sort of corrupted [...]
June 2, 2009 at 3:16 am
[...] an unrelated note, as of today there finally is one license.html to rule them all—thanks to mento, pink, and ss for helping wrap that up—and I’m auditioning for a new tab [...]