Boost logo

Boost :

Subject: Re: [boost] "boost cold shoulder" (was proposal for #pragma oncesupport)
From: Daniel Frey (d.frey_at_[hidden])
Date: 2009-06-10 12:27:41

On 10.06.2009, at 17:39, Sid Sacek wrote:

> John and Pete,
> I do appreciate your insights into the inner workings of the Boost
> community. I'm not discouraged about the lack of interest in my
> suggestion, but I was somewhat surprised. Boost libraries are one of
> those things that make life better for programming engineers. I
> believed that was the unwritten philosophy behind Boost, to "Make Life
> Better." Extending that philosophical notion, the Boost libraries
> would
> also know about the shortcomings of compilers and operating systems
> and
> help to improve their performance as well, simply because it "makes
> life
> better."
> I suppose I must have been mistaken about that... perhaps not
> everybody
> in the Boost community has feelings of magnanimity and charity.

I think you are suggesting the wrong intentions here, which feels a
little bit insulting. A small disclaimer: I picked your mail to reply,
but it's also a general remake concerning the recent discussions on
this list. I think you know what I mean :) So, please don't take it
too personal as the answer might be a bit long for such a small insult.

As maintainer of the Boost.Operators library and long-time Boost user
and contributor I don't think we lack "charity" or something. The
crucial point to understand what we are doing is this:

   We need to *balance* interests.

What you and others (Christian S.) seem to miss is the fact that you
can not just solve one problem and create another. Especially if that
means to put the burden on other people.

#pragma once is controversial because it's *not* just a no-brainer
which "Makes Life Better.". Granted, it may make your life better.
Even that of other VC++ users. But it creates more maintenance work,
as we still need include guards for those compilers that don't support
it, so the code won't get simpler, it will become more complex. It
might also introduce new bugs for headers that may be included
multiple times.

If you use configuration macros, you need to include the configuration
headers for each header that has an include guard/#pragma once.
Increases compile-time, complexity, ...

Coming from a VC++ perspective, you might not be aware of the
drawbacks (because you *replace* your include guards with #pragma
once) and that's OK, but please don't imply malice if we don't agree
to your suggestions and ideas immediately. And please respect that
fact that all perspectives need to be considered. We aim to solve all
problems and drawbacks involved, and this is probably why it's so much
work and why it is so hard. We don't compromise easily, which
sometimes might look unhelpful. We nitpick on details, we explicitly
try to find the holes in your ideas, etc.

OTOH, I think this is what creates Boost's excellence. This is why
Boost produced so many incredibly valuable things that even become
standardized. It's the crucial difference to other libraries.

That said, ask yourself: What could help to move the idea/suggestion
on? How can you address/solve the drawbacks others see? Could we
somehow combine include guards/#pragma once via macros to
automatically make sure inconsistencies can't occur? What else can be
done? Generally:

   Be constructive, improve you ideas/suggestions.

That's the way to successfully participate in Boost, not by implying
malice to others.

Best regards, Daniel

Boost list run by bdawes at, gregod at, cpdaniel at, john at