Boost logo

Boost Users :

Subject: Re: [Boost-users] [Review] [ITL] ITL formal review results
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2010-04-19 09:13:43


Hi Hartmut, list,

2010/4/18 Hartmut Kaiser <hartmut.kaiser_at_[hidden]>:
> Hi all,
>
> The formal review of the Interval Template Library (ITL) written by Joachim
> Faulhaber started February 18th and ended March 7th, 2010. We saw a lively
> discussion resulting in 14 votes: 10 people voted unconditionally YES, 3
> voted conditionally YES, and 1 reviewer voted NO.
>
> The overwhelming majority of the votes was YES which reflects the overall
> discussion and the general consensus of this library being worth to be
> included into Boost.
>
> Based on this result and the discussions we saw the Interval Template
> Library is now formally accepted into Boost.
>
>
> Detailed results
> ----------------
>
> Pros:
>
> Almost all reviewers highlighted the general usefulness of the library. The
> more experience the reviewers had with the library in real world
> applications the more they emphasized its usefulness. Here are some quotes:
> - "ITL solved this problem for me, in a way that honestly freed me from
> having to think about a lot of the unsavory low-level details."
> - " Until now, we only used the library for intervals of date-times (coded
> as integers), but I'm sure, that its usefulness goes far beyond."
> - " Very useful. I mentioned two projects where the library would have
> helped me if it had been into Boost earlier, and I'm considering rewriting
> them such that the problems make use of the library, and simplify them in
> that way."
>
> The comments on the quality of the documentation are unanimous: "impressive
> and quite complete", "I couldn't ask for more". It seemed to be generally
> helpful to understand the concepts of the library and to get started. Some
> people asked to add more simple quick-start examples to the documentation
> and the distribution.
>
> Overall, the library is mature and easy to use. All reviewers actually
> utilizing the ITL library for real world use cases reported they were able
> to start quickly and without problems.
>
> All reviewers using ITL in real world applications stated that no
> performance problems were encountered. This is important to note as the NO
> vote was based on the current lack of a interval tree implementation, which
> was considered to result in suboptimal performance for certain use cases.
>
>
> Cons:
>
> Some aspects of the design have been criticized: "OO-type design decisions",
> "fat 'one size fits all'-interval class template", and "incomplete
> extraction of global functions" are the major points of critique. These
> points have real merit. In order to make the design and interface more
> flexible and more durable these have to be rectified before the final
> inclusion of the library into Boost's code base. Joachim already agreed to a
> list of things to change addressing those problems.
>
> For certain use cases, specifically for interval map of collections, the
> current implementation has suboptimal complexity characteristics that leads
> to O(n^2) space usage in the worst case. OTOH, for the majority of
> applications of the library the worst case scenario seems to be (reportedly)
> irrelevant. This issue has been discussed at length and Joachim plans to add
> an implementation with a better worst case performance of the affected class
> templates as later optimizations. This is not considered to be a
> precondition to full inclusion into Boost's code base as it is not
> anticipated to cause any interface changes.
>
> Last but not least people suggested to change the name of the library as
> having the word template in the name does not carry any useful information.
> Joachim already agreed to this.
>
> Regards Hartmut
> Review Manager

Thank you, Hartmut, for summarizing the review and declaring the
results. I am of course happy to hear that my library of interval
containers is now accepted.

Concerning the review itself, I'd like to say that it was a very
valuable experience for me. I definitely learned a lot during the
process. So I'd like to thank all the reviewers and other participants
in the discussion for taking so much time to examine my project and to
share their knowledge and assessments.

I'd like to emphasize two points:

(1) For me as contributor is has been very rewarding to see, that my
library has found quite a few users who not only use the ITL in real
world applications but also confirm the usefulness of its concepts and
patterns (e.g. aggregate on overlap), that simplify writing programs
for problems that reoccur in a variety of problem domains. It was this
basic feeling of usefulness that made me undertake the journey of
boostifying, refactoring, documenting, polishing and submitting my
code, which was much more work than I initially expected. But reading
those reviews made me feel that it was worth the effort. So special
thanks to my "real world"- users among the reviewers: Peter Wuttke,
Eric Jonas, Michael Caisse and Jeff Flinn.

(2) A review on the boost list is probably a challenge for most
contributors. The important part is to encounter once own limitations
and blind spots. Because these are the fields where one can learn
most. We find these kinds of (at first) mostly unpleasant information
within a boost review, when fellow developers examine the project
closely and share their view on its flaws and problems. I have learned
very much from that and I am currently really having fun applying
those improvements to the library. So special thanks for sharing
critique and objections to Phil Endecott, Luke Simonson, Jeff Flinn,
John Reid and Barend Gehrels.

And last but not least, I'd like to thank Rob Stewart who gave me feed
back about some lingual pitfalls and oddities offlist. Very nice and
helpful :)

I have reworked the design on the interval concept already. I hope to
be able to complete the discussed changes and improvements, as
summarized by Hartmut above, within a few weeks after BoostCon2010.

Cheers
Joachim


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net