Mike Hommey: xulrunner 1.9.1.6-2 diff stats
As part of preparing xulrunner 1.9.2 (which would lead to Iceweasel 3.6), I have gone through all the patches currently applied to the latest xulrunner release, to keep track of what should be upstreamed, what needed feedback, what patches I needed to update in upstream bugzilla, etc.
As I have talked about our differences with upstream on a few occasions already, and as I was doing this grunt work anyway, I thought it would be nice to make the results public.
First, a few reference numbers (excluding changes to generated
Those that were picked from upstream, or sent and eventually applied in 1.9.2 or trunk (12 files changed, 68 insertions(+), 41 deletions(-)):
configure files):
- Changes between upstream 1.9.0.1 and Debian release 1.9.0.1-1: 85 files changed, 1163 insertions(+), 644 deletions(-)
- Changes between upstream 1.9.0.16 and Debian release 1.9.0.16-1: 86 files changed, 1177 insertions(+), 634 deletions(-)
- Changes between upstream 1.9.1 and Debian release 1.9.1-1: 70 files changed, 770 insertions(+), 363 deletions(-)
- Changes between upstream 1.9.1.6 and Debian release 1.9.1.6-1: 76 files changed, 796 insertions(+), 380 deletions(-)
- Changes between upstream 1.9.1.5 and upstream 1.9.1.6: 165 files changed, 3094 insertions(+), 1387 deletions(-)
- Changes between upstream 1.9.1 and upstream 1.9.1.6: 1263 files changed, 64322 insertions(+), 67376 deletions(-) (though more than half of that relates to upstream bump of sqlite3 and the vorbis stack)
- There are less changes between upstream and Debian than between two consecutive upstream versions.
- Debian changes only account for changes to the xulrunner package, i.e. it excludes changes to Iceweasel itself, or to nspr or nss, but these are far less important in number.
- The number of changes applied decreases when switching to a new upstream branch. This is mostly due to patches getting applied upstream.
- Debian patches on a given branch are pretty stable. In other words, most of the work is done on the first release of the branch.
make clean/distclean doesn t leave stuff around and that xulrunner can be properly built twice in a row.
Differences between 1.9.1.6-1 and 1.9.1.6-2 look like this: 31 files changed, 341 insertions(+), 167 deletions(-).
Some were stolen from bugzilla (13 files changed, 162 insertions(+), 70 deletions(-)):
- https://bugzilla.mozilla.org/show_bug.cgi?id=458631
- https://bugzilla.mozilla.org/show_bug.cgi?id=519468
- https://bugzilla.mozilla.org/show_bug.cgi?id=525047
- Test suite issues (2 files changed, 3 insertions(+), 4 deletions(-)):
make clean/distcleanissues (10 files changed, 28 insertions(+), 15 deletions(-)):- https://bugzilla.mozilla.org/show_bug.cgi?id=541767
- https://bugzilla.mozilla.org/show_bug.cgi?id=541768
- https://bugzilla.mozilla.org/show_bug.cgi?id=541769
- https://bugzilla.mozilla.org/show_bug.cgi?id=541770
- https://bugzilla.mozilla.org/show_bug.cgi?id=541774
- https://bugzilla.mozilla.org/show_bug.cgi?id=543464
- https://bugzilla.mozilla.org/show_bug.cgi?id=543469
- Other issues (8 files changed, 112 insertions(+), 49 deletions(-)):
- https://bugzilla.mozilla.org/show_bug.cgi?id=538929
- https://bugzilla.mozilla.org/show_bug.cgi?id=542749
- Disable python-xpcom tests for now.
- Disable javaxpcom tests at build time when DEB_NO_JAR is unset.
- Synchronize config/rules.mk and js/src/config/rules.mk for check-sync-dirs.py (we used to localize the changes required in each config/rules.mk, but as we now run <core>make check they need to be synchronized)</core>
- Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=455238
- Remove enable-system-lcms check, which somehow resisted merges with upstream
- Properly clean xulrunner/installer/*.system.conf
Those that were picked from upstream, or sent and eventually applied in 1.9.2 or trunk (12 files changed, 68 insertions(+), 41 deletions(-)):
- https://bugzilla.mozilla.org/show_bug.cgi?id=331779 (this one was applied on Fennec)
- https://bugzilla.mozilla.org/show_bug.cgi?id=442196
- https://bugzilla.mozilla.org/show_bug.cgi?id=444918
- https://bugzilla.mozilla.org/show_bug.cgi?id=481350
- https://bugzilla.mozilla.org/show_bug.cgi?id=491617
- https://bugzilla.mozilla.org/show_bug.cgi?id=491646
- https://bugzilla.mozilla.org/show_bug.cgi?id=501241
- https://bugzilla.mozilla.org/show_bug.cgi?id=502369
- https://bugzilla.mozilla.org/show_bug.cgi?id=510040
- https://bugzilla.mozilla.org/show_bug.cgi?id=514151
- https://bugzilla.mozilla.org/show_bug.cgi?id=331776 (the part that remains in Debian needs to be sent in a new bug as this one is closed)
- https://bugzilla.mozilla.org/show_bug.cgi?id=349985
- https://bugzilla.mozilla.org/show_bug.cgi?id=356011
- https://bugzilla.mozilla.org/show_bug.cgi?id=428765
- https://bugzilla.mozilla.org/show_bug.cgi?id=434190 (we actually don t have a patch for this one, but a workaround is in bz#486681 below)
- https://bugzilla.mozilla.org/show_bug.cgi?id=435683
- https://bugzilla.mozilla.org/show_bug.cgi?id=440908
- https://bugzilla.mozilla.org/show_bug.cgi?id=444440
- https://bugzilla.mozilla.org/show_bug.cgi?id=444477
- https://bugzilla.mozilla.org/show_bug.cgi?id=486681
- https://bugzilla.mozilla.org/show_bug.cgi?id=501300
- https://bugzilla.mozilla.org/show_bug.cgi?id=506224
- https://bugzilla.mozilla.org/show_bug.cgi?id=530534
- https://bugzilla.mozilla.org/show_bug.cgi?id=445128
- https://bugzilla.mozilla.org/show_bug.cgi?id=501434
- https://bugzilla.mozilla.org/show_bug.cgi?id=528687
- xulrunner-config: Give more appropriate cflags and libs
- Install applications in /usr/local/lib instead of /usr/lib
- Unhide release notes link in about: but only if app.releaseNotesURL is defined
- In about:, Don t put an about:blank link when there is no vendorURL defined
- Don t use static strings when setting environment variables
- Exec instead of uselessly forking in xulrunner launcher script
- Disable optimization on alpha for the url-classifier component (this will probably wait for the test suite failures on various architectures to be fixed)
- Build js shell and xpcshell against system libreadline
- Don t export js_SetTraceableNativeFailed, which is only used internally
- Increase stability and performance on mips and mipsel
- Feature changes:
- Disable APNG support when system libpng doesn t support it (6 files changed, 71 insertions(+), 10 deletions(-) ; mostly #ifdef ing parts of the code related to animation)
- Use application.ini from where the xulrunner-stub lies (1 files changed, 14 insertions(+), 3 deletions(-) ; This one may be dropped and replaced by something totally different, possibly upstreamed)
- Don t register plugins if the MOZILLA_DISABLE_PLUGINS environment variable is set (1 files changed, 25 insertions(+), 0 deletions(-) ; very useful to isolate plugin-related crashes ; I don t think it s worth upstreaming considering the upcoming plugin-in-separate-process work)
- Remove (un )registering system (1 files changed, 0 insertions(+), 43 deletions(-) ; xulrunner versions that are installed by a package manager don t need to be registered, since the package does it already ; a variant that conditionally removes it may be upstreamable)
- Preferences changes:
- Set javascript.options.showInConsole (1 files changed, 1 insertions(+), 0 deletions(-))
- Set DPI to system settings (1 files changed, 1 insertions(+), 1 deletions(-))
- Cosmetic changes:
- Install loading_16_grey.gif in classic.jar, and add an override for loading16.png (1 files changed, 2 insertions(+), 0 deletions(-) ; Since we don t support APNG, we replace the most used one by its (ugly) GIF equivalent)
- Add links for about:bugs and about:README.Debian in about: (3 files changed, 19 insertions(+), 0 deletions(-) ; I d like to make that something living in debian/extra-stuff)
- Integration changes:
- Add another preferences directory for applications: defaults/syspref (1 files changed, 2 insertions(+), 0 deletions(-))
- Add an rpath to libpyloader.so and _xpcom.so (2 files changed, 2 insertions(+), 0 deletions(-) ; allows python xpcom to work out of the box)
- Forward-port nsIBadCertListener from 1.8 (4 files changed, 266 insertions(+), 1 deletions(-) ; This is necessary for at least galeon and kazehakase, because the new interface is useless for embedding applications)
- Build-related changes:
- Allow to override the PYTHON_SO variable (1 files changed, 1 insertions(+), 1 deletions(-))
- Put the crmf library before the NSS libraries (1 files changed, 1 insertions(+), 1 deletions(-))
- Allow to build java jar files in 2 pass (2 files changed, 8 insertions(+), 2 deletions(-))
- Avoid libxpcom being excluded from linked libraries by -Wl, as-needed (1 files changed, 2 insertions(+), 0 deletions(-))
- Ignore system libjpeg, libpng and zlib version checking (1 files changed, 3 insertions(+), 3 deletions(-))
- Force to not use -fshort-wchar (1 files changed, 1 insertions(+), 1 deletions(-))
- Add soversion to libmozjs (2 files changed, 19 insertions(+), 2 deletions(-) ; useful for couchdb, libjavascript-perl and others)
- Don t build example component (1 files changed, 0 insertions(+), 1 deletions(-))
- Don t install system profile (1 files changed, 0 insertions(+), 2 deletions(-))

Agile Business Analysts?
I have recently been fleshing out my thoughts on the role of business analysts in an Agile team. This is something I have historically addressed on a case-by-case basis with clients, but when thinking about it last week at a client site, I realized that I do have a general take on how the role and responsibilities of a business analyst change when a group moves to using an Agile process. Per the usual, I ll be using Scrum as the example process where needed.
The Classical Roles
Historically the business analyst has had two primary roles. In a process where cross-functional communication and collaboration are minimized, these roles are essential. What little communication that takes place between the business and the software development teams purporting to serve them passes almost exclusively through one or more business analysts. I view the business analyst in a phased development approach as having two roles; Translator and Gatekeeper.
The Translator
The business analyst is primarily tasked with taking the needs of the business and translating them into a written document that is then handed to the software developers and testers. This role s necessity is based upon some fundamental assumptions. First, programmers and testers are on the whole, too socially retarded to actually talk to the business persons and find out what they want. Second, the business is primarily viewed as being unable to focus its thought long enough to tell the programmers and testers what they need. Since a key value of an Agile approach to software development is to have individuals and their interactions be the driving force rather than processes an tools (see 


How a window manager with tiling layouts makes a 1024x600 resolution livable.
I spend a lot of time in front of a screen, and for the past year I have
used only my netbook. No desktops, no laptops. Just a cheap $200 computer
that is nearly a kid's toy. The most challenging thing about this is
dealing with the 1024x600 screen resolution. When I moved to this screen
from something with many more pixels, it at first seemed very cramped.
After a year, I think that the most important part of coping with the small
screen is the flexability and customizability of layouts provided by the
Xmonad window manager. In this post I will explain a few layouts I have
developed for fitting specific tasks onto the netbook screen.
(I assume that you know maybe 0.1% of Haskell (about what I do),
and can read Haskell code without having a brain aneurysm.)
web browsing

















Of course, one would expect me to react to 
Above are sections of my Webalizer output related to my blog which show the data transfer use of search.msn.com (Bing presumably) which is 50% greater than that of Google and Yahoo combined. Why does MSN need to do 455MB of transfer so far this month to scan my blog when Google gets the job done with 189M and Yahoo only takes 109M? Also judging by the referrals Bing is only 3% as much use to me as Google.
Above is a sample of the Webalizer output from www.coker.com.au, MSN is using 525MB of data to scan the site which contains about 1.2G of static files that change very rarely. A Russian malware site seems to be downloading it three times a month, and Google only takes 35MB of data transfer to scan the site (which is probably still excessive).
If Bing was a quality search engine that returned appropriate results then this could be forgiven. But however it is a very poor search engine that returns bad results. For example if you query Google or Yahoo for bonnie++ you will get an entire page of search results concerning my Bonnie++ benchmark, and those results are ordered in a sensible way. If you ask Bing then the first four results concern Bonnie (three women and a plant) and most of the first page don t concern my benchmark.
Some time ago I had blocked MSN from scanning a server that I ran. The server in question had all the web servers for my domain plus quite a few other small domains. The total MSN data transfer was 3G per month which was almost half the data allowance for the server in question (data plans in Australia suck that s why my web servers are hosted in Germany now), so it was a question of whether to allow normal operation of the business or MSN searches. With Microsoft not running a popular search engine (then or now) it was an easy decision.
I think that anyone who accepts money from Microsoft/Bing is doing their users a mis-service. Bing is simply an inferior search engine, it gets bad results and imposes excessive costs on service providers. Yahoo however seems to be a reasonable service, not as good as Google for the web hosters but not too bad.
I wonder what would happen if Yahoo offered some sponsorship money to the Debian project in exchange for being the default search engine. I m sure it would be dramatic.
I always thought
I'm glad
It is well known that apt has an issue when it comes to resolving circular dependencies. Therefore, Debian bug
reporters have set out to eradicate circular dependencies from the archive. This does, however, add significant bloat to
the actual packages, and I am questioning why this is really necessary.
For example, aide. aide has an aide-common package, depending on aide aide-binary. aide-binary is a virtual package
by aide, aide-dynamic, and aide-xen. All three providers of aide-binary depend on aide-common again, which is a circular
dependency.
If I now follow the request posed in #545852 and remove aide-common s dependency on aide aide-binary,
I ll have to cater for the case of the aide-binary bein absent in each and every helper script included in
aide-common, which would drive the script s complexity up to a new level. I really hate that idea.
Is it really necessary to work around apt s shortcomings by eliminating the case that apt doesn t handle
well from the archive, and driving up other packages complexity (and the possibility of bugs in this added
complexity)?
It seems that Sun doesn't care much about getting bugs fixed in Java.