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
---------------
Meet me at BoostCon
www.boostcon.com