Subject: [boost] [review][assign] Assign v2 review result
From: John Bytheway (jbytheway+boost_at_[hidden])
Date: 2011-07-04 17:09:58
There was only one explicit review of the Assign v2 library, from Lars
Viklund, which voted against inclusion. Other discussion about the
library did not have an overwhelmingly positive tone. Therefore, the
library is NOT accepted for Boost at this time.
Some of the issues raised in discussion were:
- The tutorial examples are terse, and move too quickly into the more
advanced features of the library.
- Code written with the library is too obtuse to those not familiar with it.
- The naming conventions are unintuitive, in particular several people
did not understand 'csv' without consulting the docs.
- Does the impending arrival of initializer lists in C++0x render some
or all of the functionality obsolete?
- The documentation's performance metrics do not cover compile time.
- There are portability issues to some less mainstream compilers.
In conclusion, I think the review highlighted a few serious and
interrelated issues with the library as it stands:
1. The scope of the library is not clear. If it is simply intended to
save typing, and act as a filler for such things as initializer lists,
then why does it need such complexity? On the other hand, if it is
intended for more than this, then what is the motivation? The docs do
not make this clear.
2. The tutorial moves too quickly, is unclear to newcomers, and lacks
clear motivation for its examples. It would be better to spend more
time explaining each example, perhaps with English or with equivalent
code not using Assign v2. The existing Boost.Assign docs were compared
favourably with the Assign v2 docs by more than one reviewer, and might
serve as a model for improvement.
3. Code written with the library is obtuse and a developer unfamiliar
with its ideas would be unable to decipher it without documentation.
Furthermore, in some cases even with the existing documentation the
intent of the code was unclear. For a task as conceptually simple as
the library attempts to tackle it should be possible to make the code
using it much more clear.
There may be more problems with the library, but the presence of these
issues prevented most reviewers investigating any more deeply.
If Erwann wishes to continue his development of the library, and perhaps
have it, or some subset of it, included in Boost in the future, then I
recommend that he first establish a clearly motivated scope, and then
strive for a syntax clear even to the uninitiated.
I would like to thank Erwann again for all his hard work, and everyone
who participated in the discussion during the review.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk