
On Fri, Sep 26, 2008 at 11:44 PM, Joel de Guzman <joel@boost-consulting.com> wrote:
Daniel Walker wrote:
I think Phoenix version 2 should be rejected as a Boost library. Instead, we should focus on version 3, i.e. Phoenix3/Lambda2.
I understand your concerns.
Will you change your vote if I say that Phoenix2 will not be repackaged into Boost? The real intent is to have Phoenix3/Lambda2 into Boost, not Phoenix2.
Then let's review Phoenix3/Lambda2. I might vote yes for that library after I have a chance to review it. I can't vote yes for Phoenix2; i.e. the library linked to by the review manager at the beginning of this thread. In other words, I can't accept the library I have reviewed, not without major changes: 1) The documentation is great for Phoenix2. But it is not the documentation for Lambda2. It will need to be significantly rewritten. As I believe you mentioned earlier, the Lambda2 documentation should probably include a lot of material from the current Boost.Lambda documentation that folks are familiar with. 2) The implementation needs significant changes to replace the "backend" with Proto. Apparently, that work is just about complete in Phoenix3 alpha. So again, why shouldn't we spend time on the library implementation we actually intended to distribute? There has been a conflicting argument put forward in the discussion so far. Phoenix2 is mature and already distributed, so we can be confident in it's implementation. But the implementation we actually want is Phoenix3, which is not widely used or mature or even complete. 3) The interface also needs several change in order to be a drop-in replacement for Boost.Lambda. As far as I understand, we're just beginning to consider what these changes may be: What should be decremented in the old Lambda and relegated to a backwards compatibility mode in favor of new Phoenix-like constructs, what should be the default interface when Lambda and Phoenix differ, etc.? There also needs to be several interface changes in order for Phoenix3/Lambda2 to be complementary to and/or compatible with the draft standard library. Also, the final interface will be "incompatible" with Phoenix2, at least in so far as the namespace will be boost::lambda instead of boost::phoenix, but I believe a number of other changes have been mentioned here as well. <snip>
- What is your evaluation of the implementation?
I haven't really looked at the implementation. I'm kind of reluctant to invest too much time reviewing the current version when I know the Proto port is coming, and that seems to be the actual, valuable, long-term implementation. The code under consideration is known/intended to be transitory; what I'm actually looking forward to is the replacement! I mean we can already use Phoenix2 by including boost/spirit/phoenix.hpp. Moving the code to boost/phoenix isn't really a reason to get excited.
Phoenix3 is essentially Phoenix2 plus proto and some of the features that brings it into the post TR1 world. If it is the implementation you want to evaluate, you can look into either renditions.
Thanks for all your responses, but I believe this comment gets to the crux of my vote, so I'll just cut to the chase. I understand that libraries change during the review process. Also, sometimes libraries are revised and submitted for a second review as was the case with Boost.Serialization. However, what are we supposed to be reviewing? The code linked to by the review manager? Phoenix3 alpha? Something else? If you feel that the review process will help in completing Phoenix3, that's fine. However, I can't vote for conditional acceptance when the condition is something like "replace Boost.Lambda." Upgrading this central library will be a major change for the entire Boost community... a much needed change, as well! And I'm looking forward to it, but Phoenix2 is not there yet, and as far as I can tell, Phoenix3 is not being reviewed. Maybe we just have different understandings of what a review is supposed to be. I'm not sure that it actually matters; it's kind of a formality. I'm more interested in getting into some of the nitty gritty problems related to the actual release of Phoenix as Lambda2. That's the fun part! ;-) It's just that in my mind, on the development road map, the Boost-reviewed stamp of approval should be applied at the end of the road rather than in the middle. Daniel Walker