[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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 below.

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 header file".

Hongli Lai
Phusion | The Computer Science Company

Web: http://www.phusion.nl/
E-mail: info@phusion.nl
Chamber of commerce no: 08173483 (The Netherlands)

Reply to: