Boost logo

Boost :

From: Paul Mensonides (pmenso57_at_[hidden])
Date: 2003-01-20 21:06:03


----- Original Message -----
From: "David Abrahams" <dave_at_[hidden]>

> > I don't want to propagate a war here, but Andrei's perception (of
> > his perception) is not entirely unfounded either. In the past,
> > Andrei has raised some practical concerns with certain design
> > strategies. At that time, his opinion was derided based entirely
> > on, from my perspective, religious devotion to an unproven concept.
>
> Argument is very different from derision. I think it would be very
> foolish to deride Andrei's opinions, which usually have something very
> incisive behind them.

Agreed, but that is more-or-less what happened. Andrei asked for an example
that justified the design. No one could produce one. The best anyone could
do was say "it's like the STL, so that must be good," and "we might need the
generality if the future." Once again, I don't want to get into an argument
about this particular issue, I'm only pointing out that people tend to
respond harshly when their designs (or favored designs) are questioned.
Simple as that. I'm not immune and neither are you.

> > Andrei asked for practical examples of the utility of those design
> > strategies, and he was effectively told, "If you don't like it,
> > don't use it." I don't want to get into that old argument again,
> > and that is not my intention. I'm merely pointing out that Andrei
> > got flack for presenting an opinion counter to many Boost
> > developers' and standing by that opinion.
>
> I think there's a big difference between flack and disagreement. The
> fact that some people weren't convinced by Andrei's argument, and that
> you were, doesn't mean that there's a political bias.

It isn't completely based on political bias, but it is there nonetheless.
It is *always* there in some form or another. Incidently, Andrei was flat
out told "if you don't like it, don't use it." That wasn't exactly
addressing Andrei's concerns about the design or attempting to reach any
sort of consensus. It was a flatout dismissal of Andrei's arguments. Boost
is great at making people's opinions feel unwelcome if they don't conform in
certain areas.

> A lot more goes
> into making a particular design appealing to people than logic.
> People just seem to have different ideas about what's going to work
> out.
>
> To make this concrete, what I think you're referring to is that Andrei
> made the argument that nobody needs different kinds of compile-time
> data structures, while other people, drawing on their experience in
> related domains, thought it was either incorrect or premature to make
> that conclusion. Even if that was a completely wrong, unfounded, and
> unreasonable conclusion, there's no reason to think that it was based
> on anything personal.

I'm not saying that it was based on some type of personal vendetta. I'm
saying that people don't like it when someone steps up and calls it like
they see it. It is to the point that at various times, opinions are
suppressed to keep from getting into a big controversy. That is
self-defeating.

> > The fact is that there are many things that various Boost developers
> > will argue over with religious fervor (i.e. another way of saying
> > "political"), and I simply don't believe that people are entirely
> > objective.
>
> Of course they're not.
>
> > Their preferences influence their beliefs, and people typically
> > don't take criticism well. That is to be expected. Such is life.
> ^^^^^^^^^^^^^^^^^^^^^^
> Well, yes. If you want your arguments to be convincing, it helps to
> consider how to best deliver them so they can be heard.

Case in point then. Which was the original reason that I posted. Andrei,
IMO, has not been treated very nicely here at one time or another. Take
that as you like, but that is how I have interpreted various posts.

> > The same thing looks like it is happening here with policy-based
> > smart pointers. It seems to me that arguments are being
> > manufactured to preclude the concept of a policy-based smart pointer
> > (such as incompatibilities and the supposed complexity of
> > interface--neither of which I personally think is significant)
>
> Despite the fact that there's some available evidence that it has been
> significant to some people. Who knows whether or not it's
> "significant"? It's pure speculation.

No it isn't. It is my personal opinion, which is exactly what I said.
People actually use Loki's smart pointer, so it isn't speculation.

> What we do here is to consider
> the arguments.

Yes, and also engage in little "political wars." It doesn't matter what
anyone intended. That is the way things come off sometimes.

> > precisely because it isn't 'shared_ptr' or that it would subsume
> > 'shared_ptr'.
>
> As far as I can tell, that's *precisely* how it's been presented
> historically: "here's a design which can replace shared_ptr and
> auto_ptr and all the rest".
>
> I don't have a strong opinion about whether a PBSP design should
> subsume shared_ptr or not, BTW. I somehow think that the more I say
> so, the less I'm believed.

Neither do I.

> > That may or may not be the case, but that is how it comes off to me,
> > and I can see how it would come off that way to others.
>
> With all due respect, that sounds like a knee-jerk reaction to the
> fact that there's any discussion or disagreement with your
> point-of-view. Most of the discussion about this particular issue has
> been very detached AFAICT.

Your response in whole seems like a knee-jerk reaction to justify behavior.
That is the way it goes. You have preconceived ideas, as do I. I'm telling
you how I interpret it, not whether I think it is absolute fact. Nor am I
overly concerned about the pointer issue. I'm only defending that which I
think needs to be defended.

> > This is precisely why I think that we need both forms. When experts
> > disagree fundamentally on such a concept, both forms should be
> > supported--and there is no question that both Dave and Andrei (and
> > many others here) are experts.
>
> But I don't think I have a fundamental disagreement with Andrei on
> this. Really! How can I convince you?

Okay, okay. I believe you. ;)

> Andrei will tell you that I wrote to him about 18 months ago because I
> wanted to use Loki's smart pointer, but I couldn't because details of
> its implementation was going to cost too much space. I can see the
> need for something like that, and wish we had it in Boost. I just
> happen to also see some merit in the POV of people who are nervous
> about the consequences of that kind of design. I think it's worth
> discussing a bit to see what the problems and solutions might be.
> Sweeping those concerns under the rug or dismissing them as
> "insignificant" isn't going to help move anything forward.

I didn't sweep them under the rug. I said that "in my personal opinion"
they aren't significant. Just as others have said that its their opinion
that we don't want a policy-based smart pointer because of reason X and Y.
If you take the complexity of interface, which is minimal, and apply that
argument across the board, you can kiss the STL, the MPL, the PP lib, and
whole host of Boost and non-Boost libraries out the window, because they
support "extra parameters" in some form or another that aren't strictly
necessary for the default case.

> > It is also obvious that Andrei makes an effort to be civil when he
> > disagrees (as do many others), but I think that sometimes he gets
> > frustrated when people don't understand (or even see) his point of
> > view. Actually, that goes for everyone here, and everyone needs to
> > keep that in mind and take disagreement with a grain of salt.
>
> Exactly. In order to reach consensus, we need to have patience with
> other peoples' inattention, lack of insight, stubbornness, and
> attachment to preconceived notions.

Yes, and stop always pointing the finger at others without examining
ourselves first. We are *all* guilty of this, so don't sweep my opinion on
this subject under the rug either.

However, the point being that consensus on some issues will never be
reached. We are faced with a question. Is a policy-based smart pointer a
good design? Or is it only a bad design because 'shared_ptr' already
exists? If so, the standing argument is that "certain people will simply
not bother to choose." Otherwise, the argument is whether policy parameters
complicate the interface. Neither is a good argument >> IMHO <<, and we
have the tools in C++ to solve the latter problem.

Paul Mensonides


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