FC++ -- Formal Review Result

The formal review for FC++ has completed. I am sorry to say that FC++ is not accepted into boost at this time. It may be possible for the library to be accepted in the future, but not without changes substantial enough to warrant an additional review. I will describe some possible strategies for later acceptance together with the rationale for my decision. Note that while the library is not accepted, the author has successfully established some of the merits of the functional programming paradigm and we should not require him to re-establish those same points in a future review. For that matter, I'm not convinced that we should have asked him to establish these points in the first place. * Rationale This was a very difficult decision, and I spent a long time sitting on the fence. I believe that the functional programming paradigm is important for C++ programmers, and that there are many interesting features available in FC++ such as lazy lists and the standard prelude functionality. In addition, though there was not a consensus amongst reviewers to accept (see Opinions of the Reviewers below), several boost library authors offered positive reviews of FC++. I finally managed to gather my thoughts and come to a decision -- thanks to all for your patience. In formulating my decision, I realized that one of the important questions to ask of a candidate boost library is: "Can I in good faith recommend to any C++ programmer with interest in domain X that they spend the time and effort to learn library Y and consider using it in relevant projects?" For FC++ I can not yet in good faith answer yes. I do think that it is worthwhile for *some* programmers to look at and would certainly consider pointing to FC++ in its present form from the boost web site as an "interesting third party library" if we maintained such links. But as I said I am not yet ready to put the boost "brand" on FC++. Why not? My evaluation was based on two main criteria, practicality and educational value, of which detailed accounts follow. ** Evaluation of Practicality Today FC++ is a largely monolithic library with a fair degree of overlap with other boost components. This led to a good deal of confusion/discussion during the review period. Such a state of affairs (monolith with substantial overlap) could conceivably be acceptable if there were clear problems for which FC++ was a uniquely suited practical solution. Exact Reals (see footnote *** below) notwithstanding, I don't believe that the *practical* value of FC++ as a *monolithic* embedded DSL in C++ supporting mixed paradigm programming has been satisfactorily established. [footnote ***: The existence of clients such as the Exact Real lib help demonstrate some degree of practicality. During the review I briefly examined the Exact Real site. This looked like an interesting application though I could not yet say how much practicality was demonstrated since, for example, the performance characteristics of lazy lists and constructive reals were not immediately clear to me. If FC++ is to be accepted on practical grounds potential users may want to be able to understand performance characteristics.] If the authors were to break FC++ into smaller pieces and should they participate in a future lambda, phoenix, FC++ merger then the above concerns would be addressed. It surely doesn't hurt that the authors of those other libraries expressed strong interest in the above direction. And as was pointed out in the review some of the ideas from FC++ might successfully be applied to other boost libraries such as function and/or bind. If FC++ was part of a single consistent set of FP components within boost then there would be good odds of achieving consensus to accept. The changes to bring this about would be of significant enough magnitude however that I would not be comfortable with provisional acceptance today -- a future review (or reviews of pieces are submitted independently) would be required. ** Evaluation of Educational Value Since boost is not necessarily restricted to purely practical libraries I also considered accepting FC++ into boost on the grounds that it provides an environment in which C++ programmers can learn more about and experiment with FP. FC++ enjoys some degree of success in this area. However I found it disturbing that during the review a number of traditional/imperative-style C++ programmers were just not "getting it" about FP. Perhaps a case could be made for accepting FC++ in its entirety on educational grounds after some of the improvements suggested by reviewers were implemented, e.g. improvements to the documentation and naming (useful in any case), the completion of some additional features such as Monads, or deeper documentation of the useful implementation techniques. But I must admit that I find this strategy less attractive, and I would urge you to try to break things up instead. One of the difficulties in finding acceptance on purely educational grounds might be characterized like this: if I was to recommend a way for an imperative programmer to learn more about functional programming today I would probably suggest a jump into an (OCa)ml, Haskell, or even a Lisp/Scheme environment. I am not sure that this I would recommend the FC++ environment for this purpose even with the changes suggested above. That is, I am not entirely convinced of the *purely educational value* of working with a functional programming DSL within C++. I really would prefer to see the FC++ ideas used in a practical mixed paradigm setting. * Opinions of the reviewers I was a bit concerned about the dearth of reviews during the first week so I decided to extend the review. The final number of reviews was still lower than I would have liked, but in the end I received approximately 4 no votes and 7 yes votes, with varying amounts of effort spent. Of the no votes, there was some support for acceptance after a later review, pending certain improvements. At the same time a number of the yes votes urged acceptance only after similar concerns were addressed. From this one could argue that there was near consensus that the community would be interested in accepting FC++ after these issues were addressed. The issues include the state of the documentation, the monolithic nature of the lib, and the incomplete nature of some components of the lib, e.g. monads. So I view some of the yes votes and no votes as differing mainly on whether to accept now with the above provisions or whether to require a second review after the above concerns were addressed. I spent some time vacillating between those options before finally settling on my decision to require a second review before acceptance. Given the significant nature of the requested changes I was only comfortable choosing the latter option. * Conclusion Though I am sorry not to be able to accept FC++ into boost today I would like to acknowledge its authors for the influence this library has had on other boost components. I strongly encourage you to keep working to bring the innovations from FC++ into boost in the future. I would also like to acknowledge Brian for his many creative contributions to the boost community and his thoughtful and professional posts. I am sure that I am not alone in saying thanks for all your efforts and I look forward to hearing more from you in the future. - Mat

"Mat Marcus" <mat-boost@emarcus.org> wrote in message news:422383966.1081002178@[10.51.241.93]...
The formal review for FC++ has completed. I am sorry to say that FC++ is not accepted into boost at this time. It may be possible for the library to be accepted in the future, but not without changes substantial enough to warrant an additional review.
Thanks for managing this difficult review. A number of people have been waiting for this result, I believe. Have you posted it to the announce list yet? Jonathan

On Sat, Apr 03, 2004 at 02:22:58PM -0800, Mat Marcus wrote:
The formal review for FC++ has completed. I am sorry to say that FC++ is not accepted into boost at this time. It may be possible for the library to be accepted in the future, but not without changes substantial enough to warrant an additional review.
I want to thank Mat for putting in the time and effort to manage the review, and again thank all the people who contributed comments. Even if the library isn't accepted now, I think a number of good ideas were exchanged, and I am glad for it. I will be busy trying to finish my PhD and find a job in the next couple months, so it will be a while before I can work on FC++ again with any substantial effort. (In the meantime, if anyone else wants to "break off one of the more interesting pieces" of FC++ and work on that for Boost, let me know. :) ) -- -Brian McNamara (lorgon@cc.gatech.edu)

"Brian McNamara" <lorgon@cc.gatech.edu> wrote in message news:20040405222144.GA13969@lennon.cc.gatech.edu...
I will be busy trying to finish my PhD and find a job in the next couple months, so it will be a while before I can work on FC++ again with any substantial effort.
Hi Brian, I think I may be one of those mentioned in the review critique as having required a full breakdown of FP. I would suggest that C++ is not the solution for you, but OTOH neither is the dogma of FP. Whether anyone has the guts to employ you I have no idea, but I wish you all the best for the future. regards Andy Little

--On Monday, April 05, 2004 11:54 PM +0100 Andy Little <andy@servocomm.freeserve.co.uk> wrote:
"Brian McNamara" <lorgon@cc.gatech.edu> wrote in message news:20040405222144.GA13969@lennon.cc.gatech.edu...
I will be busy trying to finish my PhD and find a job in the next couple months, so it will be a while before I can work on FC++ again with any substantial effort.
Hi Brian, I think I may be one of those mentioned in the review critique as having required a full breakdown of FP. I would suggest that C++ is not the solution for you, but OTOH neither is the dogma of FP. Whether anyone has the guts to employ you I have no idea, but I wish you all the best for the future.
regards Andy Little
Hi Andy, I don't really like the way that came out. I believe that quotes like "C++ is not the solution for you" or "Whether anyone has the guts to employ you" don't belong on this list. For what it's worth let me state here that these comments in no way reflect the opinions of the reviewer, nor in my opinion do they reflect the views of the rest of the community. I have found Brian's work to be very inspirational, if not yet ready for boost acceptance on the first try, and his posts here are highly professional, patient (in light of those who would have him justify FP) and educational. I respectfully ask you to refrain from posts of this nature in the future as others on this list may also feel that they are rather offensive. - Mat

