[iostreams] Review Results -- Iostreams Accepted

Jonathan Turkanis's Iostreams library has been accepted into boost. Final vote tally from reviewers was: 14 accepts 1 reject 1 abstain There were many issues brought up and resolved during the review. I won't even attempt to repeat all those here. There were also many interesting suggestions about enhanced approaches. Most reviewers recommended acceptance regardless of the resolution of these, so I leave it to Jonathan's capable hands to deal with those. Some issues that need to be resolved: 1) Overlap with current io and more io library Recommendation: Move the library to a new directory (iostreams) and document any overlap with other io libraries. Rationale: While there is overlap, iostreams is taking a somewhat new approach that departs a bit the approach of the I/O library. Both approaches have merit and rather than trying to combine them prematurely it would be better to have both available and see which approach is better in practice. Since there was some discussion about the library name during the review, but no conclusive conclusion I'm going to leave the directory name as an issue for open discussion on the list. 2) Memory-Mapped Library At the moment the portable memory-mapped library is an implementation detail of Iostreams. It would be best if this library could be brought out of detail and made a standalone library that could be used independently of Iostreams. We need a volunteer to take this on (sounds like Jonathan will help with this). 3) zip/bzip2 library components The library source currently contains headers for zlib and bzip2. These headers should be removed from the source tree since they will complicate boost licensing. They should be replaced with instructions on how to obtain these libraries and how to configure bjam to find the headers and libraries. Since these libraries are already widely distributed they are often already installed on a platform. 4) 'piping' interface There was some support for adopting a 'pipe like' interface as originally implemented by JC van Winkel in another library, eg: filter_stream out(tee(std::cout) | encode | gzip | file("some file")); While this interface is not required for adoption, Jonathan has already implemented and will provide this interface. 5) Resource concept naming There was a long discussion of the naming of the concept Resource -- should it be Device, etc. Final resolution of this issue needs to be discussed and adopted. 6) Presidential filter example While many of us see the humor in this, there was at least one objection to introducing 'political comedy' into boost. Overall, the example should be renamed and reformulated since in a few years no one will get the joke anyway. Sorry to go politically correct here, but boost needs to be above the fray. I'd like to thank the reviewers for their time and many thoughtful reviews. And finally thanks to Jonathan for an excellent library! Jeff

6) Presidential filter example While many of us see the humor in this, there was at least one objection to introducing 'political comedy' into boost. Overall, the example should be renamed and reformulated since in a few years no one will get the joke anyway. Sorry to go politically correct here, but boost needs to be above the fray.
I've never felt the urge to post the development mailing list despite being a long time reader, however this was enough to bring me out of anonymity. Chalk it up to my flammable sense of political incorrectness. When I was reading documentation for the iostreams library I was pleasantly surprised to find an example that was both as informative and hilarious as the Presidential Filter example. I've had my eyes glaze over too many times while reading example code to think that it's a bad thing to get a little humour out of them once in a while. So while there may have been at least one complaint, let me be (perhaps one of) the first to praise the Presidential Filter example as a good joke and as a good example. I know praise doesn't count as much as complaining in the world these days. Unfortunately this means that good things are often thrown away in our zeal to make the complainers shut up and thus I'm sure the Presidential Filter example will never again show up in Boost. Thanks, Dylan Trotter

On Fri, 01 Oct 2004 11:33:27 -0400, Dylan Trotter wrote
When I was reading documentation for the iostreams library I was pleasantly surprised to find an example that was both as informative and hilarious as the Presidential Filter example. I've had my eyes glaze over too many times while reading example code to think that it's a bad thing to get a little humour out of them once in a while.
I don't have a personal objection to the humor either -- it's just, what if some mother or father of a US/British/Italian, etc soldier read it and was offended? Far fetched? Probably, but the fact that one reviewer objected points out the danger. Boost is about C++ libraries and anything that is part of boost needs to stay out of politics or anything else that might distract from that. Quite aside from the politics, I found the title disorienting -- so I think renaming and refactoring the example can actually improve it. Duller, probably -- more to the point -- for sure. Lastly, in 10 years will anyone get the joke? I've discussed this with Jonathon and I think he has some good ideas for improving it.
So while there may have been at least one complaint, let me be (perhaps one of) the first to praise the Presidential Filter example as a good joke and as a good example. I know praise doesn't count as much as complaining in the world these days. Unfortunately this means that good things are often thrown away in our zeal to make the complainers shut up and thus I'm sure the Presidential Filter example will never again show up in Boost.
Actually, I don't share your view. Yes, critical review and debate are a big part of the process hre, but I think praise is highly appreciated as well. Boost authors and others here contribute and incredible amount of time energy and talent to the cause of improving C++ for everyone -- we all like to hear a thank you now and again. Note the last line of my email:
I'd like to thank the reviewers for their time and many thoughtful reviews. And finally thanks to Jonathan for an excellent library!
Jeff

Jeff Garland wrote:
On Fri, 01 Oct 2004 11:33:27 -0400, Dylan Trotter wrote
When I was reading documentation for the iostreams library I was pleasantly surprised to find an example that was both as informative and hilarious as the Presidential Filter example. I've had my eyes glaze over too many times while reading example code to think that it's a bad thing to get a little humour out of them once in a while.
I don't have a personal objection to the humor either -- it's just, what if some mother or father of a US/British/Italian, etc soldier read it and was offended?
It's very unfortunate that this statement will not get the replies it deserves, due to the maturity of the Boost community.

