Russ Cox: Go, Open Source, Community
blog.golang.org
blog.golang.org
1. The Django CoC uses very vague language on what it is forbidden and explicitly tells you that "this isn’t an exhaustive list of things that you can’t do" just to be extra vague in what constitutes unacceptable behaviour.
2. It does not define what process will be used to address CoC violations, being ejected from an OS project for violating the CoC can be a serious thing with personal and professional ramifications but an accused is not given the right to face their accuser nor the right to an impartial jury (which would be hard to do anyway since the accusation could be something like "he's making me anxious")
3. It overextends itself "violations of this code outside these spaces may affect a person's ability to participate within them" which means that not only you are under the scrutiny of the kangaroo court when you are posting on golang spaces but everywhere else: ycombinator, reddit, your personal blog, etc. Honestly I feel like just writing this criticism is painting a target on my forehead, talk about safe spaces.
I wouldn't be making this comment if CoCs hadn't already been used in bad faith to attempt to character assassinate OS contributors (for exmaple the Kubuntu debacle or this [1])
https://groups.google.com/forum/#!msg/golang-nuts/sy-YcVPADj...
User Peter Kleiweg raises this concern "Who gets to decide what is racist? And even whether or not racist is a bad thing?" and while I disagree with him on this particular issue the answer that Gerrand gives is very problematic:
"If it's speech that makes people feel unwelcome and discriminated against, then I personally believe that's a bad thing."
the problem with this is that, for example, an open display of support for gay marriage will make some catholics (for example) unwelcome and discriminated against. This isn't even theoretical, this is an argument that actually happens in the real world, just not in the bubble inhabited by Gerrand, apparently.
"I disapprove of what you say, but I will defend to the death your right to say it."
(And yes, I am aware he didn't say these exact words himself.)
If I am on e.g. a technical list or attend a conference, I'd expect discussions about the subject-matter and offbeat comments about gender, race, or whatever.
Apparently it's a phrase from a biography of Voltaire by Evelyn Beatrice Hall.
“Though all winds of doctrine were let loose to play upon the earth, so truth be in the field, we do injuriously by licensing and prohibiting to misdoubt her strength. Let her and falsehood grapple, who ever knew truth put to the worse, in a free and open encounter.”
You can still have schisms and nasty politics with a policy like this, since obviously the different sides of the discussion will value things unequally, but the goal is to at least maintain surface politeness and order so that small voices don't give up so quickly.
>Catholics are getting shouted down - that does happen(in an existence-proof sense), but it's not nearly as common
A catholic would point you to all those countries where catholics are getting killed daily for their opinion.
»"Do not deny me my belief, critique is tyranny" is a very common theme to defend all forms of discrimination
An equally common theme is "your opinion/behaviour is offensive and scandalous", but both are exactly the point I'm making, it should be possible to make statements critical to the system without being branded with a scarlett letter by some secret court working on anonymous tips.
>You can still have schisms and nasty politics with a policy like this
IMHO no, you can't, the Django CoC is too "feelings oriented", you can't objectively judge peoples feelings (especially on mailing lists and IRC) because it's internal unobservable state, besides I have learned that some people invented several terms [1] [2] [3] to redefine "surface politeness discussion" into harassment.
Furthermore it specifically says "In general, if someone asks you to stop, then stop" which mean that even if you are making an argument that does not violate the CoC simply defending it if someone asks you to stop is a violation. It's simply impossible to enforce such rule equitably without every argument becoming a race to who can shout "mom!" first.
[1] http://rationalwiki.org/wiki/Just_asking_questions [2] http://rationalwiki.org/wiki/Sealioning [3] http://rationalwiki.org/wiki/JAQing_off
The thing is that we are talking about a technical community. I don't see what an open display of support for or disapproval of gay marriage has to do with Go.
People subscribe to Go lists because they want to discuss technical aspects of a programming language. For other topics, there are other venues.
Yes, and for highlighting off-topic subjects, there is the simple moderator acronym "OT". A rigid rule book and enforcement policy has nothing to do with free speech. It's all about trying to balance the inequalities in the tech sector. Unfortunately, a rule book is not going to solve that problem. The cynic in me just thinks this a conference "feel-good" announcement planned as a result of Googlers feeling bad about the fact that they are a 83% male workforce.
If the real problem is going to be solved, it's got to be about encouraging and educating people from all genders and races to code. That starts much earlier than any engagement in online communities. If the output of schools and colleges of trained coders was balanced, all the horror stories of harassment and abuse would soon become history as the workforce also becomes balanced, in my opinion.
I strongly dislike the idea of self-appointed judiciaries. Mistakes happen. The nuances of behaviour of people with mental health issues is likely to get caught up in these rule books. That's why we have courts, to help deal with difficult cases. Vigilantes may well refer to the code of conduct for justification for statements of intent like this:
http://dave.cheney.net/2015/06/13/listen-up
I'm not comfortable with that.
"violations of this code outside these spaces may affect a person's ability to participate within them"
[1] - http://redd.it/3abyva
https://www.reddit.com/r/golang/comments/3abyva/a_code_of_co...
Regarding your [1], the GNOME code of conduct referenced therein explicitly says "There is no official enforcement of these principles, and this should not be interpreted like a legal document". So maybe that CoC is being applied contrary to its design there.
I wasn't arguing for formal verification, but you should notice that actual legislation is a lot less vague than the Django CoC.
>It follows that to work well it needs the people doing the interpretation (judges, committees, ombudsman, etc) to be competent, and be selected so that people can have faith in them.
And that's another problem with the Django CoC that I was mentioning, there's nothing there insuring that someone that's accused receives a due process, nor that all complaints are listened to equally.
https://www.djangoproject.com/conduct/enforcement-manual/ documents at length how the committee handling the violation reports is appointed, how they conduct their work, how their oversight works etc.
Then, https://www.djangoproject.com/conduct/reporting/) describes an appeal process: "Appealing: Only permanent resolutions (such as bans) may be appealed. To appeal a decision of the working group, contact the DSF Board at foundation@djangoproject.com with your appeal and the DSF board will review the case"
"Justice"
Or might not. Especially if either project CoC's in general or Project X's specifically are known for being interpreted and enforced capriciously.
Remember that there is still after the fact accountability, and that the system relies on the people in the WG being trusted community members and reasonable people.
BTW this is not far from how it works in the real world. Bob is not going to be able to litigate his side of the story and face his accusers in most situations where he is removed from premises for harassment or threats of violence. And people generally are fine with this.
Deleted comment 1 included "But I doubt I would waste time on coding as I’m sure you’ll just make an excuse to reject it, just as you’re making excuses instead of fixing this bug."
Deleted comment 2 included snippets like "except where they deliberately break it" and "but I’m sure it’s still their agenda to make it a dependency just because they want it to be".
As a happy user of Go, I usually find myself writing slightly more code than C#. Maybe it's because of the lack of generics or maybe it's because that I have 10x more experience in C#. To me, it's interesting to read this.
The problem with Java(lang) is the culture.
Instead of writing programs in a pragmatic way, Java devs feel the need to forcefully over architecture code bases, because there are afraid that a colleague looking at their code will not find it JEEish enough.
Obviously Go doesn't have the same culture since it doesn't force developers into writing classes everywhere. So it's easier to hack something quickly with a bunch of functions and variables, like in most dynamic languages.
You typically don't see the same patterns used in Dropwizard, Play and Vert.x style applications.
And the rationale behind was not out of peer pressure but just reflective of an era in software development where you were taught to abstract everything to make it easier to implement changes in the future. But that time has somewhat passed and even libraries like Spring moved to annotations over XML bindings.
Maybe 8 years ago. Other than Oracle itself the language, the libraries and the culture has changed rather substantially over the last few years.
> Instead of writing programs in a pragmatic way, Java devs feel the need to forcefully over architecture code bases, because there are afraid that a colleague looking at their code will not find it JEEish enough.
Much of the over-design in older Java has to do with ancient methodologies of writing massive specs and having review committees. It has nothing to do with not being JEEish or whatever abuse of keywords you want to make.
> Obviously Go doesn't have the same culture...
Actually I'm starting to see many many Java programmers use golang because many Java programmers are system-like programmers (middleware or whatever its called these days). I guess their behaviors will magical change right?
> So it's easier to hack something quickly with a bunch of functions and variables, like in most dynamic languages.
Well that is true but writing classes in Java is not exactly hard. If it helps you can think of the classes as modules or just files you put your code in. You don't have to write OOP in Java and some would argue most of Java is not OOP.
Except people mix Java culture with enterprise culture.
Any language has achieves Java like success at enterprise level will suffer the same pains.
I am old enough to have endured that culture in OOP Clipper, C (in-house framework), C++ (DCOM and CORBA everywhere), before Java was even a thing.
Don't be mistaken, if Go gets adopted by the typical enterprise companies, GoEE will be just around the corner.
> having to declare types everywhere hardly make a
> language more "verbose".
Of course it does?x := y // say y is of type int
// rather than in C/C++ & Java
int x = y;
So you just declare the type once, and don't have to repeatedly declare it
Linus said, "...I've literally had developers who were working on things that I didn't really like, but I didn't shut down early enough. They worked on it for a long time; they felt that it was ready, they submitted it to me, and I said "no this was horrible" because at that point I had to make a decision. And at least in one of those cases I had some other friends basically email me later and saying "the guy is suicidal"." http://opensource.stackexchange.com/questions/395/how-do-i-d...
I think you imply a CoC, and Russ's style needs no improving. If you must adopt a CoC why don't you assume people will behave badly and provide a workaround instead of relying on virtue.
For example, I have learned that when I am pressed for
time I tend to write fewer words, with the end result that
my emails seem not just hurried but blunt, impatient, even
dismissive. That's not how I feel, but it's how I can come
across, and that impression can be enough to make people
think twice about using or contributing to Go. I realized
I was doing this when some Go contributors sent me private
email to let me know. Now, when I am pressed for time, I
pay extra attention to what I'm writing, and I often write
more than I naturally would, to make sure I'm sending the
message I intend.
which might relate to your point of view.Smilies and pleasantries are fine, if they come up naturally. But why do people get slighted when someone replies to them with a straightforward – not rude, not crass, not sarcastic, just straightforward – answer?
I've caught myself getting slighted at people I know who reply to texts or messages in a direct way. Now that everyone uses smilies for personal communication, the direct to-the-point style feels cold and dismissive. But then I realize that they might be perfectly kind and pleasant people in reality. They just have a different text/message style.
https://groups.google.com/forum/#!topic/golang-nuts/A9mCgLwy...
I guess I shouldn't have presumed about Russ' reputation - but he definitely has a very negative reputation with me.
And not in the over-the-top, theatrical way Linus does it which is mostly style, you feel there's real sneer.
Always with the half-excuses for people with technical ability/track record. "Well he comes off as kind of rude, buut he kind of knows what he's doing so the arrogance is maybe warranted". Just goes to show that technical ability and dealing with people even in a technical setting are two very different things. I guess that is the reward for a technical track record? Being half-excused for lording it over other people?
Disclaimer: I know nothing about Cox' online personality. I'm just addressing how people react to rude (or whatever the intent is) technical people.
Well, I guess that's life.
If you can do somebody else cannot do, and they need you to do it, you get to dictate the terms and be rude.
Ideally we'd all like rainbows and kindness, but you know...
I wasn't making an argument initially, I was making an observation: "He's curt, maybe justifyingly so, but still...".
Then I further expanded upon that, based on the comment I got, that "that's how it is, if you're good at something you often get to dictate how you treat people who want it".
Wasn't meaning it to be an argument (to be met with counter arguments, to move goalposts, etc), just plain observation of how it is, as I see it, in both cases.
The comparison with Linus is interesting to me, since I've always interpreted Linus's rants as real venom, not just theatrical style. But I don't know Linus, so maybe I'm misreading the rants.
(What is 'friendliness' and 'unfriendliness' varies lots though, culturally.)
rsc wrote a lot of the Ms.
And the answer rsc gave was charmingly funny and helpful. Did you try following rsc's advice? I won't post a spoiler here; It's awesome and way better than "hey, we use ^ instead of ~ for that".
The problem so often is that people who can't keep up and don't understand how good the answers are, blame the experts for going too fast, and mistake "being too busy to handhold 1000s of people" for "being a jerk".
Would you go to Yankee Stadium and stop Derek Jeter on the way into work, just to ask him "Hey, does Major League Baseball use metal bats, or wooden bats?"
A really helpful answer in this case would include the story behind why the Go creators decided to use a different operator. Linking to the entire spec (not just the relevant section on arithmetic operators) is not friendly, patient or welcoming.
Rob Pike is pretty busy too, but he appears to be much friendlier in his responses (even to newbie questions).
I'll probe once more, since you totally ignored the question: did you run that test program through the compiler? The result is evidence of magnitudes more friendliness than anything that anyone could possibly write in a comment.
Imagine asking somebody if the sky is blue and then instead of getting a simple "Yes" answer you get a piece of source code you need to compile and run to see that "Yes".
Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime.
Compiling
package main
func main() {
println(~5)
}
produces main.go:4: the bitwise complement operator is ^
(http://play.golang.org/p/dFoaHVNOJw).I am not sure why my 2010 email didn't include a direct link to the Go program on play.golang.org. I suspect that play.golang.org didn't yet support "sharing" at the time, but I don't remember.
I believe the point of the link to the spec was to make clear that the compiler implementation is not the only source for answers, that the operator is also documented.
Thanks for pointing this out. Both parts of the response were intended in the spirit of "let me show you how" and not "go figure it out yourself". I will try to make that clearer next time.
The intent ("let me show you how") is definitely good, but it was lost in delivery. It turned out to be like a joke without a setup. Without the missing context it just looks like a non-answer to a simple question.
Although I suppose it is possible it has changed, his behavior over the 1990s and 2000s on the mailing list for Plan 9 was consistently polite and kindly. He was much more ready than most to help with a bug fix or with information.
The reason I continued to read that mailing list for all those years is how much I was learning from his posts (and to a lesser extent those of a few other participants).
The same readiness to help and politeness was on display when as a complete stranger I wrote to him a few years ago.
For me, CoC is where programming meets politics. Whom gained benefit from their current position is likely to impose those rules to protect their now interest.
Pretty much there is a soul behind each language, Ricky Hicky for Clojure, Guido van Rossum for Python, Matz for Ruby, and Rob Pike for Go. Those people are not insecure, and I never felt them to be so aggressive.