Bug#488753: Boost bundling
Micah Anderson wrote:
I think its perfectly fine
for you to do this, although its my opinion that if you are going to be
shipping a fork of Boost, you should provide a *separate* download of
the Boost pieces for people, rather than bundling them all together. If
you did this, then issues in Boost could be handled separtely and Debian
and other distributions could ship your version of Boost as a
dependency, while handling the conflicts with other versions of Boost
that an admin might want to have installed.
Alright, sounds reasonable. But there are a few issues that remain; see
This part is very interesting to me. Have you tried to push your
specific Boost modifications upstream to the Boost project? Have you
tried and had difficulties, what sort of difficulties?
We haven't tried, mainly because the modifications that we've made are
highly Passenger-specific and Unix-specific. Boost is supposed to be
portable beyond just Unix, so I don't think our changes would have any
chance of being accepted by upstream. See also my next point.
It seems like managing the code deltas between your modified version and
theirs will over time become an unnecessary burden that Phusion will
have to carry. Getting these modifications (which likely would benefit
many people and projects) into Boost would reduce that workload on you
folks, and if they were upstream in the original Boost we wouldn't be
having this discussion :)
Yes, we have considered the pros and cons of bundling Boost and managing
our modifications. We think that it's easier to bundle Boost and to
manage our modifications, considering the amount of extra work that
we'll have to do to get this accepted by upstream:
1. We'll have to make our modifications portable beyond Unix, e.g. it
has to support Windows as well.
2. We'll have to extract the Passenger-specific parts, and introduce
them as new Boost libraries.
Phusion Passenger only supports Windows, so any work done on (1) does
not benefit Phusion Passenger.
(2) will mean that we have to get through the Boost library acceptance
procedure. There's no guarantee these new libraries will get accepted
the first time, so we'll probably have to modify the libraries according
to feedback from the Boost community. This is all extra work that does
not benefit Phusion Passenger. There also remains the question of who
will maintain these new libraries; we've already got our hands full on
our own projects.
We have limited man power, so we had decided to bundle Boost and to
maintain our own modifications. Thanks to excellent version control
tools, upgrading our modifications to new Boost versions hasn't been
difficult so far.
It seems like you are having this problem with other distributions as
well. If Fedora was able to patch Passenger to get rid of the bundling,
and all they needed to do was to then get the right version of Boost
available (or perahps apply your Boost patch set to the version of Boost
that they distribute, if it were not too intrusive), then this issue
would be solved.
Our Boost patches are pretty intrusive. It will most likely break both
source and binary compatibility in some ways.
If your specific version of Boost was available to Debian users, as a
separate package, this wouldn't be such an issue. Perhaps your
modifications to Boost could be included in the Debian package of Boost,
even if the upstream Boost maintainers weren't including them (this
would serve as an additional source of pressure on the upstream Boost
folks to include your code as the Debian folks would also be urging for
integration to reduce the code delta).
This is possible, but this leaves me wondering what benefits it will
bring. Phusion Passenger is the only software that depends on this
modified version of Boost, so the situation would be no better than when
Phusion Passenger bundles Boost.
Are these modifications available
somewhere for review?
Yes; the easiest way to view the modifications is through the git
history of the directory 'ext/boost'. All commits beyond
1a3f207b4a0a613fa3e067bccf1b29977cc4790e ("Upgrade to Boost 1.35.0") are
modifications to Boost, with the exception of commits that are named
along the lines of "Add Boost.xxxx library" or "Add Boost something.hpp
Phusion | The Computer Science Company
Chamber of commerce no: 08173483 (The Netherlands)