"Jeff Garland" <jeff@crystalclearsoftware.com> wrote in message:
Jonathan Turkanis's Iostreams library has been accepted into boost.
I'd like to thank everyone who particpated in the review, and Jeff for acting as review manager. "Dylan Trotter" <trotterdylan@yahoo.ca> wrote in message news:cjjtc1$243$1@sea.gmane.org...
6) Presidential filter example While many of us see the humor in this, there was at least one objection to introducing 'political comedy' into boost. Overall, the example should be renamed and reformulated since in a few years no one will get the joke anyway. Sorry to go politically correct here, but boost needs to be above the fray.
<snip>
So while there may have been at least one complaint, let me be (perhaps one of) the first to praise the Presidential Filter example as a good joke
Thanks.
and as a good example.
Thanks again.
I know praise doesn't count as much as complaining in the world these days. Unfortunately this means that good things are often thrown away in our zeal to make the complainers shut up and thus I'm sure the Presidential Filter example will never again show up in Boost.
One thing that became clear during the review is that instead of short descriptions of filters together with links to the filters, example programs and sample output I need to write fully annotated examples where I step through the code and explain what is happening at each point. In particular, I plan to write a section on writing filters which perform word substitution using a dictionary; this will be a good way to illustrate the differences between the various types of filters. For this purpose it doesn't really matter what key, value pairs the dictionary contains. I may use the usenet abbreviations. While I'm sorry to see the presidential example go -- it looks like it will probably be relevant for another 28 dog years -- I understand and accept Jeff's rationale. Jonathan

"Dylan Trotter" <trotterdylan@yahoo.ca> wrote in message news:cjjtc1$243$1@sea.gmane.org...
I've never felt the urge to post the development mailing list despite being a long time reader, however this was enough to bring me out of anonymity. Chalk it up to my flammable sense of political incorrectness.
The example in question was funny. I think anybody offended by it most probably lacks sense of humor. Nevertheless let's keep it out of boost. Personally I prefer to keep out any unrelated subjects, even in examples. There are numerous forums for political jokes you can use if you want to share funny observations. I think that Boost is inappropriate forum for them: any kind of non-universal cultural references may present a problem for international audience; time plays tricks with "current" events. I fully support Jeff's decision. Do you feel that I am wrong and overreacting? Count posts in boost.devel, which talk about "censorship", "political views", and so on, but next to nothing about substance --- iostreams library, which _technical_ merits were supposed to be reviewed. Do we really need them in boost.devel? Thanks, Eugene PS: Putting my money where my mouth is I am not going to post in this thread again.

From: "Eugene Lazutkin" <eugene_lazutkin@hotmail.com>
"Dylan Trotter" <trotterdylan@yahoo.ca> wrote in message news:cjjtc1$243$1@sea.gmane.org...
I've never felt the urge to post the development mailing list despite being a long time reader, however this was enough to bring me out of anonymity. Chalk it up to my flammable sense of political incorrectness.
The example in question was funny. I think anybody offended by it most probably lacks sense of humor.
I've avoided adding to the discussion until now, but feel the need to add a little. I'm the one that raised the issue. Was I offended? No. I was bothered by the example, however. Why? Because it belittled an important political figure -- President Bush -- during an election year and smacked of being anti-Bush. (I'm not impuning that intent to Jonathon, just conveying my impression.)
Nevertheless let's keep it out of boost. Personally I prefer to keep out any unrelated subjects, even in examples. There are numerous forums for political jokes you can use if you want to share funny observations. I think that Boost is inappropriate forum for them: any kind of non-universal cultural references may present a problem for international audience; time plays tricks with "current" events. I fully support Jeff's decision.
An example that substitutes words can easily be made funny by not belittling a person and certainly not in a context that is politically charged. For example, using a well-known nursery rhyme or story -- assuming there are some that have near global standing -- gives plenty of opportunity to change words to create a humorous result. "Peter and the Wolf" comes to mind. Imagine Peter being afraid of and hunting a mouse or anteater! Jeff's decision fit with my own impression of the example, so I didn't think he was censoring Jonathon. Perhaps if I hated President Bush, I'd have been gleeful over the example and would have considered his actions censorship, but I don't think so. I thought the decision was well reasoned. I don't think personal attacks; political, sexual, racial, etc. humor; or scatological or other base humor should be part of Boost. If we need to document that as a policy, then so be it. -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;

"Rob Stewart" <stewart@sig.com> wrote in message:
I'm the one that raised the issue. Was I offended? No. I was bothered by the example, however. Why? Because it belittled an important political figure -- President Bush -- during an election year
FWIW, I wrote it last year.
and smacked of being anti-Bush.
I think that's the main point. You can't tell from the example whether the author (I in particular or Boost as a whole) is poking fun at the well-known mannerisms of a beloved figure or belittling someone who is reviled. I want the iostreams library (and Boost) to be as widely used as possible, and I wouldn't want to scare off people (if only a few) who assume the second interpretation. What would your feelings be if I called the filters in question 'dictionary filters' and then in a usage example said something like this: "We might use a dictionary filter to correct malapropisms, like so: struct malapropism_filter : dictionary_filter { malapropism_filter() { add_entry("subliminable", "subliminal"); add_entry("misunderestimate", "underestimate"); ... } };" Would this still be objectionable, in your opinion? Jonathan

"Jonathan Turkanis" <technews@kangaroologic.com> wrote:
"We might use a dictionary filter to correct malapropisms, like so:
struct malapropism_filter : dictionary_filter { malapropism_filter() { add_entry("subliminable", "subliminal"); add_entry("misunderestimate", "underestimate"); ... } };"
I realize that my use of 'malapropism' is almost a malapropism,[1] since 'subliminable' and 'misunderestimate' are not genuine words. I think it fails the 'ludicrous' requirement, though. ;-) Jonathan [1] malapropism: Ludicrous misuse of a word, especially by confusion with one of similar sound (American Heritage Dictionary)

