Boost logo

Boost :

Subject: Re: [boost] [Modularization] A new approach to header modularization
From: Christopher Jefferson (chris_at_[hidden])
Date: 2009-05-29 03:26:51


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.

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

I do love boost, which is why I've fought to make sure we continue
using it, but compared to other libraries it is often a pain. Much of
the pain goes away for header-only libraries.

Chris


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