[Exherbo-dev] Merging XULRunner and Firefox

Wouter van Kesteren woutershep at gmail.com
Thu Feb 9 15:06:56 UTC 2012

I would like to merge xulrunner and firefox into one.


1. Mozilla seems to actively discourage separating xulrunner. The
documentation says it's a bad idea because upgrades to xulrunner might break
stuff and the install documentation says you need to copy xulrunner to the
./xulrunner/ directory[0]. With the rapid release cycle this has become a
bigger issue. Even in firefox itself it is not fully supported. After
firefox's `make install` symlinks and wrappers are required to actually make
it work. Not to mention g++:4.6 causing segfaults when xulrunner is separated.

2. Firefox is very tightly coupled to xulrunner. So tight that only a specific
version of xulrunner is usable by firefox at any one time. So if we where to
say hold xulrunner 10 back because it was incompatible with vlc we would also
be missing out on firefox 10 automatically. The same is true for the opposite,
if we want xulrunner 10 for security fixes we can no longer use firefox 9.

3. Another problem is the way its distributed. The configure is the same for
both xulrunner and firefox. This means that even though firefox doesn't
require something, the configure still checks for it and thus we have to
depend on it for it to build. This means firefox currently has the majority of
xulrunner dependencies and configure switches. And all patches to the
configure (libvpx-1.0.0 support for example) will have to be doubled.
Effectively doubling all maintenance work.

[0] https://developer.mozilla.org/en/XULRunner/Deploying_XULRunner_1.8#Linux


Packages that depend on xulrunner can fit into the following three categories.


Packages that need it for a javascript library:

* net-libs/libproxy
webkit? ( net-libs/webkit:3.0 )
xulrunner? ( dev-libs/xulrunner[>=2.0] )

* gnome-bindings/gjs
spidermonkey? ( dev-libs/spidermonkey )
!spidermonkey? ( dev-libs/xulrunner:=[>=7.0] )

libproxy's scm has a commit[1] that says:

> Only support mozjs185 as valid mozilla pacrunner backend.  Xulrunner is no
> longer trackable from upstream due to the lightning fast movement of the
> Firefox source base. Also, Mozilla does not support usage of xulrunner from
> other apps.

The libproxy exheres should apply the patch and depend on spidermonkey instead
of xulrunner.

gjs has done the same[2] which makes it hard-depend on mozjs185 and no longer
on the xulrunner/firefox versions. The gjs exheres just needs to hard-enable
the spidermonkey part and drop xulrunner support. (The masked gjs-1.31.10
already does this)

[1] https://code.google.com/p/libproxy/source/detail?r=815
[2] http://git.gnome.org/browse/gjs/commit/?id=aeb75aa3d869195e3d8e77f2facd258cd575ba1d


Packages that need it to build a plugin:

* dev-lang/gcj-jdk
nsplugin? ( dev-libs/xulrunner )

* dev-lang/icedtea-web
nsplugin? ( dev-libs/xulrunner[~8.0] )

* media/vlc
mozilla-plugin? ( dev-libs/xulrunner[>=1.9.1] )

These packages could in theory simply be changed to depend on net-www/firefox.
Building firefox in addition to xulrunner would only add like 5 minutes on a
compile time of 1+ hours so the overhead is negligible.

HOWEVER icedtea-web and vlc also support npapi-sdk.pc[3][4][5] (currently two
versions, one from gentoo and one from openSUSE) which is a lightweight
replacement for building plugins. This would make it easyer for say chromium
users to build nsplugins without pulling in xulrunner.

gcc does not support npapi-sdk but does support firefox-plugin[6]

[3] http://icedtea.classpath.org/hg/release/icedtea-web-1.1/file/360bd0a75304/acinclude.m4#l375
[4] http://git.videolan.org/?p=npapi-vlc.git;a=blob;f=configure.ac#l177
[5] https://code.google.com/p/npapi-sdk/issues/detail?id=7
[6] http://gcc.gnu.org/viewcvs/trunk/libjava/classpath/configure.ac?view=markup#l764


Packages that require a XUL-runtime:

* net-www/firefox

If upstreams followed the mozilla install guide it will be bundled with a copy
of xulrunner for which the app is written. Currently there are no exheres that
depend on xulrunner for a XUL runtime other than firefox so this category
isn't that important at the moment to begin with.



1.  switch libproxy/gjs over to spidermonkey
2a. merge xulrunner into firefox
2b. make gcj-jdk, icedtea-web and vlc depend on firefox
3.  package npapi-sdk
4.  make vlc and icedtea-web depend on npapi-sdk

Maybe with step 2a there should also be a news item for people who have
xulrunner installed so that they are aware that they need to move the options
to the firefox package. But I'm not really familiar with news items. Some
advice on this option would be welcome.

So are there any objections or additions to all of this? Things i missed?

-Wouter van Kesteren

More information about the Exherbo-dev mailing list