From: "Jonathan Turkanis" <technews@kangaroologic.com>
"Rob Stewart" <stewart@sig.com> wrote in message:
I'm the one that raised the issue. Was I offended? No. I was bothered by the example, however. Why? Because it belittled an important political figure -- President Bush -- during an election year
FWIW, I wrote it last year.
and smacked of being anti-Bush.
I think that's the main point. You can't tell from the example whether the author (I in particular or Boost as a whole) is poking fun at the well-known mannerisms of a beloved figure or belittling someone who is reviled. I want the iostreams library (and Boost) to be as widely used as possible, and I wouldn't want to scare off people (if only a few) who assume the second interpretation.
Right.
What would your feelings be if I called the filters in question 'dictionary filters' and then in a usage example said something like this:
"We might use a dictionary filter to correct malapropisms, like so:
struct malapropism_filter : dictionary_filter { malapropism_filter() { add_entry("subliminable", "subliminal"); add_entry("misunderestimate", "underestimate"); ... } };"
Would this still be objectionable, in your opinion?
Some might still recognize them as being from President Bush, but there's no direct connection. The connection can be lessened further by adding others not used (one might assume) by him. Even better would be to use real malapropisms, though they don't involve simple word replacements: fire distinguisher (extinguisher) pigment of ones imagination (figment) wolf in cheap clothing (sheep's) The Sixteenth Chapel (Sistene) extra-century perception (extrasensory) dissolve a mystery (solve) pineapple of good taste (pinnacle) I have a preposition for you (proposition) dangerous as an allegory in a swamp (alligator) little affluence over it (influence) There are plenty more examples available, of course. Another approach is, if you have it handy, to look at the list of AutoCorrect'ions that Microsoft Word is programmed to make. For example, it will change "hte" to "the." Those are typographical mistakes, so the filter might be called the typographical_error_filter. -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;

"Rob Stewart" <stewart@sig.com> wrote in message:
From: "Jonathan Turkanis":
Even better would be to use real malapropisms, though they don't involve simple word replacements:
fire distinguisher (extinguisher) pigment of ones imagination (figment) wolf in cheap clothing (sheep's) The Sixteenth Chapel (Sistene)
:-)
extra-century perception (extrasensory) dissolve a mystery (solve) pineapple of good taste (pinnacle) I have a preposition for you (proposition) dangerous as an allegory in a swamp (alligator) little affluence over it (influence)
There are plenty more examples available, of course.
Yeah, there are lots of good ones in Shakespeare, too. My father says 'I'd just assume' instead of 'I'd just as soon'. ;-) Unfortunately, doing phrase substitutions instead of word substitutions significantly complicates the examples.
Another approach is, if you have it handy, to look at the list of AutoCorrect'ions that Microsoft Word is programmed to make. For example, it will change "hte" to "the."
Or "het", in the Dutch version ;-)
Those are typographical mistakes, so the filter might be called the typographical_error_filter.
That's a good idea. Jonathan

"Jeff Garland" <jeff@crystalclearsoftware.com> wrote in message news:20041001140415.M13015@crystalclearsoftware.com...
Jonathan Turkanis's Iostreams library has been accepted into boost. Final vote tally from reviewers was:
14 accepts 1 reject 1 abstain
There were many issues brought up and resolved during the review. I won't even attempt to repeat all those here. There were also many interesting suggestions about enhanced approaches. Most reviewers recommended acceptance regardless of the resolution of these, so I leave it to Jonathan's capable hands to deal with those.
Some issues that need to be resolved:
1) Overlap with current io and more io library
Recommendation: Move the library to a new directory (iostreams) and document any overlap with other io libraries.
Rationale: While there is overlap, iostreams is taking a somewhat new approach that departs a bit the approach of the I/O library. Both approaches have merit and rather than trying to combine them prematurely it would be better to have both available and see which approach is better in practice.
Since there was some discussion about the library name during the review, but no conclusive conclusion I'm going to leave the directory name as an issue for open discussion on the list.
2) Memory-Mapped Library
At the moment the portable memory-mapped library is an implementation detail of Iostreams. It would be best if this library could be brought out of detail and made a standalone library that could be used independently of Iostreams. We need a volunteer to take this on (sounds like Jonathan will help with this).
3) zip/bzip2 library components
The library source currently contains headers for zlib and bzip2. These headers should be removed from the source tree since they will complicate boost licensing. They should be replaced with instructions on how to obtain these libraries and how to configure bjam to find the headers and libraries. Since these libraries are already widely distributed they are often already installed on a platform.
4) 'piping' interface
There was some support for adopting a 'pipe like' interface as originally implemented by JC van Winkel in another library, eg:
filter_stream out(tee(std::cout) | encode | gzip | file("some file"));
While this interface is not required for adoption, Jonathan has already implemented and will provide this interface.
5) Resource concept naming
There was a long discussion of the naming of the concept Resource -- should it be Device, etc. Final resolution of this issue needs to be discussed and adopted.
6) Presidential filter example While many of us see the humor in this, there was at least one objection to introducing 'political comedy' into boost. Overall, the example should be renamed and reformulated since in a few years no one will get the joke anyway. Sorry to go politically correct here, but boost needs to be above the fray.
I'd like to thank the reviewers for their time and many thoughtful reviews. And finally thanks to Jonathan for an excellent library!
Jeff _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

"Jeff Garland" wrote:
3) zip/bzip2 library components
The library source currently contains headers for zlib and bzip2. These headers should be removed from the source tree since they will complicate boost licensing. They should be replaced with instructions on how to obtain these libraries and how to configure bjam to find the headers and libraries. Since these libraries are already widely distributed they are often already installed on a platform.
... and lzo as well, please. /Pavel

