Boost logo

Boost :

Subject: Re: [boost] [Boost-users] [afio] Formal review of Boost.AFIO
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2015-08-29 13:06:21

On 29 Aug 2015 at 9:21, Michael Caisse wrote:

> >> There have been several suggestions (implicit and explicit) to move this
> >> type into the boost::afio namespace, but I haven' seen a response from
> >> you. Have I just missed it?
> >
> > It's more that the suggestion is irrelevant with respect to the
> > library. The code base as presented for review already exclusively
> > uses boost::afio::monad<T>. It is only the just-added workshop
> > tutorial which uses monad directly which made people think monad is
> > not an internal library, and which I now realise was a mistake due to
> > bad optics.
> >
> I think you may have missed parts of reviews. A few influential
> reviewers [1] have indicated that having components such as Monad and
> APBind is a non-starter for a review or an immediate "no" vote (Vicente
> [2] and Robert are just two on the user list... others on the dev list).
> You have put a great deal of effort into this library and I would like
> to see the chances of acceptance during the review not hindered by
> non-essential choices. The bottom line is that implementations in the
> boost::afio namespace will have different scrutiny than automatic
> promotion to the boost namespace. Start with these concepts in the
> boost::afio namespace and then at a later date, request a review to
> promote them to the boost namespace as full-fledged libraries.

I appreciate all of what you just said. But please listen to what I
just said: AFIO's use of these two dependent libraries is entirely
internal in the implementation and header code. Where I came unstuck
is that the documentation treats those two libraries as if there are
not internal implementation libraries, and the documentation both
refers to them by name e.g. Boost.Monad, Boost.APIBind and the code
examples use them directly instead of via their boost::afio::*
mapping. This makes them appear far more important than they are to
the end users of the presented library.

> I don't think it is worth risking the review outcome on trying to get
> multiple libraries into the boost namespace.

I think that most reviewers, once they actually looked at the code,
realised that the use of Boost.Monad and Boost.APIBind is a purely
presentational issue caused by a bad choice in the documentation. As
I have said on many occasions now, I realise that was a mistake, but
as I cannot change what has been presented for review I am stuck with

For the record, I estimate that all mention of APIBind and Monad can
be completely eliminated from the AFIO documentation and externally
facing API in about two days of work. They are totally incidental to
AFIO the library presented here for review. This is why I said I
would be upset with reviewers who refuse point blank to review this
library purely on a documentation mistake if they then later on find
severe design flaws in the library after I have invested an
additional 500 hours in the lightweight futures refactor based on the
presented API and design (which is my current estimate, and I am
usually within 10% of my estimates when estimating on my own code). I
think anyone would react similarly.

However after the many threads of discussion this week regarding the
design tradeoffs in the AFIO API and design, I am confident that in
any future review (if needed) that nothing not discovered in this
review will come up. In this regard this review has been highly
successful, and very valuable, irrespective of eventual outcome.


ned Productions Limited Consulting

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