Mat Marcus wrote:
--On Monday, April 05, 2004 11:54 PM +0100 Andy Little <andy@servocomm.freeserve.co.uk> wrote:
"Brian McNamara" <lorgon@cc.gatech.edu> wrote in message news:20040405222144.GA13969@lennon.cc.gatech.edu...
I will be busy trying to finish my PhD and find a job in the next couple months, so it will be a while before I can work on FC++ again with any substantial effort.
Hi Brian, I think I may be one of those mentioned in the review critique as having required a full breakdown of FP. I would suggest that C++ is not the solution for you, but OTOH neither is the dogma of FP. Whether anyone has the guts to employ you I have no idea, but I wish you all the best for the future.
regards Andy Little
Hi Andy,
I don't really like the way that came out. I believe that quotes like "C++ is not the solution for you" or "Whether anyone has the guts to employ you" don't belong on this list. For what it's worth let me state here that these comments in no way reflect the opinions of the reviewer, nor in my opinion do they reflect the views of the rest of the community. I have found Brian's work to be very inspirational, if not yet ready for boost acceptance on the first try, and his posts here are highly professional, patient (in light of those who would have him justify FP) and educational. I respectfully ask you to refrain from posts of this nature in the future as others on this list may also feel that they are rather offensive.
Andy, aren't you using STL? If so, then you are already doing FP! I second Mat. Boost is supposed to be a place for new ideas, new way of doing things. I still believe that FC++ has its place in boost. Perhaps not now, but in the future. I believe that there is no need to justify FP. It's here with us whether you like it or not. It's here in the form of STL algorithms and functors. It's here in the form of MPL metafunctions. It's here in the form of boost::bind. It's here in the form of Spirit parsers. It's everywhere. Why fight it? Perhaps you mean a different "dogma of FP"? Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net

"Mat Marcus" <mat-boost@emarcus.org> wrote in message news:603536759.1081186934@[10.51.241.93]...
--On Monday, April 05, 2004 11:54 PM +0100 Andy Little <andy@servocomm.freeserve.co.uk> wrote:
"Brian McNamara" <lorgon@cc.gatech.edu> wrote in message news:20040405222144.GA13969@lennon.cc.gatech.edu...
I will be busy trying to finish my PhD and find a job in the next couple months, so it will be a while before I can work on FC++ again with any substantial effort.
Hi Brian, I think I may be one of those mentioned in the review critique as having required a full breakdown of FP. I would suggest that C++ is not the solution for you, but OTOH neither is the dogma of FP. Whether anyone has the guts to employ you I have no idea, but I wish you all the best for the future.
regards Andy Little
Hi Andy,
My views are my own and in no way reflect the opinions of the boost community at large.
I don't really like the way that came out. I believe that quotes like "C++ is not the solution for you" or "Whether anyone has the guts to employ you" don't belong on this list.
C++ is a great language. Functional programming is a great idea. Brian MacNamara IMHO is one of the view people that may see something beyond either. I would say that is something akin to a holy grail on boost. Some employers do have 'guts'. If you dont like the visceral term, replace it by faith, courage, vision, and belief.
For what it's worth let me state here that these comments in no way reflect the opinions of the reviewer, nor in my opinion do they reflect the views of the rest of the community.
The general response of the ' boost community', which purports to embrace FP was frankly pathetic throughout the FC++ review. I felt this during the review, which is why I stepped in with my comments. I'm not an FP fan but I am interested and I would have preferred to have sat back and enjoyed the discussion. This did finally start to happen. I have found Brian's work to be very inspirational, if > not yet ready for boost acceptance on the first try, and his posts
here are highly professional, patient (in light of those who would have him justify FP) and educational.
Brian took a lot of time out with me during the FC++ review. My previous post was to say thanks, I have learnt something, and I appreciate that, and despite my non-boost community attitude, which is increasing exponentially, I did gain a lot from it. However I get the impression, which I stated in the review that C++'s place is as an Assembly language for FP. To (try to) use FP in C++ expressions is not very productive.... sorry lambda. I respectfully ask you to
refrain from posts of this nature in the future as others on this list may also feel that they are rather offensive.
I think I would be happy at the moment,especially if this is the general view, to be officially notified, which I hope will happen in due course. If that is the case I am sure that this reflects badly on me rather than Mr MacNamara. regards Andy Little

"Andy Little" <andy@servocomm.freeserve.co.uk> wrote in message news:c4t3tl$pp7$1@sea.gmane.org...
[...] My views are my own and in no way reflect the opinions of the boost community at large.
However, your views on this mailing list become a matter of public record and reflect *on* the Boost community. When Mr. Marcus says that Brian posts in a most professional manner, he says as much by what he doesn't say as by what he does. That is, we should all hold ourselves to a high standard of professionalism here. Let's leave petty bickering to other fields.
I don't really like the way that came out. I believe that quotes like "C++ is not the solution for you" or "Whether anyone has the guts to employ you" don't belong on this list.
C++ is a great language. Functional programming is a great idea. Brian MacNamara IMHO is one of the view people that may see something beyond either.
I would say that is something akin to a holy grail on boost.
I don't see how that justifies the comment "C++ is not the solution for you". What if I said: "the failure to produce a unit/quantities library that is accepted by a large majority means that C++ is not the language for this type of problem"? That hardly seems justifiable or appropriate.
Some employers do have 'guts'. If you dont like the visceral term, replace it by faith, courage, vision, and belief.
It's not a matter of the term being "visceral". It's a matter of the implied value judgement you are making. My "visceral" reaction to your statement was that you think Brian is out in left field, which is the only reason it would take "guts", "faith", "courage", "vision" or "belief" to hire him. Is that an unfair reading?
[...] The general response of the ' boost community', which purports to embrace FP was frankly pathetic throughout the FC++ review.
I think at least part of the problem is due to the problems stated in the review summary. FC++ is a large, monolithic library. Many people who did not have an immediate use case for it were probably somewhat intimidated to try it out. Or maybe they didn't feel they had the time to devote to reviewing it. There are any number of reasons why there was an attenuated response. That doesn't mean Boost is uninterested in FP. I think the presence of Bind, Lambda, MPL, Spirit, et al indicates a strong interest in and support of FP (so far as C++ allows it).
[...] However I get the impression, which I stated in the review that C++'s place is as an Assembly language for FP. To (try to) use FP in C++ expressions is not very productive.... sorry lambda. [...]
I get the impression that you haven't done much metaprogramming. Dave --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.581 / Virus Database: 368 - Release Date: 2/9/2004

"Andy Little" <andy@servocomm.freeserve.co.uk> writes:
"Mat Marcus" <mat-boost@emarcus.org> wrote in message news:603536759.1081186934@[10.51.241.93]...
I respectfully ask you to refrain from posts of this nature in the future as others on this list may also feel that they are rather offensive.
I think I would be happy at the moment,especially if this is the general view, to be officially notified, which I hope will happen in due course.
Please consider yourself "officially notified".
If that is the case I am sure that this reflects badly on me rather than Mr MacNamara.
It certainly does reflect badly on you, but there's a lot more at stake here for Boost than merely looking good. We wish to remain a community where people look forward to the rigorous experience of having their libraries reviewed, without fear that they'll be gratuitously insulted and condescended-to. On a human level, I personally have some concern for Brian's feelings, and of those who may empathize with him. Fortunately, Brian is emotionally tough, but that won't be true of everybody. There's a great saying in the Python community: "always remember that a few people on this mailing list are only fifteen years old". I don't know whether we have any 15-year-olds on the Boost list, but we might. I want to be clear that there's nothing wrong with dissent on technical issues. The problem I have is that most of your last two posts seem to have very little technical content and lots of ad-hominem subtext. Since it's not clear whether you are being intentionally hostile or whether you simply don't understand the effects of your words, I will now attempt to break down the offensive elements of your last two posts and explain their impact, at least on me:
I would suggest that C++ is not the solution for you
This strikes me as condescending in the extreme. Brian has been doing work *of community interest* in C++ since at least 2000, and was using it for who-knows-how-long before that. I'm sure he's well aware of its capabilities and limitations. Further, he probably has exposure to more languages than most of us, making him more than qualified to make such determinations on his own.
but OTOH neither is the dogma of FP.
This part is not particularly offensive, but it is narrow-minded and is phrased in a way that takes for granted an idea (that FP is more dogmatic than, e.g., OO, GP, top-down, bottom-up, aspect-oriented, etc...) for which, I'm sure you are aware, there is strong disagreement in the group. The polite thing to do in that case is to indicate somehow that you realize it's your opinion as opposed to fact.
Whether anyone has the guts to employ you I have no idea, but I wish you all the best for the future.
Condescension and insult. The implied message is "you will have a hard time finding a job because you are incapable of doing anything of practical value". Having worked a bit with Brian outside of Boost, I can say that I'd be very happy to hire him if I could. His professionalism and attention-to-detail are second to none.
From your follow-up message:
Functional programming is a great idea.
It certainly comes as a surprise to hear you say that in light of your earlier posts, to the point that it's hard to guess whether you are being honest. Not wanting to ascribe malice, I am happy to see that you're trying to soften the effects of your original posting a little.
The general response of the 'boost community', which purports to embrace FP
This expresses a general lack-of-respect for everyone here. Putting 'boost community' in quotes adds an implicit "so-called" prefix to the subtext, as if to imply that there really is no legitimate community at all. "Purports to embrace FP" offends in two ways: first, it ascribes a single philosophical preference to the whole 'community', which is really made up of individuals (as though there were a Boost FP manifesto somewhere), and then it indicts the 'community' for being dishonest about its stated philosophy.
Brian took a lot of time out with me during the FC++ review. My previous post was to say thanks, I have learnt something, and I appreciate that
I was shocked to read that your previous post was meant as a "thank you"; I hope you now understand that its effect was... something else altogether.
and despite my non-boost community attitude, which is increasing exponentially, I did gain a lot from it.
I'm not sure how to take the part about "non-boost community attitude" at all; it appears to say something like "I dislike you people more and more as time goes by".
However I get the impression, which I stated in the review that C++'s place is as an Assembly language for FP. To (try to) use FP in C++ expressions is not very productive.
Legitimate technical content, stated appropriately as opinion. Thank you.
... sorry lambda.
Somewhat condescending. The Lambda library doesn't need to please you in order to be successful. -- Dave Abrahams Boost Consulting www.boost-consulting.com

David Abrahams <dave@boost-consulting.com> writes:
Whether anyone has the guts to employ you I have no idea, but I wish you all the best for the future.
Condescension and insult. The implied message is "you will have a hard time finding a job because you are incapable of doing anything of practical value".
Just to express a different interpretation, I read it -- after pausing the first time -- as a compliment. I took it to mean that Brian is so capable that a typical employer would be afraid of him, afraid of not being able to manage and understand his work product. It's a slap to industry and mediocrity at large. I admit, though, that I read it that way because I couldn't believe that a sane author could intend for it to be taken at face value. -- Steven E. Harris :: seharris@raytheon.com Raytheon :: http://www.raytheon.com

"Steven E. Harris" <seharris@raytheon.com> writes:
I admit, though, that I read it that way because I couldn't believe that a sane author could intend for it to be taken at face value.
Right. The point is that the face value counts for at least as much as what the author might've intended. -- Dave Abrahams Boost Consulting www.boost-consulting.com

Steven wrote:
David Abrahams <dave@boost-consulting.com> writes:
Whether anyone has the guts to employ you I have no idea, but I wish you all the best for the future.
Condescension and insult. The implied message is "you will have a hard time finding a job because you are incapable of doing anything of practical value".
Just to express a different interpretation, I read it -- after pausing the first time -- as a compliment. I took it to mean that Brian is so capable that a typical employer would be afraid of him, afraid of not being able to manage and understand his work product. It's a slap to industry and mediocrity at large.
I admit, though, that I read it that way because I couldn't believe that a sane author could intend for it to be taken at face value.
Exactly my interpretation. It was a bit tricky to maintain that interpretation in face of the context in which it was presented, but I managed - see no evil, do no evil :-) What is peculiar is that Andy, if he indeed purported Brian to be Above Employable in some positive sense, missed the fact that, without even knowing Brian, the FC++ library definitely exposes a highly pragmatic side and mastery of this quite industrial language C++. In the aftermath, I am no longer sure whether Andy knew what he was saying and/or thinking about the subject, or w.r.t. Brian's skillset; the only certain opinion I can now extract from Andy's postings is that FP might be rather different from Applesoft Basic. /David

Brian McNamara wrote:
On Sat, Apr 03, 2004 at 02:22:58PM -0800, Mat Marcus wrote:
The formal review for FC++ has completed. I am sorry to say that FC++ is not accepted into boost at this time. It may be possible for the library to be accepted in the future, but not without changes substantial enough to warrant an additional review.
I want to thank Mat for putting in the time and effort to manage the review, and again thank all the people who contributed comments. Even if the library isn't accepted now, I think a number of good ideas were exchanged, and I am glad for it.
I will be busy trying to finish my PhD and find a job in the next couple months, so it will be a while before I can work on FC++ again with any substantial effort. (In the meantime, if anyone else wants to "break off one of the more interesting pieces" of FC++ and work on that for Boost, let me know. :) )
Hi Brian, I've just finished (minus docs) a new version of Phoenix, which will be the basis of the phoenix-LL merger planned a long time ago. {{To those who are interested, it's in the Spirit CVS, PHOENIX_V2 branch}}. I'd be very much interested in collaborating with you. I think the best route is to build on top of a common core. Phoenix-2 is already built on top of MPL and Fusion (tuples + algorithms). The way I see it, there are lots of commonality between LL/Phx and FC++ that can be fused into a core: +-----------+----------+ | LL/Phx | FC++ | +-----------+----------+ | FP core | +----------------------+ | Fusion | +----------------------+ | MPL | +----------------------+ Tell me what you think. FC++ has been very influential in my style of programming. I'd be honored to help make FC++ a part of boost someday. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net

Hmmm, I wonder how that came out as [SPAM:# 62%] ?? Moderators? Cheers, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net
participants (9)
-
Andy Little
-
Brian McNamara
-
David Abrahams
-
David B. Held
-
David Bergman
-
Joel de Guzman
-
Jonathan Turkanis
-
Mat Marcus
-
Steven E. Harris