"Pavel Vozenilek" <pavel_vozenilek@hotmail.com> wrote in message news:cjka94$hrl$1@sea.gmane.org...
"Jeff Garland" wrote:
3) zip/bzip2 library components
The library source currently contains headers for zlib and bzip2. These headers should be removed from the source tree since they will complicate boost licensing. They should be replaced with instructions on how to obtain these libraries and how to configure bjam to find the headers and libraries. Since these libraries are already widely distributed they are often already installed on a platform.
... and lzo as well, please.
I wrote an LZO wrapper but didn't include it because of licensing concerns. If I am assured that I can write a wrapper intended to be used with GPL'd software without the wrapper being covered by the GPL, I'll defintely include it. It would be nice to include filters that can read and write Markus Oberhumer's lzop file format, but it does not appear to be documented and he never responded to an email I sent him. I assume there's a header specifying compression options and some metadata and a trailer containing data length and a checksum, but it's difficult to decipher the source code. I'm definitely expecting more compression methods to be added in the future. I also hope that other people will write some of them ;-) Jonathan

"Jonathan Turkanis" wrote:
... and lzo as well, please.
I wrote an LZO wrapper but didn't include it because of licensing concerns. If I am assured that I can write a wrapper intended to be used with GPL'd software without the wrapper being covered by the GPL, I'll defintely include it.
It would be nice to include filters that can read and write Markus Oberhumer's lzop file format, but it does not appear to be documented and he never responded to an email I sent him. I assume there's a header specifying compression
It would be most unfortunate technical progress being hindered by such approach. options
and some metadata and a trailer containing data length and a checksum, but it's difficult to decipher the source code.
LZO is absolutely undocumented and its code is one big mess (but works). AFAIK Markus Oberhumer can't be reached for long time by anybody.
I'm definitely expecting more compression methods to be added in the future. I also hope that other people will write some of them ;-)
I guess this will happen. There are few very promissing compression technologies (say LZMA) around and lot of good implementations of proven ones. This also lead me to question: is there example of any encryption/decryption filter in Iostreams? There are quite many of them in C++, each using their own conventions and it may happen someone will normalize them to be useable within Iostreams. /Pavel

"Pavel Vozenilek" <pavel_vozenilek@hotmail.com> wrote in message news:cjlkfo$mcl$1@sea.gmane.org...
"Jonathan Turkanis" wrote:
... and lzo as well, please.
I wrote an LZO wrapper but didn't include it because of licensing concerns.
If I
am assured that I can write a wrapper intended to be used with GPL'd software without the wrapper being covered by the GPL, I'll defintely include it.
It would be most unfortunate technical progress being hindered by such approach.
It would be nice to include filters that can read and write Markus Oberhumer's lzop file format, but it does not appear to be documented and he never responded to an email I sent him. I assume there's a header specifying compression
Agred. The reason I bong it up is that I remember someone saying some like this: it's clear that under European Union law wrappers would not be covered by GPL, but under US law it might not be so clear. options
and some metadata and a trailer containing data length and a checksum, but it's difficult to decipher the source code.
LZO is absolutely undocumented and its code is one big mess (but works).
Good, so it's not just me ;-)
AFAIK Markus Oberhumer can't be reached for long time by anybody.
I'm definitely expecting more compression methods to be added in the future. I also hope that other people will write some of them ;-)
I guess this will happen. There are few very promissing compression technologies (say LZMA) around and lot of good implementations of proven ones.
This also lead me to question: is there example of any encryption/decryption filter in Iostreams?
Not yet.
There are quite many of them in C++, each using their own conventions and it may happen someone will normalize them to be useable within Iostreams.
I thought of writing wrappers for the crypto++ library, which I have used successfully before. However, the library's documentation is terrible. Also it is large, takes a long time to build and provides it's own chaining mechanism, so I'm not sure how useful wrappers would be. If you know of some links to fairly self-contained implementations of cryptographic algorithms, could you post them? Jonathan

"Jonathan Turkanis" wrote:
This also lead me to question: is there example of any encryption/decryption filter in Iostreams?
Not yet.
There are quite many of them in C++, each using their own conventions and it may happen someone will normalize them to be useable within Iostreams.
I thought of writing wrappers for the crypto++ library, which I have used successfully before. However, the library's documentation is terrible. Also it is large, takes a long time to build and provides it's own chaining mechanism, so I'm not sure how useful wrappers would be.
If you know of some links to fairly self-contained implementations of cryptographic algorithms, could you post them?
Maybe something small as ROT13 could be used as starting example. /Pavel

"Jeff Garland" <jeff@crystalclearsoftware.com> wrote in message news:20041001140415.M13015@crystalclearsoftware.com... | 6) Presidential filter example | While many of us see the humor in this, there was at least one objection to | introducing 'political comedy' into boost. Overall, the example should be | renamed and reformulated since in a few years no one will get the joke | anyway. Sorry to go politically correct here, but boost needs to be | above the fray. I probably don't have the same political view as Jonathan, but I do think this example is pretty harmless and see no reason to change it. Some people even found it fun...that's a lot better than everybody finding it boring; there need to be a little fun once in a while to keep this programming stuff from being too dull. br Thorsten

"Thorsten Ottosen" <nesotto@cs.auc.dk> wrote in message news:cjkbk6$mdh$1@sea.gmane.org...
"Jeff Garland" <jeff@crystalclearsoftware.com> wrote in message news:20041001140415.M13015@crystalclearsoftware.com...
| 6) Presidential filter example | While many of us see the humor in this, there was at least one objection to | introducing 'political comedy' into boost. Overall, the example should be | renamed and reformulated since in a few years no one will get the joke | anyway. Sorry to go politically correct here, but boost needs to be | above the fray.
I probably don't have the same political view as Jonathan,
Nobody has the same political views as me >:->
but I do think this example is pretty harmless and see no reason to change it. Some people even found it fun...that's a lot better than everybody finding it boring; there need to be a little fun once in a while to keep this programming stuff from being too dull.
Programming dull? ... I don't understand. ;-)
br
Thorsten
Jonathan

Jonathan Turkanis wrote:
"Thorsten Ottosen" <nesotto@cs.auc.dk> wrote in message news:cjkbk6$mdh$1@sea.gmane.org...
"Jeff Garland" <jeff@crystalclearsoftware.com> wrote in message news:20041001140415.M13015@crystalclearsoftware.com...
6) Presidential filter example While many of us see the humor in this, there was at least one objection to introducing 'political comedy' into boost. Overall, the example should be renamed and reformulated since in a few years no one will get the joke anyway. Sorry to go politically correct here, but boost needs to be above the fray.
I probably don't have the same political view as Jonathan,
Nobody has the same political views as me >:->
Yep. But it's not a matter of differing "political views", it is a matter of censorhip. More specifically, an unilateral decision on part of the review manager to censor a submission. There is a reason why in most civilized societies censorship decisions are handled with care, by a group, following written rules.

On Mon, 4 Oct 2004 15:21:59 +0300, Peter Dimov wrote
6) Presidential filter example While many of us see the humor in this, there was at least one objection to introducing 'political comedy' into boost. Overall, the example should be renamed and reformulated since in a few years no one will get the joke anyway. Sorry to go politically correct here, but boost needs to be above the fray.
I probably don't have the same political view as Jonathan,
Nobody has the same political views as me >:->
Yep. But it's not a matter of differing "political views", it is a matter of censorhip. More specifically, an unilateral decision on part of the review manager to censor a submission.
Well now at least I think I can understand your obtuse comment from last week. Review managers in Boost organization are given much power and responsibility -- including the ability to decide against the majority. That's a fact, but it can be changed by petitioning the list for a change of process. It was my judgement, after some evaluation, that the example would be better changed -- not removed (3 reasons given -- some of which did not include 'political correctness'). That's no different from a review manager requiring an interface change to a library that is badly named.
There is a reason why in most civilized societies censorship decisions are handled with care, by a group, following written rules.
That's a silly comparison. Boost is not a 'free speech' zone. If you go over the line on the mailing list a moderator will ask you to step back and will remove you from the list if you continue. But I'm not some sort of dictator here. If you want to have a group discussion/vote on it -- I have no objections. It just seems foolish to me for Boost to allow the any hint of political tint when there is no technical justification. Jeff

Jeff Garland wrote:
On Mon, 4 Oct 2004 15:21:59 +0300, Peter Dimov wrote
6) Presidential filter example While many of us see the humor in this, there was at least one objection to introducing 'political comedy' into boost. Overall, the example should be renamed and reformulated since in a few years no one will get the joke anyway. Sorry to go politically correct here, but boost needs to be above the fray.
I probably don't have the same political view as Jonathan,
Nobody has the same political views as me >:->
Yep. But it's not a matter of differing "political views", it is a matter of censorhip. More specifically, an unilateral decision on part of the review manager to censor a submission.
Well now at least I think I can understand your obtuse comment from last week. Review managers in Boost organization are given much power and responsibility -- including the ability to decide against the majority. That's a fact, but it can be changed by petitioning the list for a change of process.
What makes you think that review managers are allowed or encouraged to decide against the majority?
It was my judgement, after some evaluation, that the example would be better changed -- not removed (3 reasons given -- some of which did not include 'political correctness'). That's no different from a review manager requiring an interface change to a library that is badly named.
It's different. It was fairly obvious that you decided that the example was unacceptable for political reasons, and then tried to justify you decision using additional non-political arguments (none of which, in my opinion, hold water).
There is a reason why in most civilized societies censorship decisions are handled with care, by a group, following written rules.
That's a silly comparison. Boost is not a 'free speech' zone. If you go over the line on the mailing list a moderator will ask you to step back and will remove you from the list if you continue.
Correct. The moderators are a group, they carefully pick what they reject, and they follow the discussion policy.
But I'm not some sort of dictator here. If you want to have a group discussion/vote on it -- I have no objections. It just seems foolish to me for Boost to allow the any hint of political tint when there is no technical justification.
Think about it this way. Someone _might potentially_ be offended by the example, so you want it removed/changed. I am offended _right now_ by your decision to remove/change the example, because I deem it unjustified censorship. Basically, my point is that if you want to keep Boost free from examples that you perceive as political, _you_ should ask for a group decision to include a "no policital tint" clause in the appropriate library requirements. Then you'd be entirely within you right to enforce it - but there would be no need to, because developers will know not to include such content in their submissions.

On Mon, 4 Oct 2004 18:01:44 +0300, Peter Dimov wrote
Jeff Garland wrote:
Well now at least I think I can understand your obtuse comment from last week. Review managers in Boost organization are given much power and responsibility -- including the ability to decide against the majority. That's a fact, but it can be changed by petitioning the list for a change of process.
What makes you think that review managers are allowed or encouraged to decide against the majority?
The review manager decides on the library. Nothing, in the process says the review manager must go by 'majority' rule -- it just needs to be based on the opinions of the reviewers. But anyway, my point was you are free to try and change the process thru discussion if you don't like it.
It was my judgement, after some evaluation, that the example would be better changed -- not removed (3 reasons given -- some of which did not include 'political correctness'). That's no different from a review manager requiring an interface change to a library that is badly named.
It's different. It was fairly obvious that you decided that the example was unacceptable for political reasons, and then tried to justify you decision using additional non-political arguments (none of which, in my opinion, hold water).
Well, it's 'obvious to you', but that's not how it happened at all. I thought the example name was odd when I first saw it -- not compelling 'on-topic' for an iostreams library. By itself, not enough to worry about. Then a reviewer mentioned the political implications -- which got me thinking about it. Could I think of any other example or documentation in boost that even remotely bordered on a political statement -- no. If this did offend someone could it taint boost -- possibly. Would I use this example if I were trying to get the library into the C++ standard -- nope. Would the value of the example be less valuable if it were changed to be something apolitical -- no, it might even be improved. Therefore it didn't seem like it was worth the risk. As for me injecting my political point of viewpoint (which you know absolutely nothing about), that just isn't the case. I would have the same issue if the example was the 'Presidential Contender Filter' or 'President of France Filter'. Finally, I corresponded offlist with Jonathon about the decision and he had a suggestion for changing it to a dictionary example which would tie in with some of the other examples. Perhaps he was intimidated by my 'power', but only he can say.
But I'm not some sort of dictator here. If you want to have a group discussion/vote on it -- I have no objections. It just seems foolish to me for Boost to allow the any hint of political tint when there is no technical justification.
Think about it this way. Someone _might potentially_ be offended by the example, so you want it removed/changed. I am offended _right now_ by your decision to remove/change the example, because I deem it unjustified censorship.
I'm sorry you are offended, but oh well. Anyway, I'm not going to apologize, because I don't believe I've done anything wrong.
Basically, my point is that if you want to keep Boost free from examples that you perceive as political, _you_ should ask for a group decision to include a "no policital tint" clause in the appropriate library requirements.
As I said, I have no problem with a group review.
Then you'd be entirely within you right to enforce it - but there would be no need to, because developers will know not to include such content in their submissions.
Perhaps. But even with updated guidelines, there is always the potential that a review manager will have to deal with a new and unique case not explicitly discussed by the guidelines. And no matter the language, the evaluation of what counts as a political tint might be hard. Apparently there is some disagreement in this case... Jeff

Jeff Garland wrote:
On Mon, 4 Oct 2004 18:01:44 +0300, Peter Dimov wrote
Jeff Garland wrote:
Well now at least I think I can understand your obtuse comment from last week. Review managers in Boost organization are given much power and responsibility -- including the ability to decide against the majority. That's a fact, but it can be changed by petitioning the list for a change of process.
What makes you think that review managers are allowed or encouraged to decide against the majority?
The review manager decides on the library. Nothing, in the process says the review manager must go by 'majority' rule -- it just needs to be based on the opinions of the reviewers.
Interesting. I have always thought that the review manager summarizes the review comments and decides on the library based on them. If that's not the case, why have a review? The review manager can, of course, review the library himself. He is also given sufficient power to decide on issues where reviewers haven't been able to reach consensus, and he can tilt the tables slightly to overturn a 4-6 vote (or similar). That's how it happened in the past. Review managers that have posted review comments have usually been careful to mark them as such. Never so far has a review manager decided against the majority.
But anyway, my point was you are free to try and change the process thru discussion if you don't like it.
The process has worked well so far and needs no change, in my opinion.
It's different. It was fairly obvious that you decided that the example was unacceptable for political reasons, and then tried to justify you decision using additional non-political arguments (none of which, in my opinion, hold water).
Well, it's 'obvious to you', but that's not how it happened at all. I thought the example name was odd when I first saw it -- not compelling 'on-topic' for an iostreams library. By itself, not enough to worry about. Then a reviewer mentioned the political implications -- which got me thinking about it. Could I think of any other example or documentation in boost that even remotely bordered on a political statement -- no. If this did offend someone could it taint boost -- possibly. Would I use this example if I were trying to get the library into the C++ standard -- nope. Would the value of the example be less valuable if it were changed to be something apolitical -- no, it might even be improved. Therefore it didn't seem like it was worth the risk.
I am not saying that this is not the correct decision. I am saying that the decision hasn't been supported by the majority of the reviewers as far as I can see.
As for me injecting my political point of viewpoint (which you know absolutely nothing about), that just isn't the case. I would have the same issue if the example was the 'Presidential Contender Filter' or 'President of France Filter'.
That's why I've been careful to not imply anything about what - if any - political viewpoint you might have. But maybe not careful enough.
Think about it this way. Someone _might potentially_ be offended by the example, so you want it removed/changed. I am offended _right now_ by your decision to remove/change the example, because I deem it unjustified censorship.
I'm sorry you are offended, but oh well. Anyway, I'm not going to apologize, because I don't believe I've done anything wrong.
This is not the point at all. Let's see if I can clarify: No, you don't have to apologize to or accommodate people that are overly sensitive to censorship. By the same logic, Boost doesn't have to apologize to or accommodate people that are overly sensitive to president speech disorder jokes. No?
Then you'd be entirely within you right to enforce it - but there would be no need to, because developers will know not to include such content in their submissions.
Perhaps. But even with updated guidelines, there is always the potential that a review manager will have to deal with a new and unique case not explicitly discussed by the guidelines. And no matter the language, the evaluation of what counts as a political tint might be hard. Apparently there is some disagreement in this case...
Right. Which is why things like that are decided on a case by case basis by the reviewers. We only need procedures for the cases where this process doesn't work. Apparently, you think that in this case the majority is wrong. Therefore, we need procedures.

On Mon, 4 Oct 2004 20:48:00 +0300, Peter Dimov wrote
Never so far has a review manager decided against the majority.
And I'm not either, but anyway this is all moot....see below.
But anyway, my point was you are free to try and change the process thru discussion if you don't like it.
The process has worked well so far and needs no change, in my opinion.
I agree.
Think about it this way. Someone _might potentially_ be offended by the example, so you want it removed/changed. I am offended _right now_ by your decision to remove/change the example, because I deem it unjustified censorship.
I'm sorry you are offended, but oh well. Anyway, I'm not going to apologize, because I don't believe I've done anything wrong.
This is not the point at all. Let's see if I can clarify:
No, you don't have to apologize to or accommodate people that are overly sensitive to censorship.
By the same logic, Boost doesn't have to apologize to or accommodate people that are overly sensitive to president speech disorder jokes.
No?
Nice trap ;-) But, it still isn't worth the risk. Again, there is not library in Boost today that has an example that could even remotely be deemed political -- you want to change that -- I disagree. I challenge you to refute the logic. You haven't -- you just labeled it censorship and acted like I've done some awful...
Right. Which is why things like that are decided on a case by case basis by the reviewers. We only need procedures for the cases where this process doesn't work.
Apparently, you think that in this case the majority is wrong. Therefore, we need procedures.
There is no 'majority' on your side. Sure, a couple of people have posted since the results were announced saying they liked the example, but during the review most people ignored or did not comment on the example. The one review comment was negative. Adding in my own thinking that was 2 negatives. Did I go back and take a poll of the rest of the reviewers before deciding on this point? No, that's not really dictated by the process nor I believe justified in this case -- otherwise review managers would have to re-poll the group on every issue they make a decision on. Which issues are important enough to ask the author to change is at the decision of the review manager. Anyway, I believe we've already wasted way too much time on this. BTW, maybe we should limit the poll on this issue to folks that reviewed the library. That would eliminate your opinion on the subject... Jeff

Jeff Garland wrote:
On Mon, 4 Oct 2004 20:48:00 +0300, Peter Dimov wrote
By the same logic, Boost doesn't have to apologize to or accommodate people that are overly sensitive to president speech disorder jokes.
No?
Nice trap ;-) But, it still isn't worth the risk. Again, there is not library in Boost today that has an example that could even remotely be deemed political -- you want to change that -- I disagree. I challenge you to refute the logic. You haven't -- you just labeled it censorship and acted like I've done some awful...
No, I don't want to change anything. The most important part of a formal review is the accept/reject vote. It is often accompanied by comments that (a) act as a rationale and (b) suggest changes that may cause the vote to change from 'reject' to 'accept'. As a convenience, when the issues are minor, the library is not re-reviewed. Instead, the review manager declares that the library is accepted subject to issues X, Y, and Z. The implication being that these issues, if not addressed, would cause the rejection of the library. There is, of course, a fair bit of wiggle room allowed, but that's how basically things are supposed to proceed, at least according to my understanding. You can _suggest_ a change that is not strictly necessary for acceptance, but you can't _demand_ it.
BTW, maybe we should limit the poll on this issue to folks that reviewed the library. That would eliminate your opinion on the subject...
Indeed.

On Mon, 4 Oct 2004 22:25:47 +0300, Peter Dimov wrote
The most important part of a formal review is the accept/reject vote. It is often accompanied by comments that (a) act as a rationale and (b) suggest changes that may cause the vote to change from 'reject' to 'accept'.
Yes, but most reviewers tend to be much less disciplined about their reviews...
As a convenience, when the issues are minor, the library is not re- reviewed. Instead, the review manager declares that the library is accepted subject to issues X, Y, and Z. The implication being that these issues, if not addressed, would cause the rejection of the library.
Well this is apparently where our understanding differs a bit. I think the review manager has to be able to ask for required changes to the library that are independent of whether the issue would rise to the level of 'causing the library to be rejected'. He also needs to be able to NOT ask for a change even though a reviewer has requested one -- essentially determining the relative importance and implications of the issues raised. Case in point, with Iostreams -- I've asked Jonathon to remove the 3rd party headers from the library because of the licensing complications it creates as well as the potential conflicts with user installed libraries. Only one reviewer commented on this (the conflict issue, not the licensing part -- that was my concern), but it was my judgement that this is an important change because of the implications. I believe I would have abrogated my review manager duties if this issue was postponed till an audit just prior to the 1.33 release. Would I reject the library if we somehow had to have the 3rd party header -- no, because the licensing is compatible with Boost, but we would have to have a long discussion on the list about the implications of it no doubt ;-) Jeff

Peter Dimov wrote:
Jeff Garland wrote:
[...] The review manager decides on the library. Nothing, in the process says the review manager must go by 'majority' rule -- it just needs to be based on the opinions of the reviewers.
Interesting. I have always thought that the review manager summarizes the review comments and decides on the library based on them. If that's not the case, why have a review?
My understanding is similar to Jeff's. I was surprised when I first read that the review manager has the prerogative to reject a library against the majority vote (or include it likewise), but seem to remember that this point has been stated explicitly in the past. If it is true, the reason for having a review is to publicly document various analyses of the library. Presumably, a review manager would only contradict the majority because he/she has a compelling case against it. Anyway, Boost is not bound by any explicitly written charter or bylaws that I know of, so if a particular review decision proved to be unwise, I'm sure it could be challenged.
The review manager can, of course, review the library himself. He is also given sufficient power to decide on issues where reviewers haven't been able to reach consensus, and he can tilt the tables slightly to overturn a 4-6 vote (or similar).
That's how it happened in the past. Review managers that have posted review comments have usually been careful to mark them as such.
Never so far has a review manager decided against the majority.
Does any of that prove that, in fact, the review manager does not have the power to decide against the majority? When was the last time that the National Security Advisor became President?
As for me injecting my political point of viewpoint (which you know absolutely nothing about), that just isn't the case. I would have the same issue if the example was the 'Presidential Contender Filter' or 'President of France Filter'.
That's why I've been careful to not imply anything about what - if any - political viewpoint you might have. But maybe not careful enough.
I'm not sure how you can say that when you had already said this:
[...]
It's different. It was fairly obvious that you decided that the example was unacceptable for political reasons, and then tried to justify you decision using additional non-political arguments (none of which, in my opinion, hold water).
What political viewpoint would one expect Jeff to have in order to deem the example "unacceptable for political reasons"?
[...] By the same logic, Boost doesn't have to apologize to or accommodate people that are overly sensitive to president speech disorder jokes.
No?
Boost also don't have to apologize to or accomodate people that are overly sensitive to sexism, racism, homophobia, or any other special interest group. There is no law preventing Boost or any academic institution from using racial slurs, sexual innuendo or any other controversial language except possibly where it constitutes hate speech in its communication. Nonetheless, academia holds itself to a standard higher than the law, and higher than perhaps it absolutely needs to. Why do you suppose that is? Why shouldn't Boost use the same rationale?
[...] Apparently, you think that in this case the majority is wrong. Therefore, we need procedures.
In this case, the majority haven't voted. I take that to indicate that most people either don't feel strongly either way or don't want to embroil themselves in a political discussion. If Boost were a forum for the communication of social and political ideas, then I would certainly agree that censorship is manifestly evil. However, I don't see how asking a library author to change an example that might be contentious and not entirely necessary is any different than asking a library author to change an example that is off-topic. Suppose that someone injected in the middle of some library documentation a discussion on auto racing that was not at all essential to documenting the library in question. Would it or would it not be appropriate for a review manager to ask the author to remove or change that passage? Would it or would it not constitute censorship? What if a library author included some mildly juvenile scatalogical humor in some documentation? Perhaps it would be fairly entertaining to a large number of programmers, but would it be appropriate? Would it be in good taste? Should the review manager ask that it be removed or not? Where do you draw the line? My personal view is that since a programming library does not have as its primary function the dissemination of political ideas (at least none of the libraries of which I am aware), there is nothing wrong with asking that library documentation be professionally apolitical. If we were a bunch of hackers in a college CS department, probably nobody would care. But since Boost has a vested interest in maintaining a high profile, I think it stands to reason that it should not risk its reputation on potentially controversial political language. Dave

David B. Held wrote: [...] I read each and every line of your post, but I think this is very good and concise summary:
Where do you draw the line?
It is not a question of "where", but "who", "on what basis", and "how". The answers put forward seem to be "the review manager", "on whatever basis he sees fit", and "by asking the submitter". That's fine, as long as it is clearly understood, which, in my case, it was not.

It's hard to say whether or when I should step into this discussion, but this looks like as good a point as any. "Jeff Garland" <jeff@crystalclearsoftware.com> wrote:
On Mon, 4 Oct 2004 18:01:44 +0300, Peter Dimov wrote
Jeff Garland wrote:
Well now at least I think I can understand your obtuse comment from last week. Review managers in Boost organization are given much power and responsibility -- including the ability to decide against the majority. That's a fact, but it can be changed by petitioning the list for a change of process.
What makes you think that review managers are allowed or encouraged to decide against the majority?
The review manager decides on the library. Nothing, in the process says the review manager must go by 'majority' rule -- it just needs to be based on the opinions of the reviewers. But anyway, my point was you are free to try and change the process thru discussion if you don't like it.
I agree that in some cases majority rule is not appropriate. Boost is supposed to be 'peer-reviewed' software. In the academic world, peer-review means papers are sent to a few selected experts for examination. With Boost, anyone can vote. Naturally, those who submit reviews tend to be knowledgable, and well-argued opinions are entitled to equal consideration regardless of whether they come from recognized experts. But the openness of the process means that not everything can be decided by the majority if quality is to be kept high (witness American Idol). However, whether mild political humor is appropriate for inclusion in boost is not a question where technical expertise matters. In retrospect, I think it probably would have been better to take a poll. Personally, I think the example is unlikely to offend anyone, since even some of the President's strongest suppoters acknowledge that his claims to speak English and Spanish are exaggerated. I don't feel too strongly about the issue, though, since I wrote the example almost a year ago and to me the humor has largely worn off. I also believe the material should be presented as a mini-tutorial on writing 'dictionary filters', so the presidential material, if preserved, would be hardly noticeable. For the record, at least one person during the review and several others during pre-review expressed approval of the example. AKAIK, nobody has actually been offended.
Finally, I corresponded offlist with Jonathon about the decision and he had a suggestion for changing it to a dictionary example which would tie in with some of the other examples. Perhaps he was intimidated by my 'power', but only he can say.
Me intimidated? Not likely ;-) Best Regards, Jonathan

Thorsten Ottosen wrote:
"Jeff Garland" <jeff@crystalclearsoftware.com> wrote in message news:20041001140415.M13015@crystalclearsoftware.com...
| 6) Presidential filter example | While many of us see the humor in this, there was at least one objection to | introducing 'political comedy' into boost. Overall, the example should be | renamed and reformulated since in a few years no one will get the joke | anyway. Sorry to go politically correct here, but boost needs to be | above the fray.
I probably don't have the same political view as Jonathan, but I do think this example is pretty harmless and see no reason to change it. Some people even found it fun...that's a lot better than everybody finding it boring; there need to be a little fun once in a while to keep this programming stuff from being too dull.
perhaps the phrase should be re-thought so that's really harmless (that is, not offend anyone). I know it's hard, but I think it's worth it ;) Things like: "Give me a piece of pi" replace with: "Give me a piece of pie" etc. Best, John -- John Torjo -- john@torjo.com Contributing editor, C/C++ Users Journal -- "Win32 GUI Generics" -- generics & GUI do mix, after all -- http://www.torjo.com/win32gui/ -- v1.4 - save_dlg - true binding of your data to UI controls! + easily add validation rules (win32gui/examples/smart_dlg)
participants (10)
-
David B. Held
-
Dylan Trotter
-
Eugene Lazutkin
-
Jeff Garland
-
John Torjo
-
Jonathan Turkanis
-
Pavel Vozenilek
-
Peter Dimov
-
Rob Stewart
-
Thorsten Ottosen