Boost logo

Boost :

Subject: Re: [boost] Switch to CMake -- Analysis
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2017-07-21 17:10:49


On 07/21/17 19:30, Stefan Seefeld via Boost wrote:
> On 21.07.2017 12:16, Andrey Semashev via Boost wrote:
>>
>> I'm sure it's been mentioned before by someone, but as a Boost user
>> and packager (for my work projects) I don't want to deal with a dozen
>> of build systems (worse yet - multiple versions of the same build
>> system) to be able to build Boost. Having a single build system, a
>> single interface and customization point is an important advantage
>> regardless of what the actual build system is used.
>
> Don't you realize how impossible this has become, given the current size
> and scale of Boost ? You can't treat a project like Boost, with > 100
> individual libraries in it, as a single entity. It's not going to work.
> And each attempt to impose a change will result in endless discussions
> leading nowhere. We have to face this reality, and break Boost up into
> parts that individually are amenable to such change. But not as a single
> orchestrated switch.
>
> Also, please note that I did not suggest that we open the door for any
> other build systems (though that certainly could become an interesting
> discussion later).

I think you did advocate for the model where each library picks its own
tools, including the build system. Allowing two build systems would be
just the first step. I'm just saying that this won't work well for Boost
users, at least not for a significant part of them.

>> Besides, I have my doubts regarding the technical feasibility of this
>> heterogenous infrastructure as well. I'm sure there will be quirks and
>> points of incompatibiliy between the different build systems or some
>> seemingly unreasonable limitations that follow from this integration
>> that will leave someone, possibly users, unhappy.
>
> So you think we can't transition one library at a time, but you believe
> it will be possible to do a switch for 100+ libraries synchronously ?
> Sorry, but I can't follow your reasoning...

I wasn't referring to the transition process but rather the resulting
model adopted by Boost. If that model includes multiple build systems
then it is bound to have problems stemming from the integration.

Regarding the transition process (to whatever build system, not
necessarilly CMake), I think both ways have its merits. Making a
whole-Boost switch is more resource expensive, but not impossible if
there are enough interested people with enough permissions to do the
job. A step by step switch adds a period (potentially, open-ended) when
people have to maintain both build systems. As a Boost developer, I'm
not happy about that. As a user, I might not be happy either, if one of
the build systems doesn't actually work in a Boost release.

Regarding CMake as a candidate build system, I'm not convinced that the
switch would benefit Boost in terms of "new blood" or something. I don't
think the build system is something that is keeping millions of
developers out there from contributing to Boost, as being advertised. It
might be one, though probably not the major point, but I don't think
anything will change e.g. wrt. maintenance if we switch right now. Most
of the work doesn't even touch the build system or comes down to copying
and pasting a piece of jamfile.

I recognize that CMake has gained popularity and it is easier to find
support for it online. But I know that more than once I've been puzzled
about how to do one thing or the other in it, much like with
Boost.Build. So as a Boost developer, there may be a slight plus on
CMake side for me, but absolutely not worth the damage that has been
inflicted on Boost already on the road to it. As a Boost user I really
don't care as I never ever integrate third party projects into my
project build system as I consider that a broken approach in the first
place.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk