[Review] [ITL] ITL formal review results
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
participants (1)
-
Hartmut Kaiser