Hello! In Pharo 7.0.4, Array streamContents: [ :s | s << 10 << '10' << #(10 '10') ]
#($1 $0 $1 $0 10 '10')
Bug or feature? Herby
Herby, It's a feature. ;-) << sends putOn: message to the non-collection args. Integer>>#putOn: aStream aStream isBinary ifTrue: [ self asByteArray do: [ :each | aStream nextPut: each ] ] ifFalse: [ self asString putOn: aStream ] String>>#putOn: aStream aStream nextPutAll: self
On 10 Sep 2019, at 11:27, Herby VojÄÃk <herby@mailbox.sk> wrote:
Hello!
In Pharo 7.0.4,
Array streamContents: [ :s | s << 10 << '10' << #(10 '10') ]
#($1 $0 $1 $0 10 '10')
Bug or feature?
Herby
I think it's fair to say that #<< *is* a bug. There does not seem to be any coherent description of what it means. It's overloaded to mean *either* #nextPut: *or* #nextPutAll: *or* something else, in some confusing ways. CommandLineHandler #nextPutAll: (sent somewhere else) Integer left shift (someone has been smoking too much C++) NonInteractiveTranscript #show: = locked #print: SocketStream #putOn: (which may itself act like #nextPut:, #nextPutAll:, #print, put elements sans separators, or something else) Stream #putOn: (see above) WriteStream either #nextPutAll: or #putOn: Transcript #show: = locked #print: ThreadSafeTranscript #show: = locked #print: VTermOutputDriver #putOn: VTermOutputDriver2 #asString then #nextPutAll: ZnEncodedWriteStream #nextPutAll: ZnHtmlOutputStream #asString then #nextPutAll: SequenceableCollection class #streamContents: As was once said about PL/I, #<< fills a much-needed gap. When I see #print:, or #nextPut:, or #nextPutAll:, I know what to expect. When I see #putOn:, I have in general no idea what will happen. And when I see << it is worse. One point of << is to imitate C++'s composition of outputs. That might work, too, if only there were some agreement about what #nextPutAll: returns. There is not. It might return the receiver. It might return some other stream related to the receiver. It might even return the collection argument. So when you see a << b << c in general you not only do not have a clue what (a) is going to do with (b) but you have no idea what object the message << c will be sent to. Now let's see if we can puzzle out what Array streamContents: [ :s | s << 10 << '10' << #(10 '10') ] does. The output will be going to a WriteStream. aWriteStream << anInteger is not, but is like, aWriteStream print: anInteger. So we add $1 and $0. aWriteStream << aString reduces to aWriteStream nextPutAll: aString. So we add $1 and $0. aWriteStream on anArray << anotherArray reduces to aWriteStream nextPutAll: anotherArray. So we add 10 and '10'. Thus the result we get is #($1 $0 $1 $0 10 '10'). What result we should *expect* from this muddle I cannot say. If, on the other hand, you wrote explicitly Array streamContents: [:stream | stream print: 10; nextPutAll: '10'; nextPutAll: #(10 '10')] you would have an easy time figuring out what to expect. By the way, there is no standard definition of #show:, but in other Smalltalk systems it's usually a variant of #nextPutAll:, not a variant of #print:. There's no denying that locked output is useful to have, but #show: is not perhaps the best name for it.
Development happens in Pharo 8 first, with possible back ports if really necessary. The last relevant change was the following: https://github.com/pharo-project/pharo/pull/2698
On 10 Sep 2019, at 14:54, Richard O'Keefe <raoknz@gmail.com> wrote:
I think it's fair to say that #<< *is* a bug. There does not seem to be any coherent description of what it means. It's overloaded to mean *either* #nextPut: *or* #nextPutAll: *or* something else, in some confusing ways. CommandLineHandler #nextPutAll: (sent somewhere else) Integer left shift (someone has been smoking too much C++) NonInteractiveTranscript #show: = locked #print: SocketStream #putOn: (which may itself act like #nextPut:, #nextPutAll:, #print, put elements sans separators, or something else) Stream #putOn: (see above) WriteStream either #nextPutAll: or #putOn: Transcript #show: = locked #print: ThreadSafeTranscript #show: = locked #print: VTermOutputDriver #putOn: VTermOutputDriver2 #asString then #nextPutAll: ZnEncodedWriteStream #nextPutAll: ZnHtmlOutputStream #asString then #nextPutAll: SequenceableCollection class #streamContents:
As was once said about PL/I, #<< fills a much-needed gap. When I see #print:, or #nextPut:, or #nextPutAll:, I know what to expect. When I see #putOn:, I have in general no idea what will happen. And when I see << it is worse.
One point of << is to imitate C++'s composition of outputs. That might work, too, if only there were some agreement about what #nextPutAll: returns. There is not. It might return the receiver. It might return some other stream related to the receiver. It might even return the collection argument. So when you see a << b << c in general you not only do not have a clue what (a) is going to do with (b) but you have no idea what object the message << c will be sent to.
Now let's see if we can puzzle out what Array streamContents: [ :s | s << 10 << '10' << #(10 '10') ] does. The output will be going to a WriteStream. aWriteStream << anInteger is not, but is like, aWriteStream print: anInteger. So we add $1 and $0. aWriteStream << aString reduces to aWriteStream nextPutAll: aString. So we add $1 and $0. aWriteStream on anArray << anotherArray reduces to aWriteStream nextPutAll: anotherArray. So we add 10 and '10'. Thus the result we get is #($1 $0 $1 $0 10 '10'). What result we should *expect* from this muddle I cannot say.
If, on the other hand, you wrote explicitly Array streamContents: [:stream | stream print: 10; nextPutAll: '10'; nextPutAll: #(10 '10')] you would have an easy time figuring out what to expect.
By the way, there is no standard definition of #show:, but in other Smalltalk systems it's usually a variant of #nextPutAll:, not a variant of #print:. There's no denying that locked output is useful to have, but #show: is not perhaps the best name for it.
On 10. 9. 2019 15:20, Sven Van Caekenberghe wrote:
Development happens in Pharo 8 first, with possible back ports if really necessary.
The last relevant change was the following:
That's a very nice change, indeed. Thank you. But there's still one catch. I looked, and in Pharo 8 branch, this is still the active implementation: WriteStream >> << anObject [ "Write anObject to the receiver, dispatching using #putOn: This is a shortcut for both nextPut: and nextPutAll: since anObject can be both the element type of the receiver as well as a collection of those elements. No further conversions of anObject are applied. This is an optimisation. Return self to accomodate chaining." anObject class == collection class ifTrue: [ self nextPutAll: anObject ] ifFalse: [ anObject putOn: self ] ] It is wrong to shortcut putOn: double dispatch based on anObject class == collection class. I strongly believe this test should pass: testPutDiverseNestedSequences | array otherSequenceable higherOrderArray higherOrderSequenceable | array := Array with: 1 with: 2 with: 3. otherSequenceable := OrderedCollection with: 1 with: 2 with: 3. higherOrderArray := Array with: array with: otherSequenceable. higherOrderSequenceable := OrderedCollection with: array with: otherSequenceable. result := Array streamContents: [ :s | s << array << otherSequenceable << higherOrderArray << higherOrderSequenceable ]. self assert: result equals: #( 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 ) If I guess correctly, based on mere implemetation detail of which class holds the 1 2 3, some of them are not unnested. I understand how that optimization is needed in case a string is put on character stream, double dispatching every character is insane. But so is shortcutting Array is Array-based stream. Maybe the optimization should have additional anObject isString test (in case of string, the counterexample cannot be created, because they cannot be nested). Or there should be additional double dispatch via nextPutString:, if string-based streams have their hierarchy. You know the codebase better. Unless it is already solved by some other twist. Thanks, Herby
On 10. 9. 2019 14:54, Richard O'Keefe wrote:
I think it's fair to say that #<< *is* a bug. There does not seem to be any coherent description of what it means. It's overloaded to mean *either* #nextPut: *or* #nextPutAll: *or* something else, in some confusing ways. CommandLineHandler          #nextPutAll: (sent somewhere else) Integer                     left shift (someone has been smoking too much C++) NonInteractiveTranscript    #show: = locked #print: SocketStream                #putOn: (which may itself act like                             #nextPut:, #nextPutAll:, #print,                             put elements sans separators, or                             something else) Stream                      #putOn: (see above) WriteStream                 either #nextPutAll: or #putOn: Transcript                  #show: = locked #print: ThreadSafeTranscript        #show: = locked #print: VTermOutputDriver           #putOn: VTermOutputDriver2          #asString then #nextPutAll: ZnEncodedWriteStream        #nextPutAll: ZnHtmlOutputStream          #asString then #nextPutAll: SequenceableCollection class #streamContents:
As was once said about PL/I, #<< fills a much-needed gap. When I see #print:, or #nextPut:, or #nextPutAll:, I know what to expect. When I see #putOn:, I have in general no idea what will happen. And when I see << it is worse.
I don't think so. I have pretty coherent view of how << can work. In Amber this coherent view helped to create Silk library for DOM manipulation by treating a DOM element as a ind of a stream. Having simple thing working (<< aCollection unpack the collection, having putOn: to be able to customize how object are put on stream) can help a lot; if, things are kept consistent.
One point of << is to imitate C++'s composition of outputs. That might work, too, if only there were some agreement about what #nextPutAll: returns. There is not. It might return the receiver. It might return some other stream related to the receiver. It might even return the collection argument. So when you see  a << b << c in general you not only do not have a clue what (a) is going to do with (b) but you have no idea what object the message << c will be sent to.
This is strawman. We know what str << a << b << c does if we know what is output of #<<, it has nothing to do with #nextPutAll:. And it's simple, STream >> << should return self, and we're done.
Now let's see if we can puzzle out what Array streamContents: [ :s | s << 10 << '10' << #(10 '10') ] does. The output will be going to a WriteStream. aWriteStream << anInteger is not, but is like, aWriteStream print: anInteger. So we add $1 and $0. aWriteStream << aString reduces to aWriteStream nextPutAll: aString. So we add $1 and $0. aWriteStream on anArray << anotherArray reduces to aWriteStream nextPutAll: anotherArray. So we add 10 and '10'. Thus the result we get is #($1 $0 $1 $0 10 '10'). What result we should *expect* from this muddle I cannot say.
#(10 '10' 10 '10') Of course. After all, I put things on Array stream, which holds objects, not a character stream.
If, on the other hand, you wrote explicitly Array streamContents: [:stream | Â stream print: 10; nextPutAll: '10'; nextPutAll: #(10 '10')] you would have an easy time figuring out what to expect.
I see nextPut[All]: as low-level put API, and print:, write: and << as high-level one. I would not combine them. I actually combine print: with write: to nice effect in Amber. Lot of code which actually export source to the disk uses combination of these two to enhance readability (IMO). For example: exportTraitDefinitionOf: aClass on: aStream "Chunk format." aStream write: 'Trait named: '; printSymbol: aClass name; lf; tab; write: 'package: '; print: aClass category; write: '!!'; lf. aClass comment ifNotEmpty: [ aStream write: '!!'; print: aClass; write: ' commentStamp!!'; lf; write: { self chunkEscape: aClass comment. '!!' }; lf ]. aStream lf As write: and << are synonyms in Amber (so they probably was in some part of Pharo history), I chose to pair print: keyword selector with write: keyword selector from the style point of view. Also, since write: is <<, I can write: a collection of pieces to put and I don't need to cascade lots of write:s. What I wanted to illustrate is, good implementation of << can be pretty useful.
By the way, there is no standard definition of #show:, but in other Smalltalk systems it's usually a variant of #nextPutAll:, not a variant of #print:. There's no denying that locked output is useful to have, but #show: is not perhaps the best name for it.
Herby
It is good that you have a coherent idea of how << can work. The question I was addressing is how << *DOES* work in Pharo. Having simple things working, if they are kept consistent, is indeed good. The problem is that in Pharo 7 they are NOT consistent, and << does NOT work consistently, because there are occasions when << does ^something nextPutAll: something else and nextPutAll: returns something else. I am grateful for the link to the changes to Pharo 8. That's a massive simplification and improvement. There is some way to go yet. The very first thing that should be done is to write down what the *semantics* of #<< is supposed to be, and then to ensure it is implemented that way. Let's look at the chunk example. exportTraitDefinitionOf: aClass on: aStream "Chunk format." aStream nextPutAll: 'Trait named: '; nextPutAll: aClass name; cr; tab; nextPutAll: 'package: '; print: aClass category; nextPutAll: '!!'; cr. aClass comment isEmpty ifFalse: [ aStream nextPutAll: '!!'; print: aClass; nextPutAll: 'commentStamp!!'; cr; nextPutAll: aClass category withDelimiter: $!; nextPutAll: '!!'; cr]. aStream cr. With the exception of #nextPutAll:withDelimiter:, this is completely standard and portable. If I am willing to do something nonstandard, aStream format: 'Trait named: {s}{n}{t}package: {p}{n}' with: aClass name with: aClass category. aClass comment isEmpty ifFalse: [ aStream format: '!!{p} commentStamp!!{n}{D$!}!!{n}' with: aClass with: aClass comment]. aClass format: '{n}. #write: really does not seem to be any improvement over #nextPutAll:. For what it's worth, GNU Smalltalk also has #<<, which it defines to be equivalent to #displayOn:, if memory serves me correctly. It has never been clear to me what the use case for #write: is. In Pharo 7, for streams it is the same as #putOn: except for the result. Neither of them is in any interesting way "higher level" than #nextPut: or #nextPutAll:, merely less informative.
On 11. 9. 2019 3:23, Richard O'Keefe wrote:
It is good that you have a coherent idea of how << can work.
After the changes sent by Sven, Pharo 8 seems to have the exactly same idea. IMNSHO.
The question I was addressing is how << *DOES* work in Pharo. Having simple things working, if they are kept consistent, is indeed good. The problem is that in Pharo 7 they are NOT consistent, and << does NOT work consistently, because there are occasions when << does ^something nextPutAll: something else and nextPutAll: returns something else.
Bug. '^' should not have been there.
I am grateful for the link to the changes to Pharo 8. That's a massive simplification and improvement. There is some way to go yet.
Actually, from my PoV, just the fix I posted. The rest seems correct.
The very first thing that should be done is to write down what the *semantics* of #<< is supposed to be, and then to ensure it is implemented that way. > Let's look at the chunk example.
exportTraitDefinitionOf: aClass on: aStream  "Chunk format."  aStream    nextPutAll: 'Trait named: '; nextPutAll: aClass name; cr;
The devil is in the details. Why you changed `printSymbol: aClass name` for `nextPutAll: aClass name`? Now it outputs things incorrectly. You should have changed it for `print: aClass name asSymbol` And this is precisely that distinction between low-level nextPutAll: and high-level write: / << / print:.
   tab; nextPutAll: 'package: '; print: aClass category; nextPutAll: '!!'; cr.  aClass comment isEmpty ifFalse: [    aStream      nextPutAll: '!!'; print: aClass; nextPutAll: 'commentStamp!!'; cr;      nextPutAll: aClass category withDelimiter: $!; nextPutAll: '!!'; cr].  aStream cr.
With the exception of #nextPutAll:withDelimiter:, this is completely standard and portable. If I am willing to do something nonstandard,
 aStream format: 'Trait named: {s}{n}{t}package: {p}{n}'    with: aClass name with: aClass category.  aClass comment isEmpty ifFalse: [    aStream format: '!!{p} commentStamp!!{n}{D$!}!!{n}'      with: aClass with: aClass comment].  aClass format: '{n}.
#write: really does not seem to be any improvement over #nextPutAll:.
Will post.
For what it's worth, GNU Smalltalk also has #<<, which it defines to be equivalent to #displayOn:, if memory serves me correctly. It has never been clear to me what the use case for #write: is. In Pharo 7, for streams it is the same as #putOn: except for the result. Neither of them is in any interesting way "higher level" than #nextPut: or #nextPutAll:, merely less informative.
On 11. 9. 2019 11:46, Herby VojÄÃk wrote:
On 11. 9. 2019 3:23, Richard O'Keefe wrote:
#write: really does not seem to be any improvement over #nextPutAll:.
Will post.
Actually, I won't. I don't care any more. I found Contributor Covenant-derived Code of Conduct was added to Pharo, three months ago. This is unacceptable under any circumstances. Have fun in your woke hell. Herby
On 11/09/19 9:14 a. m., Herby VojÄÃk wrote:
On 11. 9. 2019 11:46, Herby VojÄÃk wrote:
On 11. 9. 2019 3:23, Richard O'Keefe wrote:
#write: really does not seem to be any improvement over #nextPutAll:.
Will post.
Actually, I won't. I don't care any more.
I found Contributor Covenant-derived Code of Conduct was added to Pharo, three months ago. This is unacceptable under any circumstances.
Have fun in your woke hell.
Herby
I would like to have more details about this. For those of us who don't believe in hell, what is the problem of an explicit Code of Conduct? Cheers, Offray
On Sep 11, 2019, at 8:17 AM, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
On 11/09/19 9:14 a. m., Herby VojÄÃk wrote:
I found Contributor Covenant-derived Code of Conduct was added to Pharo, three months ago. This is unacceptable under any circumstances.
Have fun in your woke hell.
I would like to have more details about this. For those of us who don't believe in hell, what is the problem of an explicit Code of Conduct?
More specifically, what behavior does the Code prohibit that you would otherwise do? For my part, while I might not subscribe to the full progressive agenda, I wasnât planning any racial or ethnic slurs (or a theological discussion of the afterlifeâbut feel free to ask me privately!), so donât find this âwokeâ agenda too constricting. James
On 11 Sep 2019, at 19:07, James Foster <Smalltalk@JGFoster.net> wrote:
On Sep 11, 2019, at 8:17 AM, Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
On 11/09/19 9:14 a. m., Herby VojÄÃk wrote:
I found Contributor Covenant-derived Code of Conduct was added to Pharo, three months ago. This is unacceptable under any circumstances.
Have fun in your woke hell.
I would like to have more details about this. For those of us who don't believe in hell, what is the problem of an explicit Code of Conduct?
More specifically, what behavior does the Code prohibit that you would otherwise do?
For my part, while I might not subscribe to the full progressive agenda, I wasnât planning any racial or ethnic slurs (or a theological discussion of the afterlifeâbut feel free to ask me privately!), so donât find this âwokeâ agenda too constricting.
James
Indeed. For those new to the discussion, we are talking about https://www.contributor-covenant.org/version/1/4/code-of-conduct - which is quite popular and generally accepted. Sven
Sven Van Caekenberghe-2 wrote
https://www.contributor-covenant.org/version/1/4/code-of-conduct - which is quite popular and generally accepted.
Based on the reaction earlier in the thread, I was expecting something highly opinionated and polarizing, but it seems to boil down to: be professional and don't make it personal. While there are some categories of people mentioned, it doesn't seem to make a value judgement about them, but merely say that no one (including from those categories) will be harassed inside the Pharo community. Seems pretty reasonable, unless I'm missing something... ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
There are some aspects of the "Covenant" that rub me up the wrong way. I note that the only part of it where anyone actually promises to do (or not do) anything is the "Pledge", which rather pointedly refrains from treating people with different political viewpoints (like gun ownership, or like TERFs who are silent about their opinions within the group) well. It's about supporting diversity of *being*, not diversity of *opinion*. There are other codes of conduct around which are framed in less identitarian terms. And it is rather startling to find that one is expected to be bound by a "Covenant" which is no Covenant (that is, an *agreement*). A code of conduct can be imposed from the top down; a covenant requires the consent of the governed. I am somewhat perturbed by the term "inclusive language" because it is a shifting standard. I have frequently heard young women addressing each other as "guys", yet have just recently watching someone basically saying "I know it's gender neutral now and there is no malice in it but it's exclusionary so it's really bad." So if you say something like "hey guys" in a message, you have just violated this covenant, and deserve to be thrown out. Or then again, you may not have. Who decides? In a world where an anti-racist black hero gets labelled a white supremacist, who decides? Here's another case. Many mailing lists or newsgroups have a policy "no homework answers". If you tell someone off for violating that policy, your mailing list or newsgroup is not welcoming and inclusive. In another mailing list I am on, there is a clear and explicit "no HTML postings" policy, for good topic-specific reason, and people are often (politely) told off for violating it. As I read the Covenant, that's not allowed. In a mailing list where you have no idea of my age, sex, body size, gender orientation, etc, much of the Covenant is prima facie pointless. The Covenant goes way too far to be a mere "be nice to each other" guide. I have no intention of giving offence, and I am I not going to pull out of the mailing list, but couldn't some less creepy code be adopted? On Thu, 12 Sep 2019 at 08:08, Sean P. DeNigris <sean@clipperadams.com> wrote:
Sven Van Caekenberghe-2 wrote
https://www.contributor-covenant.org/version/1/4/code-of-conduct - which is quite popular and generally accepted.
Based on the reaction earlier in the thread, I was expecting something highly opinionated and polarizing, but it seems to boil down to: be professional and don't make it personal. While there are some categories of people mentioned, it doesn't seem to make a value judgement about them, but merely say that no one (including from those categories) will be harassed inside the Pharo community. Seems pretty reasonable, unless I'm missing something...
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
+100 /ââââââââââââââââââââ/ For encrypted mail use jgpfersich@protonmail.com Get a free account at ProtonMail.com Web: www.objectnets.net and www.objectnets.org
On Sep 12, 2019, at 10:13, Richard O'Keefe <raoknz@gmail.com> wrote:
There are some aspects of the "Covenant" that rub me up the wrong way. I note that the only part of it where anyone actually promises to do (or not do) anything is the "Pledge", which rather pointedly refrains from treating people with different political viewpoints (like gun ownership, or like TERFs who are silent about their opinions within the group) well. It's about supporting diversity of *being*, not diversity of *opinion*.
There are other codes of conduct around which are framed in less identitarian terms. And it is rather startling to find that one is expected to be bound by a "Covenant" which is no Covenant (that is, an *agreement*). A code of conduct can be imposed from the top down; a covenant requires the consent of the governed.
I am somewhat perturbed by the term "inclusive language" because it is a shifting standard. I have frequently heard young women addressing each other as "guys", yet have just recently watching someone basically saying "I know it's gender neutral now and there is no malice in it but it's exclusionary so it's really bad." So if you say something like "hey guys" in a message, you have just violated this covenant, and deserve to be thrown out. Or then again, you may not have. Who decides? In a world where an anti-racist black hero gets labelled a white supremacist, who decides?
Here's another case. Many mailing lists or newsgroups have a policy "no homework answers". If you tell someone off for violating that policy, your mailing list or newsgroup is not welcoming and inclusive. In another mailing list I am on, there is a clear and explicit "no HTML postings" policy, for good topic-specific reason, and people are often (politely) told off for violating it. As I read the Covenant, that's not allowed.
In a mailing list where you have no idea of my age, sex, body size, gender orientation, etc, much of the Covenant is prima facie pointless.
The Covenant goes way too far to be a mere "be nice to each other" guide.
I have no intention of giving offence, and I am I not going to pull out of the mailing list, but couldn't some less creepy code be adopted?
On Thu, 12 Sep 2019 at 08:08, Sean P. DeNigris <sean@clipperadams.com> wrote: Sven Van Caekenberghe-2 wrote
https://www.contributor-covenant.org/version/1/4/code-of-conduct - which is quite popular and generally accepted.
Based on the reaction earlier in the thread, I was expecting something highly opinionated and polarizing, but it seems to boil down to: be professional and don't make it personal. While there are some categories of people mentioned, it doesn't seem to make a value judgement about them, but merely say that no one (including from those categories) will be harassed inside the Pharo community. Seems pretty reasonable, unless I'm missing something...
----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
On 2019-09-11 1:07 p.m., Sean P. DeNigris wrote:
Based on the reaction earlier in the thread, I was expecting something highly opinionated and polarizing, but it seems to boil down to: be professional and don't make it personal. While there are some categories of people mentioned, it doesn't seem to make a value judgement about them, but merely say that no one (including from those categories) will be harassed inside the Pharo community. Seems pretty reasonable, unless I'm missing something...
You're missing what some progressives consider harassment these days. These codes of conduct are being used around the net to force progressive political ideology into technical communities, the vague language is used to claim offense at any number of things like misgendering, or refusing to use any number of made up pronouns. Using inclusive language means using progressive language like ze/zir, per/pers, ey/em, xe/xem if someone demands it. This is language policing and a forcing of political ideology into what should not be political. People are being kicked out of communities for violating codes of conduct of the community outside of the community, i.e. you said something on twitter or facebook and now you're banned from an open source project for it even though it had nothing to do with the project. The person who created this particular code of conduct is a well known trans activist who first gets communities to accept the code of conduct, and then stalks people around web to find anything anywhere that might violate the vague code of conduct and then tries to cancel them in every community they're a part of. If you're not wary of this code of conduct, you're not paying attention to how it's being used out there. Here's a few quotes from the author of this code of conduct. "The Ruby community has no moral compass. Just aphorisms and self-congtatulatory, masturbatory bullshit." << after trying and failing to kick the creator of Ruby out of the Ruby community. "If you're not fighting alongside us, or lending support, you're STANDING IN OUR WAY. And I vow that I will walk right the fuck over you.". "Fact: the solution to the problems in tech is not more tech. Especially not more tech written by privileged, heads-in-the-sand white dudes." "So many cis het white tech dudes with large platforms on here, that not only don't engage in dialog on issues of social justice but don't even elevate the voices of those of us who do, ignoring POLITICS is a PRIVILEGE and I FUCKING SEE YOU." Here's a little history of this code of conduct and some other popular communities. https://linustechtips.com/main/topic/974038-why-the-linux-coc-is-bad/ It's sad to see that Pharo has jumped onto this PC bandwagon, it does not bode well for the community. -- Ramón León
On Mon, Sep 16, 2019 at 3:59 PM Ramon Leon <ramon.leon@allresnet.com> wrote:
On 2019-09-11 1:07 p.m., Sean P. DeNigris wrote:
merely say that no one (including from those categories) will be harassed inside the Pharo community. Seems pretty reasonable, unless I'm missing something...
You're missing what some progressives consider harassment these days. [SNIP] This is language policing and a forcing of political ideology into what should not be political.
I think that even the "adoption" of such "Covenant CoC" introduces political ideology (and hence agenda) into this community that has been free from political debate (and so I expect it to be).
https://linustechtips.com/main/topic/974038-why-the-linux-coc-is-bad/
Oh my.
It's sad to see that Pharo has jumped onto this PC bandwagon, it does not bode well for the community.
I believe this is more an undesired side effect of choosing a CoC from a template without caring about the details than the intention to have political correctness in the mailing list, because there's been flame wars and name calling here, but I don't recall anybody raising political ideology as an argument, or with the exception of a few cases, used political imagery or references in the ML, presentations, etc.. On a personal level I don't like this covenant in particular, and as was mentioned before it is not even a covenant since most of us just realized it existed and never before agreed to it. As a side note I believe mailing lists (or online communities in general) must not be safe spaces, and should only take action against concrete threats or completely off-topic comments/posts. Regards, -- Esteban A. Maringolo
Couldn't resist entering this doubtful CoC thread, just to enter a few lines and then I am gone again. One doesn't need a Code of Conduct. It is ridiculous. Civilized and respectful non discriminating behaviour should be implicit in everyone of us! If one insists in having a code of conduct than this should cover it all: "Be Nice, Social And Respectful To Each Living Being." (at times this is not easy) If this is too complicated for one to understand and not enough to stay on the right track, then know that there already are "CoC"s on an encompassing higher scope: by constitutional law: In most civilized democratic countries and also the European Union the primary laws (constitutions) offer protection of citizens against any form of discrimination and primitive harassment. If one would have the opinion that these constitutional laws are not good enough and/or that these laws are not completely respected then I'd suggest to take part in democratic processes to improve this situation. If one cannot obey these laws, then, for example: -Move to a country e.g. with an undemocratic, human rights ignoring government, mostly dictatorial ones, which might suit one's anti social discriminating behaviour better. (probably the most ultimate environment to get acquainted with one's own shortcomings) -try to be more emphatic, this world is overpopulated, with high stress levels, an incredibly fast changing environment, where empathy and social behaviour are more important than ever. Ergo: In short if one harasses, discriminates people, one is violating the law. There is no place for this on forums, There is no place for this anywhere in a civilized world. As stated in the European constitution: "The Union's values. The Union is founded on the values of respect for human dignity, freedom, democracy, equality, the rule of law and respect for human rights, including the rights of persons belonging to minorities. These values are common to the Member States in a society in which pluralism, non-discrimination, tolerance, justice, solidarity and equality between women and men prevail" This is written on page 17 art: I-2 in https://europa.eu/european-union/sites/europaeu/files/docs/body/treaty_estab... After this I will only enter this forum with IT / Smalltalk related themes. That is the purpose of this forum. Kind Regards. TedvG -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
One doesn't need a Code of Conduct. It is ridiculous.
Civilized and respectful non discriminating behaviour should be implicit in everyone of us!
If one insists in having a code of conduct than this should cover it all: "Be Nice, Social And Respectful To Each Living Being."
+100 Best wishes, Tomaz
I do not agree to have a code of conduct. In my 20 years in the various Smalltalk communities i never saw any harassment or whatever (quite the opposite). Self organization is much better, if someone "misbehave" it will be ignored by those who think that action was "misbehavior". El 18/09/2019 a las 8:51, Tomaž Turk escribió:
One doesn't need a Code of Conduct. It is ridiculous.
Civilized and respectful non discriminating behaviour should be implicit in everyone of us!
If one insists in having a code of conduct than this should cover it all: "Be Nice, Social And Respectful To Each Living Being."
+100
Best wishes, Tomaz
+ 100 Lorenzo Da: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] Per conto di Smalltalk Inviato: mercoledì 18 settembre 2019 17:04 A: pharo-users@lists.pharo.org Oggetto: Re: [Pharo-users] Code of Conduct I do not agree to have a code of conduct. In my 20 years in the various Smalltalk communities i never saw any harassment or whatever (quite the opposite). Self organization is much better, if someone "misbehave" it will be ignored by those who think that action was "misbehavior". El 18/09/2019 a las 8:51, Tomaž Turk escribió:
One doesn't need a Code of Conduct. It is ridiculous.
Civilized and respectful non discriminating behaviour should
be implicit in everyone of us!
If one insists in having a code of conduct than this should cover it all:
"Be Nice, Social And Respectful To Each Living Being."
+100 Best wishes, Tomaz
When I read the Code of conduct which is part of Pharo, my reaction was "OK, I don't expect to run into trouble over that one, so no worries". After having read the discussion here I would rather it was not there. -- Kasper
Yeah, I agree. Why is this even here? The thing I like about this maillist is that its very community oriented and everyone here helps each other. It's devoid of all the political-soapbox nonsense that I would find on, say, facebook. Which is why I don't deal with that platform anymore. And most of this is common sense anyway. Yeah, don't harass people and make fun of them or whatever, Like most people on this list doesn't already know that. Im very vocal about certain political and social opinions, am not ashamed about my opinions, am open about it, is currently "unpopular" but don't discuss them here because it's offtopic and I don't want to piss off people in any event. I don't want it turning into another facebook basically. I think we should all close this conversation, it's offtopic and not relevant to any problems this list has in any meaningful way. - Steve On Wed, Sep 18, 2019 at 1:07 PM Kasper Ãsterbye <kasper.osterbye@gmail.com> wrote:
When I read the Code of conduct which is part of Pharo, my reaction was "OK, I don't expect to run into trouble over that one, so no worries".
After having read the discussion here I would rather it was not there.
-- Kasper
There was a point raised in the Ruby discussion (where my thoughts about Matz changed from "inventor of a language that filled a much-needed gap" to "really thoughtful so maybe I was wrong about Ruby") which I think is sufficient reason for a major revision to the Coraline Code. (For the record, I'm centre-left.) There is a process for punishing, but no process for restoration. Any morally acceptable code should be explicit that in the absence of a legal conviction, no person may be banned or locked out for more than some reasonable period, such as 2 years. If someone re-offends after such a period, impose another temporary ban or lockout. Given the way the concept of "harassment" has been misused, it no longer has any place in a code of conduct. Harassment these days is whatever the percipient judges it to be. There was a Pogo cartoon in which Pogo said "good morning" to a couple of other characters. Afterwards, one of them said to the other "Pogo is so mealy-mouthed that 'good morning' from him could be someone else's 'drop dead'." Then that was satire. Today it's reality. One of my daughter's friends was reported as harassing another woman. What did she do? Sat quietly in the car, looking straight ahead, neither saying anything nor moving. I know this because I was in the driver's seat at the time. The same woman accused my wife of harassing her. How? By sitting quietly in another room facing away from her. My wife's offence was that if this woman looked at her through an internal window, she could see her. I was sitting in the same room as the complainer at the time. If just sitting quietly minding your own business can be construed as harassment, NOBODY is safe. On Tue, 17 Sep 2019 at 06:59, Ramon Leon <ramon.leon@allresnet.com> wrote:
On 2019-09-11 1:07 p.m., Sean P. DeNigris wrote:
Based on the reaction earlier in the thread, I was expecting something highly opinionated and polarizing, but it seems to boil down to: be professional and don't make it personal. While there are some categories of people mentioned, it doesn't seem to make a value judgement about them, but merely say that no one (including from those categories) will be harassed inside the Pharo community. Seems pretty reasonable, unless I'm missing something...
You're missing what some progressives consider harassment these days. These codes of conduct are being used around the net to force progressive political ideology into technical communities, the vague language is used to claim offense at any number of things like misgendering, or refusing to use any number of made up pronouns. Using inclusive language means using progressive language like ze/zir, per/pers, ey/em, xe/xem if someone demands it. This is language policing and a forcing of political ideology into what should not be political. People are being kicked out of communities for violating codes of conduct of the community outside of the community, i.e. you said something on twitter or facebook and now you're banned from an open source project for it even though it had nothing to do with the project.
The person who created this particular code of conduct is a well known trans activist who first gets communities to accept the code of conduct, and then stalks people around web to find anything anywhere that might violate the vague code of conduct and then tries to cancel them in every community they're a part of. If you're not wary of this code of conduct, you're not paying attention to how it's being used out there.
Here's a few quotes from the author of this code of conduct.
"The Ruby community has no moral compass. Just aphorisms and self-congtatulatory, masturbatory bullshit." << after trying and failing to kick the creator of Ruby out of the Ruby community.
"If you're not fighting alongside us, or lending support, you're STANDING IN OUR WAY. And I vow that I will walk right the fuck over you.".
"Fact: the solution to the problems in tech is not more tech. Especially not more tech written by privileged, heads-in-the-sand white dudes."
"So many cis het white tech dudes with large platforms on here, that not only don't engage in dialog on issues of social justice but don't even elevate the voices of those of us who do, ignoring POLITICS is a PRIVILEGE and I FUCKING SEE YOU."
Here's a little history of this code of conduct and some other popular communities.
https://linustechtips.com/main/topic/974038-why-the-linux-coc-is-bad/
It's sad to see that Pharo has jumped onto this PC bandwagon, it does not bode well for the community.
-- Ramón León
Hi, For me, communities should be secure spaces in general for the people, not for the arguments, which means that constructive criticism should be addressed to the arguments in a community without personal attacks on the people there, as a general rule. I'm pretty secure that Code of Conducts intent to provide secure spaces beyond just digital spaces and go also into physical and face to face ones. When communities are small and from people who know each other, some explicit Code of Conduct maybe is not so needed, but at some point it would be. And in that context a wide discussion about which one could be selected and how is an important one. For example, in Latin America I have not seen a huge movement about new pronouns and I don't know any of such for Spanish. The raised concerns about a Code that states punishment without restoration or defense is an important one, but also are the ones about technical communities where improper behavior is allowed because is not a "technical issue". We may lock for examples in different communities to see which one fits better our own. This is an important conversation to have, once it has been raised. Cheers, Offray On 16/09/19 5:09 p. m., Richard O'Keefe wrote:
There was a point raised in the Ruby discussion (where my thoughts about Matz changed from "inventor of a language that filled a much-needed gap" to "really thoughtful so maybe I was wrong about Ruby") which I think is sufficient reason for a major revision to the Coraline Code. (For the record, I'm centre-left.)
There is a process for punishing, but no process for restoration.
Any morally acceptable code should be explicit that in the absence of a legal conviction, no person may be banned or locked out for more than some reasonable period, such as 2 years. If someone re-offends after such a period, impose another temporary ban or lockout.
Given the way the concept of "harassment" has been misused, it no longer has any place in a code of conduct. Harassment these days is whatever the percipient judges it to be. There was a Pogo cartoon in which Pogo said "good morning" to a couple of other characters. Afterwards, one of them said to the other "Pogo is so mealy-mouthed that 'good morning' from him could be someone else's 'drop dead'." Then that was satire. Today it's reality. One of my daughter's friends was reported as harassing another woman. What did she do? Sat quietly in the car, looking straight ahead, neither saying anything nor moving. I know this because I was in the driver's seat at the time. The same woman accused my wife of harassing her. How? By sitting quietly in another room facing away from her. My wife's offence was that if this woman looked at her through an internal window, she could see her. I was sitting in the same room as the complainer at the time. If just sitting quietly minding your own business can be construed as harassment, NOBODY is safe.
On Tue, 17 Sep 2019 at 06:59, Ramon Leon <ramon.leon@allresnet.com <mailto:ramon.leon@allresnet.com>> wrote:
On 2019-09-11 1:07 p.m., Sean P. DeNigris wrote: > Based on the reaction earlier in the thread, I was expecting something > highly opinionated and polarizing, but it seems to boil down to: be > professional and don't make it personal. While there are some categories of > people mentioned, it doesn't seem to make a value judgement about them, but > merely say that no one (including from those categories) will be harassed > inside the Pharo community. Seems pretty reasonable, unless I'm missing > something...
You're missing what some progressives consider harassment these days. These codes of conduct are being used around the net to force progressive political ideology into technical communities, the vague language is used to claim offense at any number of things like misgendering, or refusing to use any number of made up pronouns. Using inclusive language means using progressive language like ze/zir, per/pers, ey/em, xe/xem if someone demands it. This is language policing and a forcing of political ideology into what should not be political. People are being kicked out of communities for violating codes of conduct of the community outside of the community, i.e. you said something on twitter or facebook and now you're banned from an open source project for it even though it had nothing to do with the project.
The person who created this particular code of conduct is a well known trans activist who first gets communities to accept the code of conduct, and then stalks people around web to find anything anywhere that might violate the vague code of conduct and then tries to cancel them in every community they're a part of. If you're not wary of this code of conduct, you're not paying attention to how it's being used out there.
Here's a few quotes from the author of this code of conduct.
"The Ruby community has no moral compass. Just aphorisms and self-congtatulatory, masturbatory bullshit."Â << after trying and failing to kick the creator of Ruby out of the Ruby community.
"If you're not fighting alongside us, or lending support, you're STANDING IN OUR WAY. And I vow that I will walk right the fuck over you.".
"Fact: the solution to the problems in tech is not more tech. Especially not more tech written by privileged, heads-in-the-sand white dudes."
"So many cis het white tech dudes with large platforms on here, that not only don't engage in dialog on issues of social justice but don't even elevate the voices of those of us who do, ignoring POLITICS is a PRIVILEGE and I FUCKING SEE YOU."
Here's a little history of this code of conduct and some other popular communities.
https://linustechtips.com/main/topic/974038-why-the-linux-coc-is-bad/
It's sad to see that Pharo has jumped onto this PC bandwagon, it does not bode well for the community.
-- Ramón León
On 2019-09-17 6:28 a.m., Offray Vladimir Luna Cárdenas wrote:
I'm pretty secure that Code of Conducts intent to provide secure spaces beyond just digital spaces and go also into physical and face to face ones.
The code of conducts intent is to force identity politics into technical spaces in the name of social justice and to make someone feeling offended an actionable reason to go after the supposed offender; never mind that offense is taken rather than given. Nevermind that anyone can claim to be offended by just about anything. The goal is to get the project to agree to kick people out for violating the utterly vague and subjective rules. Here's some more quotes from the author of said code of conduct. "Some people are saying that the Contributor Covenant is a political document, and theyâre right." "I canât wait for the mass exodus from Linux now that itâs been infiltrated by SJWs. Hahahah" "Meritocracy is just thinly veiled misogyny and white supremacy propping up fragile cis het white men's egos" "Meritocracy is late stage patriarchy" "Why didnât anyone punch the reporter giving the nazi air time?" He is a radical left transgender activist, his intentions are purely political, the CoC is merely a means to an end and is used by him to setup situations in which he can cancel people in this new cancel culture. He wants to replace meritocracy with identity politics. This is the CoC that ran Linus out of Linux, a massive loss to the OS community. This is not a horse you want to hitch your wagon to Pharo. -- Ramón León
Ramon, I'm not talking about the Covenant code in particular. Is not the only code out there and as I say the important issue is to provide safe spaces via explicit or implicit rules. Each community decides which is the best way to be welcomed and respectful and how this is clear to its members and outsiders. I don't think that technology and politics are so far away as usually depicted, particularly in the Global North, as both deal with power dynamics but technology embeds it in infrastructure. But seems that politics is kind of a tainted word there and just bring it opens a Pandora box. Cheers, Offray On 17/09/19 11:38 a. m., Ramon Leon wrote:
On 2019-09-17 6:28 a.m., Offray Vladimir Luna Cárdenas wrote:
I'm pretty secure that Code of Conducts intent to provide secure spaces beyond just digital spaces and go also into physical and face to face ones.
The code of conducts intent is to force identity politics into technical spaces in the name of social justice and to make someone feeling offended an actionable reason to go after the supposed offender; never mind that offense is taken rather than given. Nevermind that anyone can claim to be offended by just about anything. The goal is to get the project to agree to kick people out for violating the utterly vague and subjective rules.
Here's some more quotes from the author of said code of conduct.
"Some people are saying that the Contributor Covenant is a political document, and theyâre right."
"I canât wait for the mass exodus from Linux now that itâs been infiltrated by SJWs. Hahahah"
"Meritocracy is just thinly veiled misogyny and white supremacy propping up fragile cis het white men's egos"
"Meritocracy is late stage patriarchy"
"Why didnât anyone punch the reporter giving the nazi air time?"
He is a radical left transgender activist, his intentions are purely political, the CoC is merely a means to an end and is used by him to setup situations in which he can cancel people in this new cancel culture. He wants to replace meritocracy with identity politics. This is the CoC that ran Linus out of Linux, a massive loss to the OS community. This is not a horse you want to hitch your wagon to Pharo.
Correspondents should be warned that the phrase "safe spaces" needs a trigger warning. I am not joking here. People who are genuinely sensitive to the perceptions and concerns of others really should avoid that concept because there are many people in whom it arouses strong negative feelings. Who indeed feel belittled and excluded by it. "Point of personal privilege..." I want this mailing list to serve the ends of advancing the development of Pharo, supporting the people who use Pharo in learning how to use it effectively, and more generally serving humanity by advancing the art of programming. The announcement of Grafoscopio and the help given when people have problems with it? Perfect example, hugely respect-worthy. There are plenty of others. Is there, in fact, enough of a problem here for us to NEED a special code, over and above say the ACM or BCS or whatever codes of ethics? At the department I used to be in, from time to time someone would raise an issue at a staff meeting, and we'd all start thinking about how to craft a rule to cover us. But the wisest of us would usually say "Do we actually need a rule for this? Is this happening a lot, or is it something rare that we can deal with informally?" Whenever he asked this, he was right. It *was* something rare that could be dealt with human to human. I was talking to a graduate student one day. He had a lot of commercial experience. I had been reading up about BPML and commented to him "it's as if businesses wanted to program people like machines". He responded, "yes they do." He was able to give me more examples than I really wanted from his own experience. I see the so-called "Covenant" that we are discussing as another example of this urge to micro-control other people. It has me nervously looking for the exit. On Wed, 18 Sep 2019 at 09:35, Offray Vladimir Luna Cárdenas < offray.luna@mutabit.com> wrote:
Ramon,
I'm not talking about the Covenant code in particular. Is not the only code out there and as I say the important issue is to provide safe spaces via explicit or implicit rules. Each community decides which is the best way to be welcomed and respectful and how this is clear to its members and outsiders.
I don't think that technology and politics are so far away as usually depicted, particularly in the Global North, as both deal with power dynamics but technology embeds it in infrastructure. But seems that politics is kind of a tainted word there and just bring it opens a Pandora box.
Cheers,
Offray
On 17/09/19 11:38 a. m., Ramon Leon wrote:
On 2019-09-17 6:28 a.m., Offray Vladimir Luna Cárdenas wrote:
I'm pretty secure that Code of Conducts intent to provide secure spaces beyond just digital spaces and go also into physical and face to face ones.
The code of conducts intent is to force identity politics into technical spaces in the name of social justice and to make someone feeling offended an actionable reason to go after the supposed offender; never mind that offense is taken rather than given. Nevermind that anyone can claim to be offended by just about anything. The goal is to get the project to agree to kick people out for violating the utterly vague and subjective rules.
Here's some more quotes from the author of said code of conduct.
"Some people are saying that the Contributor Covenant is a political document, and theyâre right."
"I canât wait for the mass exodus from Linux now that itâs been infiltrated by SJWs. Hahahah"
"Meritocracy is just thinly veiled misogyny and white supremacy propping up fragile cis het white men's egos"
"Meritocracy is late stage patriarchy"
"Why didnât anyone punch the reporter giving the nazi air time?"
He is a radical left transgender activist, his intentions are purely political, the CoC is merely a means to an end and is used by him to setup situations in which he can cancel people in this new cancel culture. He wants to replace meritocracy with identity politics. This is the CoC that ran Linus out of Linux, a massive loss to the OS community. This is not a horse you want to hitch your wagon to Pharo.
On 2019-09-17 2:34 p.m., Offray Vladimir Luna Cárdenas wrote:
as I say the important issue is to provide safe spaces via explicit or implicit rules
I understand, I just disagree. These are of course my personal opinions, others may disagree. "Safe spaces" are bad things, not good things; the world is not a safe space, it is not the responsibility of others to provide one a feeling of safety in a an online community where people merely exchange words. Words are not dangerous, you are already safe. If you don't like what someone is saying, ignore them or mute them. Safe space a euphemism for censorship and exclusion, people who want safe spaces want to exclude other people who might express ideas or opinions that they disagree with. Safe spaces are anti-free speech zones. They are an attempt to prepare the world for the child rather than the child for the world; they are inherently narcissistic. Intellectual discourse is supposed to be challenging to your beliefs, you're supposed to confront ideas you might not like or agree with and people you might have a hard time getting along with. If you submit code to a technical forum you should expect criticism and debate. Technical discussions should resolve around the ideas being presented, not around the identities of those involved, and ideas should always be open to critique and debate. I don't care what one's sex or gender are or what color one's skin is or political beliefs are; those things have no place in a technical forum. I watch these groups to see discussions about technology like Pharo, Squeak, or Seaside. It's a rare thing to see anyone here being truly rude, there's no need for a code of conduct, it's a non solution to a non problem intended only to divide and punish for political ends. Maybe I'm just getting old, but the younger generation is far too coddled and expectant of the world to adjust to their feelings rather than learning how to deal with the world and others who have different ideas than they do. Safe spaces are bad ideas. -- Ramón León
You just wrote what I didn't quite dare to say. Thank you. On Wed, 18 Sep 2019 at 11:29, Ramon Leon <ramon.leon@allresnet.com> wrote:
On 2019-09-17 2:34 p.m., Offray Vladimir Luna Cárdenas wrote:
as I say the important issue is to provide safe spaces via explicit or implicit rules
I understand, I just disagree. These are of course my personal opinions, others may disagree. "Safe spaces" are bad things, not good things; the world is not a safe space, it is not the responsibility of others to provide one a feeling of safety in a an online community where people merely exchange words. Words are not dangerous, you are already safe. If you don't like what someone is saying, ignore them or mute them. Safe space a euphemism for censorship and exclusion, people who want safe spaces want to exclude other people who might express ideas or opinions that they disagree with. Safe spaces are anti-free speech zones.
They are an attempt to prepare the world for the child rather than the child for the world; they are inherently narcissistic. Intellectual discourse is supposed to be challenging to your beliefs, you're supposed to confront ideas you might not like or agree with and people you might have a hard time getting along with. If you submit code to a technical forum you should expect criticism and debate. Technical discussions should resolve around the ideas being presented, not around the identities of those involved, and ideas should always be open to critique and debate. I don't care what one's sex or gender are or what color one's skin is or political beliefs are; those things have no place in a technical forum. I watch these groups to see discussions about technology like Pharo, Squeak, or Seaside.
It's a rare thing to see anyone here being truly rude, there's no need for a code of conduct, it's a non solution to a non problem intended only to divide and punish for political ends. Maybe I'm just getting old, but the younger generation is far too coddled and expectant of the world to adjust to their feelings rather than learning how to deal with the world and others who have different ideas than they do. Safe spaces are bad ideas.
-- Ramón León
I'm a member of several communities which are welcoming and diverse, without a explicit Code of Conduct. That's doesn't mean that such communities doesn't see the political nature of technology, or that the way people participate on such communities is not deeply informed on who the participants are. I don't think that people just exchange words, but I don't think that we need to go, at least at this moment, to Speech Acts Theory or other approach on how words are mostly not "just words". But this is informed by my particular context and education. In some countries free speech is not an absolute right and for example is subordinated to non-defamatory or non-violent speech. So while I agree, as Esteban, Ramon and others have pointed, on the view that this is a community where discussions are usually civilized and we can agree to disagree, like in this very subject, I don't think that "technology is neutral" or "politics are bad" or identity/context doesn't inform participation, but usually these are blind spots for people under privileged circumstances. That doesn't mean that I agreed with the Covenants CoC neither. And even when this position seems like a non-position, what I'm trying to showcase is that there are a lot of grays in the binary reading of we can have safe spaces for people or we can have discussions on ideas, but not both. I believe that there is much to think about yet, at least on a personal level and hopefully at some point on a community one. I will take a pause from this thread to think it more deeply. Cheers, Offray On 17/09/19 6:32 p. m., Richard O'Keefe wrote:
You just wrote what I didn't quite dare to say. Thank you.
On Wed, 18 Sep 2019 at 11:29, Ramon Leon <ramon.leon@allresnet.com <mailto:ramon.leon@allresnet.com>> wrote:
On 2019-09-17 2:34 p.m., Offray Vladimir Luna Cárdenas wrote: > as I say the important issue is to provide safe > spaces via explicit or implicit rules
I understand, I just disagree. These are of course my personal opinions, others may disagree. "Safe spaces" are bad things, not good things; the world is not a safe space, it is not the responsibility of others to provide one a feeling of safety in a an online community where people merely exchange words. Words are not dangerous, you are already safe. If you don't like what someone is saying, ignore them or mute them. Safe space a euphemism for censorship and exclusion, people who want safe spaces want to exclude other people who might express ideas or opinions that they disagree with. Safe spaces are anti-free speech zones.
They are an attempt to prepare the world for the child rather than the child for the world; they are inherently narcissistic. Intellectual discourse is supposed to be challenging to your beliefs, you're supposed to confront ideas you might not like or agree with and people you might have a hard time getting along with. If you submit code to a technical forum you should expect criticism and debate. Technical discussions should resolve around the ideas being presented, not around the identities of those involved, and ideas should always be open to critique and debate. I don't care what one's sex or gender are or what color one's skin is or political beliefs are; those things have no place in a technical forum. I watch these groups to see discussions about technology like Pharo, Squeak, or Seaside.
It's a rare thing to see anyone here being truly rude, there's no need for a code of conduct, it's a non solution to a non problem intended only to divide and punish for political ends. Maybe I'm just getting old, but the younger generation is far too coddled and expectant of the world to adjust to their feelings rather than learning how to deal with the world and others who have different ideas than they do. Safe spaces are bad ideas.
-- Ramón León
+100 /ââââââââââââââââââââ/ For encrypted mail use jgpfersich@protonmail.com Get a free account at ProtonMail.com Web: www.objectnets.net and www.objectnets.org
On Sep 17, 2019, at 16:29, Ramon Leon <ramon.leon@allresnet.com> wrote:
On 2019-09-17 2:34 p.m., Offray Vladimir Luna Cárdenas wrote: as I say the important issue is to provide safe spaces via explicit or implicit rules
I understand, I just disagree. These are of course my personal opinions, others may disagree. "Safe spaces" are bad things, not good things; the world is not a safe space, it is not the responsibility of others to provide one a feeling of safety in a an online community where people merely exchange words. Words are not dangerous, you are already safe. If you don't like what someone is saying, ignore them or mute them. Safe space a euphemism for censorship and exclusion, people who want safe spaces want to exclude other people who might express ideas or opinions that they disagree with. Safe spaces are anti-free speech zones.
They are an attempt to prepare the world for the child rather than the child for the world; they are inherently narcissistic. Intellectual discourse is supposed to be challenging to your beliefs, you're supposed to confront ideas you might not like or agree with and people you might have a hard time getting along with. If you submit code to a technical forum you should expect criticism and debate. Technical discussions should resolve around the ideas being presented, not around the identities of those involved, and ideas should always be open to critique and debate. I don't care what one's sex or gender are or what color one's skin is or political beliefs are; those things have no place in a technical forum. I watch these groups to see discussions about technology like Pharo, Squeak, or Seaside.
It's a rare thing to see anyone here being truly rude, there's no need for a code of conduct, it's a non solution to a non problem intended only to divide and punish for political ends. Maybe I'm just getting old, but the younger generation is far too coddled and expectant of the world to adjust to their feelings rather than learning how to deal with the world and others who have different ideas than they do. Safe spaces are bad ideas.
-- Ramón León
On Tue, Sep 17, 2019 at 10:28 AM Offray Vladimir Luna Cárdenas <offray.luna@mutabit.com> wrote:
For example, in Latin America I have not seen a huge movement about new pronouns and I don't know any of such for Spanish.
The movement in LATAM started by the use of gender-neutral plurals, with some phonetic aberrations that cannot be even spelled to a more pronunciable alternative that seems to be sticking. Actually it's very easy to spot SJW because they overuse such language. There were some attempts to use it in pronouns, but apparently there is a language thing in Spanish that makes it harder to stick.
The raised concerns about a Code that states punishment without restoration or defense is an important one, but also are the ones about technical communities where improper behavior is allowed because is not a "technical issue".
It's simple to define improper behavior as something that is not aligned with the objective or purpose of the mailing list.
We may lock for examples in different communities to see which one fits better our own.
It is, but the simpler the rules the simple to enforce them. E.g. I've been part of a team of 10 moderators in an online community of 40K+ members (with 1% active daily) for over two years now, we grew our own CoC over time, but it is not harmful as this "Covenant" proposed. And in that amount of members I can guarantee you (by experience) that there is a myriad of different opinions even within the "clusters" of those ruled by identity politics.
This is an important conversation to have, once it has been raised.
Maybe, but as I said before, this mailing list, and the community in general is very civilized, even by old Internet standards. Regards, Esteban A. Maringolo
Hi Ramon, I agree completely with you. Lorenzo -----Messaggio originale----- Da: Pharo-users [mailto:pharo-users-bounces@lists.pharo.org] Per conto di Ramon Leon Inviato: lunedì 16 settembre 2019 20:58 A: pharo-users@lists.pharo.org Oggetto: Re: [Pharo-users] Code of Conduct On 2019-09-11 1:07 p.m., Sean P. DeNigris wrote:
Based on the reaction earlier in the thread, I was expecting something highly opinionated and polarizing, but it seems to boil down to: be professional and don't make it personal. While there are some categories of people mentioned, it doesn't seem to make a value judgement about them, but merely say that no one (including from those categories) will be harassed inside the Pharo community. Seems pretty reasonable, unless I'm missing something...
You're missing what some progressives consider harassment these days. These codes of conduct are being used around the net to force progressive political ideology into technical communities, the vague language is used to claim offense at any number of things like misgendering, or refusing to use any number of made up pronouns. Using inclusive language means using progressive language like ze/zir, per/pers, ey/em, xe/xem if someone demands it. This is language policing and a forcing of political ideology into what should not be political. People are being kicked out of communities for violating codes of conduct of the community outside of the community, i.e. you said something on twitter or facebook and now you're banned from an open source project for it even though it had nothing to do with the project. The person who created this particular code of conduct is a well known trans activist who first gets communities to accept the code of conduct, and then stalks people around web to find anything anywhere that might violate the vague code of conduct and then tries to cancel them in every community they're a part of. If you're not wary of this code of conduct, you're not paying attention to how it's being used out there. Here's a few quotes from the author of this code of conduct. "The Ruby community has no moral compass. Just aphorisms and self-congtatulatory, masturbatory bullshit." << after trying and failing to kick the creator of Ruby out of the Ruby community. "If you're not fighting alongside us, or lending support, you're STANDING IN OUR WAY. And I vow that I will walk right the fuck over you.". "Fact: the solution to the problems in tech is not more tech. Especially not more tech written by privileged, heads-in-the-sand white dudes." "So many cis het white tech dudes with large platforms on here, that not only don't engage in dialog on issues of social justice but don't even elevate the voices of those of us who do, ignoring POLITICS is a PRIVILEGE and I FUCKING SEE YOU." Here's a little history of this code of conduct and some other popular communities. https://linustechtips.com/main/topic/974038-why-the-linux-coc-is-bad/ It's sad to see that Pharo has jumped onto this PC bandwagon, it does not bode well for the community. -- Ramón León
On Mon, Sep 16, 2019 at 11:58:17AM -0700, Ramon Leon wrote:
It's sad to see that Pharo has jumped onto this PC bandwagon, it does not bode well for the community.
I agree. Technical people are too easy to exploit by malignant manipulators of people. All too often they don't even realize it after the fact.
I see no problem with having *a* code of conduct, but there are some worrying aspects of *this* code. Clearly there is a need for generality in any code, but the vagueness of the drafting seems to me to open it up to all sorts of mischief. Consider the paragraph:" *Project maintainers have the right and responsibility* to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or* to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate*, threatening, offensive, or harmful."The bits I have bolded mean that the maintainers can apply punitive measures based on what they deem inappropriate. Shouldn't the concept of "due process" come into this? The FAQ section, under the heading "What should I do if I have been accused of violating the code of conduct?", makes no mention of defending ones actions; the only option is to admit guilt and work with the accusers to reform.The inclusion of the words "they deem" opens the way to all sort of subjectivity. Just for one instance, Sven recently thought it inappropriate that John Pfersich mentioned in passing in this list that, besides programming, his hobbies include shooting, which is a legal activity in most countries and an Olympic sport. Others disagreed in the thread, but Sven's message remained "don't do it." If John mentioned it again, could that be a violation of the code?The fact that this particular code, evidently the creation of one person, is accepted by others should not mean it is automatically accepted. There is an obligation to look at it in detail; when I do, I think there are problems.Peter Kenny Sven Van Caekenberghe-2 wrote
On 11 Sep 2019, at 19:07, James Foster <
Smalltalk@
> wrote:> > >> On Sep 11, 2019, at 8:17 AM, Offray Vladimir Luna Cárdenas <
offray.luna@
> wrote:>> >> On 11/09/19 9:14 a. m., Herby VojÄÃk wrote:>>> I found Contributor Covenant-derived Code of Conduct was added to>>> Pharo, three months ago. This is unacceptable under any circumstances.>>> >>> Have fun in your woke hell.>> >> I would like to have more details about this. For those of us who don't>> believe in hell, what is the problem of an explicit Code of Conduct?> > More specifically, what behavior does the Code prohibit that you would otherwise do? > > For my part, while I might not subscribe to the full progressive agenda, I wasnât planning any racial or ethnic slurs (or a theological discussion of the afterlifeâbut feel free to ask me privately!), so donât find this âwokeâ agenda too constricting.> > JamesIndeed.For those new to the discussion, we are talking about https://www.contributor-covenant.org/version/1/4/code-of-conduct - which is quite popular and generally accepted.Sven
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Thanks for sharing that, Peter. It's an important point. On Wed, Sep 11, 2019 at 2:02 PM Peter Kenny <peter@pbkresearch.co.uk> wrote:
I see no problem with having *a* code of conduct, but there are some worrying aspects of *this* code. Clearly there is a need for generality in any code, but the vagueness of the drafting seems to me to open it up to all sorts of mischief. Consider the paragraph: " *Project maintainers have the right and responsibility* to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or* to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate*, threatening, offensive, or harmful." The bits I have bolded mean that the maintainers can apply punitive measures based on what they deem inappropriate. Shouldn't the concept of "due process" come into this? The FAQ section, under the heading "What should I do if I have been accused of violating the code of conduct?", makes no mention of defending ones actions; the only option is to admit guilt and work with the accusers to reform. The inclusion of the words "they deem" opens the way to all sort of subjectivity. Just for one instance, Sven recently thought it inappropriate that John Pfersich mentioned in passing in this list that, besides programming, his hobbies include shooting, which is a legal activity in most countries and an Olympic sport. Others disagreed in the thread, but Sven's message remained "don't do it." If John mentioned it again, could that be a violation of the code? The fact that this particular code, evidently the creation of one person, is accepted by others should not mean it is automatically accepted. There is an obligation to look at it in detail; when I do, I think there are problems. Peter Kenny
Sven Van Caekenberghe-2 wrote
On 11 Sep 2019, at 19:07, James Foster <[hidden email] <http:///user/SendEmail.jtp?type=email&email=Smalltalk%40>> wrote: > > >> On Sep 11, 2019, at 8:17 AM, Offray Vladimir Luna Cárdenas <[hidden email] <http:///user/SendEmail.jtp?type=email&email=offray.luna%40>> wrote: >>
On 11/09/19 9:14 a. m., Herby VojÄÃk wrote: >>> I found Contributor Covenant-derived Code of Conduct was added to >>> Pharo, three months ago. This is unacceptable under any circumstances. >>> >>> Have fun in your woke hell. >> >> I would like to have more details about this. For those of us who don't >> believe in hell, what is the problem of an explicit Code of Conduct? > > More specifically, what behavior does the Code prohibit that you would otherwise do? > > For my part, while I might not subscribe to the full progressive agenda, I wasnât planning any racial or ethnic slurs (or a theological discussion of the afterlifeâbut feel free to ask me privately!), so donât find this âwokeâ agenda too constricting. > > James Indeed. For those new to the discussion, we are talking about https://www.contributor-covenant.org/version/1/4/code-of-conduct - which is quite popular and generally accepted. Sven
------------------------------ Sent from the Pharo Smalltalk Users mailing list archive <http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html> at Nabble.com.
First, apologies for the shambles of formatting this post. Secondly, having re-read it, I think it was inappropriate to mention Sven in the way I did. I still maintain that there are problems with the code, but I wish to retract the comments about Sven, and I apologise for including them. Peter Kenny From: Pharo-users <pharo-users-bounces@lists.pharo.org> On Behalf Of Peter Kenny Sent: 11 September 2019 22:02 To: pharo-users@lists.pharo.org Subject: Re: [Pharo-users] Code of Conduct I see no problem with having *a* code of conduct, but there are some worrying aspects of *this* code. Clearly there is a need for generality in any code, but the vagueness of the drafting seems to me to open it up to all sorts of mischief. Consider the paragraph: " Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful." The bits I have bolded mean that the maintainers can apply punitive measures based on what they deem inappropriate. Shouldn't the concept of "due process" come into this? The FAQ section, under the heading "What should I do if I have been accused of violating the code of conduct?", makes no mention of defending ones actions; the only option is to admit guilt and work with the accusers to reform. The inclusion of the words "they deem" opens the way to all sort of subjectivity. Just for one instance, Sven recently thought it inappropriate that John Pfersich mentioned in passing in this list that, besides programming, his hobbies include shooting, which is a legal activity in most countries and an Olympic sport. Others disagreed in the thread, but Sven's message remained "don't do it." If John mentioned it again, could that be a violation of the code? The fact that this particular code, evidently the creation of one person, is accepted by others should not mean it is automatically accepted. There is an obligation to look at it in detail; when I do, I think there are problems. Peter Kenny Sven Van Caekenberghe-2 wrote
On 11 Sep 2019, at 19:07, James Foster <[hidden email]> wrote: > > >> On Sep 11, 2019, at 8:17 AM, Offray Vladimir Luna Cárdenas <[hidden email]> wrote: >> >> On 11/09/19 9:14 a. m., Herby VojÄÃk wrote: >>> I found Contributor Covenant-derived Code of Conduct was added to >>> Pharo, three months ago. This is unacceptable under any circumstances. >>> >>> Have fun in your woke hell. >> >> I would like to have more details about this. For those of us who don't >> believe in hell, what is the problem of an explicit Code of Conduct? > > More specifically, what behavior does the Code prohibit that you would otherwise do? > > For my part, while I might not subscribe to the full progressive agenda, I wasnât planning any racial or ethnic slurs (or a theological discussion of the afterlifeâbut feel free to ask me privately!), so donât find this âwokeâ agenda too constricting. > > James Indeed. For those new to the discussion, we are talking about https://www.contributor-covenant.org/version/1/4/code-of-conduct - which is quite popular and generally accepted. Sven
_____ Sent from the Pharo Smalltalk Users mailing list archive <http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html> at Nabble.com.
One side-effect of the âCovenantâ discussion is that it is necessarily political, which is something that many (rightly, in my view) are trying to avoid. While I agree with most of the views expressed so far, I cringe because I anticipate that someone who disagrees will feel the compulsion to tell us that we are wrong, and things will go bad from there. I havenât reviewed the full email chain, but Iâve spent a few minutes searching pharo.org for âcode of conductâ and âcovenantâ and come up empty. Before we continue the discussion of how âwoke" (politically correct) we want to be, could someone confirm that this "dastardly deed" (imposing a progressive âCovenantâ without asking for agreement) was actually done? Maybe a troll has just dropped a fire cracker on us and is sitting back, enjoying watching us run around screaming! If there was, indeed, adoption of a âCovenantâ it should have been done by the board whose role âis to make decisions if in the future the community can't decide on a course of actionâ (https://pharo.org/about). I suggest that we suspend discussion of the politics of speech codes until we confirm that there is one for Pharo. At that point we politely (but pointedly) ask the board (publicly and privately) to explain what prompted the decision to adopt a Code (is it really necessary?) and how this one was selected. Note that part of the reason for limiting discussion is to avoid attracting attention of outsiders who will want to shape the discussion. Letâs stop kicking up dust for the moment! If we need a Code of Conduct, I respectfully suggest we start with ACM (https://www.acm.org/code-of-ethics) which has what should be adequate anti-discrimination provisions (see 1.4 for a list of âunderrepresentedâ groups) to satisfy the progressives among us. James Foster
On 2019-09-17 5:11 p.m., James Foster wrote:
If there was, indeed, adoption of a âCovenantâ it should have been done by the board whose role âis to make decisions if in the future the community can't decide on a course of actionâ (https://pharo.org/about).
I suggest that we suspend discussion of the politics of speech codes until we confirm that there is one for Pharo.
https://github.com/pharo-project/pharo/blob/Pharo8.0/CODE_OF_CONDUCT.md -- Ramón León
On Sep 17, 2019, at 5:19 PM, Ramon Leon <ramon.leon@allresnet.com> wrote:
https://github.com/pharo-project/pharo/blob/Pharo8.0/CODE_OF_CONDUCT.md
Thanks. Iâve submitted a PR to use ACM. Letâs move the discussion to https://github.com/pharo-project/pharo/pull/4637.
On Wed, Sep 18, 2019 at 2:11 AM James Foster <Smalltalk@jgfoster.net> wrote:
One side-effect of the âCovenantâ discussion is that it is necessarily political, which is something that many (rightly, in my view) are trying to avoid. While I agree with most of the views expressed so far, I cringe because I anticipate that someone who disagrees will feel the compulsion to tell us that we are wrong, and things will go bad from there.
I havenât reviewed the full email chain, but Iâve spent a few minutes searching pharo.org for âcode of conductâ and âcovenantâ and come up empty. Before we continue the discussion of how âwoke" (politically correct) we want to be, could someone confirm that this "dastardly deed" (imposing a progressive âCovenantâ without asking for agreement) was actually done? Maybe a troll has just dropped a fire cracker on us and is sitting back, enjoying watching us run around screaming!
If there was, indeed, adoption of a âCovenantâ it should have been done by the board whose role âis to make decisions if in the future the community can't decide on a course of actionâ (https://pharo.org/about).
I suggest that we *suspend discussion* of the politics of speech codes until we confirm that there is one for Pharo. At that point we politely (but pointedly) ask the board (publicly and privately) to explain what prompted the decision to adopt a Code (is it really necessary?) and how this one was selected. Note that part of the reason for limiting discussion is to avoid attracting attention of outsiders who will want to shape the discussion. Letâs stop kicking up dust for the moment!
Dear James, I'm the one who submit the PR for the CoC. Similar text are adopted by a lot of open-source communities or conferences in order to enhance diversity. I read again this morning the document here: https://github.com/pharo-project/pharo/blob/Pharo8.0/CODE_OF_CONDUCT.md and for me this quite neutral and I see nothing political here. I agree with you that this kind of document should have been discussed by the Pharo board and you can propose it for the next meeting. I'm a bit suprised by some overeactions here on the mailing-list. Apparently the Pharo community will be soon be doomed or under attack of nasty leftist activists ... But I will not discuss endlessly about that.
If we need a Code of Conduct, I respectfully suggest we start with ACM ( https://www.acm.org/code-of-ethics) which has what should be adequate anti-discrimination provisions (see 1.4 for a list of âunderrepresentedâ groups) to satisfy the progressives among us.
Thank you James to move the discussion on github. Cheers, -- Serge Stinckwic h Int. Research Unit on Modelling/Simulation of Complex Systems (UMMISCO) Sorbonne University (SU) French National Research Institute for Sustainable Development (IRD) U niversity of Yaoundé I, Cameroon "Programs must be written for people to read, and only incidentally for machines to execute." https://twitter.com/SergeStinckwich
Serge Your post does not really answer Jamesâs questions about the status of the Code. It seems you personally posted the Code on Github, without prior discussion with the Board. Is this a proposal by you, for discussion by the Board, or does posting it there mean it is adopted as the effective Code for the Pharo community? The github post just quotes the code, without explanation. As to the content of the code, I still believe that, if the board can undertake punitive actions like banning, there must be some concept of âdue processâ, with the right to defend oneself. The referenced FAQ suggests that, if one is accused of a breach, the only response is to admit guilt and work with the accusers to reform. I am also worried by the suggestions that complaints can be anonymous, and that the anonymity of the complainant must be protected. Peter Kenny From: Pharo-users <pharo-users-bounces@lists.pharo.org> On Behalf Of Serge Stinckwich Sent: 18 September 2019 08:33 To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Subject: Re: [Pharo-users] Code of Conduct On Wed, Sep 18, 2019 at 2:11 AM James Foster <Smalltalk@jgfoster.net <mailto:Smalltalk@jgfoster.net> > wrote: One side-effect of the âCovenantâ discussion is that it is necessarily political, which is something that many (rightly, in my view) are trying to avoid. While I agree with most of the views expressed so far, I cringe because I anticipate that someone who disagrees will feel the compulsion to tell us that we are wrong, and things will go bad from there. I havenât reviewed the full email chain, but Iâve spent a few minutes searching pharo.org <http://pharo.org> for âcode of conductâ and âcovenantâ and come up empty. Before we continue the discussion of how âwoke" (politically correct) we want to be, could someone confirm that this "dastardly deed" (imposing a progressive âCovenantâ without asking for agreement) was actually done? Maybe a troll has just dropped a fire cracker on us and is sitting back, enjoying watching us run around screaming! If there was, indeed, adoption of a âCovenantâ it should have been done by the board whose role âis to make decisions if in the future the community can't decide on a course of actionâ (https://pharo.org/about). I suggest that we suspend discussion of the politics of speech codes until we confirm that there is one for Pharo. At that point we politely (but pointedly) ask the board (publicly and privately) to explain what prompted the decision to adopt a Code (is it really necessary?) and how this one was selected. Note that part of the reason for limiting discussion is to avoid attracting attention of outsiders who will want to shape the discussion. Letâs stop kicking up dust for the moment! Dear James, I'm the one who submit the PR for the CoC. Similar text are adopted by a lot of open-source communities or conferences in order to enhance diversity. I read again this morning the document here: https://github.com/pharo-project/pharo/blob/Pharo8.0/CODE_OF_CONDUCT.md and for me this quite neutral and I see nothing political here. I agree with you that this kind of document should have been discussed by the Pharo board and you can propose it for the next meeting. I'm a bit suprised by some overeactions here on the mailing-list. Apparently the Pharo community will be soon be doomed or under attack of nasty leftist activists ... But I will not discuss endlessly about that. If we need a Code of Conduct, I respectfully suggest we start with ACM (https://www.acm.org/code-of-ethics) which has what should be adequate anti-discrimination provisions (see 1.4 for a list of âunderrepresentedâ groups) to satisfy the progressives among us. Thank you James to move the discussion on github. Cheers, -- Serge Stinckwic h Int. Research Unit on Modelling/Simulation of Complex Systems (UMMISCO) Sorbonne University (SU) French National Research Institute for Sustainable Development (IRD) U niversity of Yaoundé I, Cameroon "Programs must be written for people to read, and only incidentally for machines to execute." https://twitter.com/SergeStinckwich
Why you changed `printSymbol: aClass name` for `nextPutAll: aClass name`?
Because there is no #printSymbol: anywhere in Pharo 7 or Pharo 8> , so I had to *guess* what it does, and the only reason I could see for using #printSymbol: instead of #print: is that class names are symbols and #print: will write a hash in front, and it seemed plausible that you would not want that hash. Accordingly I chose a well known, even standard, method that writes a class name with no extra decoration.
Now it outputs things incorrectly. You should have changed it for `print: aClass name asSymbol`
How is one supposed to *tell* what "correct" output is? If I wanted to write that code, I would be kind to my readers and make it *obvious* by doing stream nextPut; $#; nextPutAll: aClass name. I certainly would not go out of my way to confuse people by sending #asSymbol to something they already know is a Symbol. For what it's worth, I've attached my implementation. On Wed, 11 Sep 2019 at 21:46, Herby VojÄÃk <herby@mailbox.sk> wrote:
On 11. 9. 2019 3:23, Richard O'Keefe wrote:
It is good that you have a coherent idea of how << can work.
After the changes sent by Sven, Pharo 8 seems to have the exactly same idea. IMNSHO.
The question I was addressing is how << *DOES* work in Pharo. Having simple things working, if they are kept consistent, is indeed good. The problem is that in Pharo 7 they are NOT consistent, and << does NOT work consistently, because there are occasions when << does ^something nextPutAll: something else and nextPutAll: returns something else.
Bug. '^' should not have been there.
I am grateful for the link to the changes to Pharo 8. That's a massive simplification and improvement. There is some way to go yet.
Actually, from my PoV, just the fix I posted. The rest seems correct.
The very first thing that should be done is to write down what the *semantics* of #<< is supposed to be, and then to ensure it is implemented that way. > Let's look at the chunk example.
exportTraitDefinitionOf: aClass on: aStream "Chunk format." aStream nextPutAll: 'Trait named: '; nextPutAll: aClass name; cr;
The devil is in the details. Why you changed `printSymbol: aClass name` for `nextPutAll: aClass name`? Now it outputs things incorrectly. You should have changed it for `print: aClass name asSymbol`
And this is precisely that distinction between low-level nextPutAll: and high-level write: / << / print:.
tab; nextPutAll: 'package: '; print: aClass category; nextPutAll: '!!'; cr. aClass comment isEmpty ifFalse: [ aStream nextPutAll: '!!'; print: aClass; nextPutAll: 'commentStamp!!'; cr; nextPutAll: aClass category withDelimiter: $!; nextPutAll: '!!';
cr].
aStream cr.
With the exception of #nextPutAll:withDelimiter:, this is completely standard and portable. If I am willing to do something nonstandard,
aStream format: 'Trait named: {s}{n}{t}package: {p}{n}' with: aClass name with: aClass category. aClass comment isEmpty ifFalse: [ aStream format: '!!{p} commentStamp!!{n}{D$!}!!{n}' with: aClass with: aClass comment]. aClass format: '{n}.
#write: really does not seem to be any improvement over #nextPutAll:.
Will post.
For what it's worth, GNU Smalltalk also has #<<, which it defines to be equivalent to #displayOn:, if memory serves me correctly. It has never been clear to me what the use case for #write: is. In Pharo 7, for streams it is the same as #putOn: except for the result. Neither of them is in any interesting way "higher level" than #nextPut: or #nextPutAll:, merely less informative.
participants (21)
-
Esteban Maringolo -
Eugen Leitl -
Herby VojÄÃk -
James Foster -
John Pfersich -
Kasper Ãsterbye -
Lorenzo Schiavina -
Noury Bouraqadi -
Offray Vladimir Luna Cárdenas -
PBKResearch -
Peter Kenny -
Ramon Leon -
Richard O'Keefe -
Richard Sargent -
Sean P. DeNigris -
Serge Stinckwich -
Smalltalk -
Steve Quezadas -
Sven Van Caekenberghe -
TedVanGaalen -
Tomaž Turk