Ticket #160 (closed: fixed)
Bundling exception request for Passenger
|Reported by:||wakko666||Owned by:||spot|
|Priority:||normal||Component:||Bundled Library Exception|
This is a request to grant a bundling exception for rubygem-passenger (aka. mod_passenger, Passenger), which bundles a forked version of Boost.
Here's the package review request in Bugzilla, with it's very long history: https://bugzilla.redhat.com/show_bug.cgi?id=470696
I have been working with the upstream Boost community to get as much of Passenger's fork merged as possible:
As I chip away at reducing the differences between Passenger's bundled copy of Boost and the upstream version, it is becoming clear that there is going to be a few modifications that are unlikely to be accepted upstream.
The issues raised in the third thread listed above regarding the modifications to Boost's Exception class inheritance in order to support throwing stacktraces are legitimate concerns. The changes are fairly specific to Passenger's implementation and might present maintenance problems upstream if they're merged.
Passenger also includes some changes to Boost's signal handling that are highly Linux-centric. These changes are also unlikely to be merged upstream because the Boost folks have a requirement for being cross-platform that the Passenger changes ignore almost completely. In order to upstream this, we would need to implement the cross-platform support required by the Boost community.
Due to the way Passenger's changes integrate with the core Boost class structure, it is not possible to extract Passenger's changes.
Due to the implementation details, I do not believe that releasing a separate forked version of Boost adds significant value and is worth the effort.
Boost is licensed under a modified BSD license and appears to be neutral toward bundling. In some cases, bundling appears to be expected. Passenger uses a stock BSD license, but I have received permission from the Passenger folks that any of the forked changes that get accepted upstream may be relicensed under the Boost License.
Due to the potential long-term maintenance burden, I don't believe Fedora's Boost package is an appropriate place for these changes. In addition, the Passenger folks have consistently demonstrated that they are actively updating their forked Boost with regular updates to the latest upstream release of Boost. They are porting their changes forward on a regular basis and appear to be committed to doing so for the foreseeable future.
Finally, if Passenger is granted an exception, my work on upstreaming the forked changes will not cease. I will continue to push the forked changes upstream until I reach a minimum changeset that upstream won't accept. At that time, I will reevaluate the merits of maintaining that changeset elsewhere (e.g. the Fedora Boost rpm), and attempt to remove the bundled copy. I have already received help from the Passenger developers for adding support to build Passenger against a non-bundled Boost. So, as soon as a non-bundled Boost includes support for Passenger's requirements, then Passenger should "just work" with it.
- Owner set to spot
- Status changed from new to assigned
- Resolution set to fixed
- Status changed from assigned to closed