[HTTPS-Everywhere] "make uncommitted" becoming obsolete; new XML format, and other goodies

Peter Eckersley pde at eff.org
Wed Jul 13 14:38:44 PDT 2011


Until now, HTTPS Everywhere's .xpi files have contained a separate .xml file
for each ruleset.  That was quite inefficient, for a couple of reasons:

1. The ZIP archiver used for .xpi files resets its dictionary for
each file, making its compression nearly useless for the rulesets.

2. On startup, Firefox has to read 1000+ inodes, which is not optimal.

3. Depending on your filesytem, the rulesets take up 5-15MB of space just
because of all the blocks allocated to them.

A recent series of commits to master and 1.0 fixes this.  It does the
following:

- Lets HTTPS Everywhere accept either traditional XML rule files that contain one
  <ruleset> as the root, or a new kind that contains a <rulesetlibrary> root
  and multiple <rulesets> as children below that.

- During build it cats all the files into a single XML file
  ("default.rulesets") and only includes that one XML file in the .xpi.
  This shrinks our 1.0.0 .xpi file sizes from ~370kB to ~120kB.

- In order to achieve this, I had to stop using git archive to make the .xpi
  files; the semantics of make and makexpi.sh will now always be the semantics
  of "make uncommitted".  So in the future, for re-building past releases,
  you should expect to always do "git checkout <tag> ; make" and will need to
  have a clean tree.

- Fixes a performance bug that was probably adding ~1 second to Firefox's
  startup time.

I'm going to make a 1.0.0development.5 release to test all of this in a
moment.

-- 
Peter Eckersley                            pde at eff.org
Senior Staff Technologist         Tel  +1 415 436 9333 x131
Electronic Frontier Foundation    Fax  +1 415 436 9993



More information about the HTTPS-everywhere mailing list