Boost logo

Boost :

Subject: Re: [boost] [Modularization] A new approach to header modularization
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2009-05-29 03:51:10


Christopher Jefferson wrote:

>
> On 29 May 2009, at 07:49, Vladimir Prus wrote:
>
>> joaquin_at_[hidden] wrote:
>>
>>> Emil Dotchevski escribió:
>>>> On Thu, May 28, 2009 at 11:15 PM, Joaquin M Lopez Munoz <joaquin_at_[hidden]
>>>> > wrote:
>>>>
>>>>> Emil Dotchevski <emildotchevski <at> gmail.com> writes:
>>>>>
>>>>>
>>>>>> On Thu, May 28, 2009 at 10:50 PM, <joaquin <at> tid.es> wrote:
>>>>>>
>>>>>>> Why there's pressure from users to keep Boost libs header-only?
>>>>>>> Boost is
>>>>>>> for the users, so their reasons should be given proper weight.
>>>>>>>
>>>>>> One can not create good design (in general, not just in
>>>>>> software) by
>>>>>> asking the users what would they like.
>>>>>>
>>>>> I'd rather not go into discussing such far-reaching issues
>>>>> as design theory, but you haven't asked my question:
>>>>> What are the particular reasons why users demand header-only
>>>>> libraries?
>>>>>
>>>>
>>>> Probably different users have different reasons. One reason might be
>>>> that it makes Boost easier to install initially. What's your point?
>>>>
>>>
>>> My point is that if there's pressure from users to have header-only
>>> libs (as
>>> you and also I recognize) I think the least we can do is try to
>>> understand and
>>> analyze these reasons to see their merit. If pressure were the other
>>> way around (i.e. users demanding that code be moved out of .hpps as
>>> much as possible) we wouldn't be having this sort of discussions.
>>
>> It it my understanding (based on actually supporting users on IRC and
>> mailing lists for years), that the users who are mostly concerned
>> about
>> linking are either:
>>
>> 1. Users who just crossed the chasm between the two popular platforms,
>> in either direction.
>>
>> 2. Users who don't understand the difference between headers and
>> libraries
>> in general, and don't know how to use their IDE.
>>
>> 3. Users who don't know C++.
>>
>> Users in (1) group will adapt quickly. Users in groups (2) and (3)
>> probably won't be able to use Boost effectively until they do some
>> other learning.
>
>
> I have consistently found that boost seems to cause more problems for
> developers than all the other libraries I use put together, in terms
> of building and linking.
>
> I work with a large number of developers on users on many different
> OSes and processors, so we distribute as source. Some users use
> packaged copies of boost distributed with their system, other compile
> from source.

And, what exact problems are you having, and do those problems happen
with 1.39 and have you reported them?

>>> As a user, I can describe *my* reasons to favor header-only libs:
>>>
>>> 1. The whole bjam-driven building process is nontrivial and time and
>>> space consuming.
>>
>> In 1.39, it is two commands in 1.39, on popular platforms. And
>> processors
>> are fast these days.
>
> Is if ./configure && make?

No, it's "./bootstrap.sh" and "bjam".

>>> 3. Bulding libs selectively is not as easy as it might seem, due to
>>> the
>>> fact that interlib dependencies might force you to build libB when
>>> using
>>> libA, and you don't know in advance.
>>
>> And you should not care. If you add --with-filesystem, then the system
>> library will be built automatically.
>
> Most users aren't going to go around looking for options, they will
> assume the default ones do the right thing.

The defaults indeed do the right thing. I was replying to a statement as if
user *explicitly wants* to build specific subset of libraries, it has to
do something non-trivial. If you don't want to do anyting nontrivial, all
you need is:

        ./bootstrap.sh
        ./bjam

Exactly that, without any arguments whatsoever.

- Volodya


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