As an outsider, my guess is not "bad contributors" or "diversity" like sibling posters but an increasing perception that Go is a Google language and not a community language with how events have played out in scenarios like the package management work where a replacement for what the community was doing came seemingly out of nowhere despite the community trying to work with the core team
Note: I could have facts wrong but this is the general impression left which is just as important for respondents on this survey item.
It is 100% a Google language. Step 0 of their contributor guidelines is to use a Google product (ie a Google account) for authorship of your commits[1]. It's insane to me that this is required for contribution to the language's development.
Google and the core Golang team are getting increasing political and allowing it to leak into the language / infrastructure of the language such a running banner ads for political causes on the main the docs site, https://golang.org/doc. It's not surprising that this makes people feel less welcome.
A big part of why I felt unwelcome was their unwavering commitment to American political activism. I don't live there. Why do I need to hear about some countries politics in my favorite programming language.
If a few-pixel-high banner at the top of the documentation website is ALL it takes for you to get turned off from programming, maybe this isn't for you? Everything in the world is political. If you can't handle that, maybe you need to fix some other issues before tackling programming.
Sure! Feel free to expand on it I would be interested in hearing what you have to say. I hope it's at-least nuanced enough to understand that people can be turned away from a programing language's community when it starts to focus on political movements and other aspects unrelated to the language itself even if they don't disagree?
That's not even accounting for how perhaps the focus exclusively on American issues could leave the the rest of the world feeling less welcome?
The protests in America don’t make much sense as it is—obviously we would expect police deaths to mirror trends in crime, socio-economic status, etc. But in countries like the U.K. where one third of their police killings in a whole year are a terrorist who was in the middle of a stabbing spree? That’s just ideological fashion.
> ...obviously we would expect police deaths to mirror trends in crime, socio-economic status...
If you look at the data in aggragate, I believe you'll find that there's a disparity even when controlling for factors like that.
> But in countries like the U.K. where one third of their police killings in a whole year are a terrorist who was in the middle of a stabbing spree? That’s just ideological fashion.
British police don't carry firearms in the general case so obviously police deaths aren't a large issue for British BLM, but there's still very much a racial disparity in justice system encounters that still exists despite controlling for the kinds of factors you listed previously. Different sentences for the same crime kind of stuff.
> If you look at the data in aggragate, I believe you'll find that there's a disparity even when controlling for factors like that.
I’m almost certain that this isn’t the case. I think the crime rate alone accounts for the whole disparity and then some. I’ll dig up sources when I have more time. My best steel man is that police are profiling blacks in their killings; blacks do commit more crimes, but whether or not a particular black person commits crimes may not feature strongly in whether or not he is likely to be killed by police. In any case, the more important detail is that we didn’t even talk about it. Anyone who suggested as much was immediately dismissed as a racist; the media never even entertained the question.
> British police don't carry firearms in the general case so obviously police deaths aren't a large issue for British BLM, but there's still very much a racial disparity in justice system encounters that still exists despite controlling for the kinds of factors you listed previously. Different sentences for the same crime kind of stuff.
Perhaps, but it’s very strange to me that the U.K. would respond to subtler forms of alleged discrimination the similarly to how the US responded to graphic videos of black men being killed by police. I won’t argue the point since it’s all speculation either way.
Look at this thread, a perfect example:
We’re now not talking about the go developer survey, lost focus on the topic. Why? I want tech, enough social problems everywhere else I look.
I agree with you, but we got here because the go developers plastered their controversial political views all over their tech site and people are remarking that this might be part of the reason why people aren’t (per the survey) feeling as welcome in the community.
> The protests in America don’t make much sense as it is
It makes sense to millions of Americans, including those who are not directly impacted by it.
If by "protest" you mean the violence that has sprouted up at these events, then no, that makes no sense at all for the cause itself. But it does make perfect sense for those who want to delegitimize it, e.g., https://www.startribune.com/police-umbrella-man-was-a-white-...
No, I mean the cause and it’s rationale. The “disparity thus discrimination” logic with no mind for other factors. The absolute refusal of anyone to look at any of the equally heinous murders of white Americans by police. I don’t want to delegitimize BLM; I don’t know for fact that the BLM folks are wrong and I remain open minded, but I’m disgusted by so much of how it played out—the dodgy rhetoric, the agitators, the divisiveness, the racial dogma, the violence, and much more. There are some good things that have come out of it—90% of Americans favor police reforms; it raised awareness for that, although we’ll see if it manifests in (substantial, non-symbolic) policy. Anyway, I hope the bad is all in the past and we can move forward.
Wait, so you don't disagree with the BLM movement but you think its in poor taste to include it as a sign of support? Being that the tech industry has historically been dominated by white men, wouldn't you think that any PoC visitors might feel more welcome?
Why would a non-US visitor feel unwelcome seeing that? Why w
And as far as it being a political message, that's also a matter of branding. It's been actively demonized by one particular party, whereas most of its supporters likely consider it to be apolitical -- simply about social justice.
> Why would a non-US visitor feel unwelcome seeing that?
As a non-US visitor with some knowledge of history I am extremely put off by the banner supporting an extremist communist organization, like it is nothing. Just have a look at their original manifesto that is now removed from their website (wayback machine has it).
Regardless of your personal opinions and/or biases, it is still a political banner containing the name of a political advocacy group on a software development tool project page with what I'm sure is a very diverse set of users.
Some folks actively avoid politics, and seeing it at Go doesn't increase my confidence in the judgement of the folks leading Go.
The "you're actively with us, otherwise you're against us" mindset must learn nuance. Not everybody has to be political all of the time.
> Not everybody has to be political all of the time.
Of course, modern critical theory would tell you that it's only by the result of privilege that one can afford to remain apolitical. If you're not actively antiracist, you're racist, and so on.
This is probably a rhetorical question, anyway if the feeling of being less welcomed comes from how likely the devs are to accept random or poorly thought-out proposals, I don’t think there’s any problem at all. I say, do not welcome them!
The core Go team is made of extremely competent and professional engineers, and I expect successful language change proposals or pull requests to be on par with that. Otherwise what are we even talking about?
I’d wish more technical projects would focus on competent and professional engineers again. Instead, we see calls for more diversity everywhere, including this very survey. I wonder what would be the advantage of having people from different ethnical backgrounds over having people from different tech backgrounds...
The idea of focusing diversity isn't at odds with focusing on competence. The premise is that certain groups of people who do not fit the stereotype of a male, nerdy, white or asian programmer are often assumed to be less technically competent because of their appearance. As an Asian male, I can't tell you how often people assume I'm smart just by appearance alone. This leads to a hiring process that does _worse_ at hiring component engineers. Even if they are hired, the company culture might not be inclusive enough to retain them - e.g. lots of women leave the industry for that reason. This also leads to a _loss_ of talent.
It's true that some companies might do diversity poorly and hire solely to hit diversity numbers. I don't personally feel good about that. However, in practice I've seen companies that focus on diversity adopt the practice of putting more effort into reaching out to diverse candidates, but have the exact same hiring process & hiring bar applied to them. Those reasonable companies don't make the news -- after all, the unreasonable stories tend to be the ones that get attention.
Again, it's not to say that your concern never happens. However, framing diversity as if it was fundamentally at odds with competence, especially in a completely unrelated thread about a programming language, does a disservice to both diversity _and_ competence.
It seems like we might try to measure and confirm that the problem exists in the first place and to what extent. Then we might try something and measure again to see if it helped or hurt.
Black Lives Matter is just the name for a political movement and organization aligned with Critical Social Justice and specifically Critical Race Theory which actually dispenses with the idea of meritocracy as a worthwhile goal (see postmeritocracy.org for an explanation of this view; the author of that site is Coraline Ada Ehmke, author of the Contributor Covenant, which has been adopted by many projects including Golang)
The diversity you're talking about uses the definition everyone is familiar with from English.
The diversity Black Lives Matter is talking about is a technical term with the definition coming from Critical Race Theory, which defines whites as the least diverse categorically due to historically injustices against BIPOC folx.
> The idea of focusing diversity isn't at odds with focusing on competence
It is explicitly such, as stated by the movement you defend.
> The diversity you're talking about uses the definition everyone is familiar with from English.
> The diversity Black Lives Matter is talking about is a technical term with the definition coming from Critical Race Theory, which defines whites as the least diverse categorically due to historically injustices against BIPOC folx.
Can you provide a citation for that from a CRT source, not a political opponent to CRT?
> > The idea of focusing diversity isn't at odds with focusing on competence
> It is explicitly such, as stated by the movement you defend.
I think you're misunderstanding the major points of Ehmke and others. It's not that we should give up on competency being a driving factor, but instead that the set of organizational tools grouped together as "meritocracy" don't actually make competency the final end result because of the biases those tools impart. "Not a great culture fit" and all that.
Competence and professionalism are not quantifiable; diversity is. Hence, when a $manager wants to improve $project (for a raise), they will invariably try to push for diversity.
This is in the context of open-source projects where identity does not matter (and is often not known).
Here's a different (and potentially offensive, please put away the pitchforks) perspective. Recently at work, I was prompted by a coworker to look at a code review page for some go code they wrote. I don't normally review go code at work, so something that struck me was that the code review comments left by a go developer seemed quite a bit more nitpicky than code reviews I'm used to seeing as a non-go developer working with non-go languages. A lot of it was minor stuff like styleguide line items (isn't that sort of stuff what go fmt and go vet are for?)
Golang is an extremely simple language (a good thing, IMHO!), but that means two things:
1) a simple language may lack safety features (e.g. anyone can ignore an err or forget to check for nil pointers), which lead to the need to compensate in other ways, which leads to:
2) the bikeshedding bar is very low in simple languages, and it can lead to institutionalizing opinions in the form of styleguide gospels or other types of "improvements" (think overuse of patterns in Java, another relatively simple language), to the point where the institutional rules put off newcomers who were expecting a breath of fresh air but instead find an "old boys club" (in the sense that they don't feel they have leverage to discuss whatever rules have been set).
I also see this phenomenon in other areas, for example, in Javascript, eslint/prettier are supposed to curb bikeshedding, yet there's an awkward dynamic when a new employee wants a new rule, and what follows is 2 hours of bikeshedding with the old guard.
For me at least, it's because the size of both the community and the official team expanded hugely in the last few years. I don't feel like they need or want outside help anymore.
Strangely, sometime last year I commented on HN about a contribution fiasco, and a bunch of "community" jumped on me, downvoted every response to their refusals to believe it. I've mostly abandoned Go at this point, partly due to the language, very much due to the "community". (Posted from a different account - to save you the time of looking).
if you ask a question in r/reddit (I know it's not officially part of the community) you get answers telling you to google stuff or to "just" check the docs where someone writes a package name.
I lurk on /r/golang and to be fair there are a lot of crappy low effort questions, so yeah. I wouldn't consider these answers as non inclusive, but I understand that the people asking these crappy questions could feel not included.
> The most common area by far was web development (68%)
68% is a lot and I hope it lead to have more mature web libraries in the future. I'm comparing it to other languages Java(e.g. Spring), PHP(e.g. Laravel & Symfony), Ruby(e.g. Rails), NodeJS(e.g. NestJS & NextJS) and I think Go community has a long way to go.
We had a discussion recently about building an internal web app and I had no chance to even defend Spring against Laravel yet alone Golang (My current team mainly uses Spring). It's just crazy how much scaffolding they have in place for web development. You get clean authentication with email verification and 2FA, and profile, team and roles management running in 5 minutes. And their collection library has most if not all of the Java Stream features. Then you spend another 5 minutes to add a scaffolding for building administration panels. And they are together just 3 months of development work if you ask me.
So as much as I love the idea of building your own stuff, I can't defend it when it comes to raw components for web development like authentication and admins panels.
It's interesting that 17% are not satisfied with editor support for Go. The biggest editor feature requests were for code completion and navigating code.
Rather than editors being at fault, could these indicate that Go is a bit too verbose? I wonder if generic functions will affect this. I rarely write Go, but I can imagine autocompletion macros for `err != ...` could help.
> It's interesting that 17% are not satisfied with editor support for Go.
GoLand does a better job and is more stable and reliable than VSCode here, even having to restart the daemon from time to time for VSCode. Of course it could also be what you said, I can only write for myself. I hope they will be able to introduce stability and reliability of the former.
I have had issues with the recent go plugin for VSCode too. The new version is unreliable and the language server needs a reboot fairly often. It is a real pain because when it breaks it often shows a compile error that you end up scratching your head over and a simple restart of the editor will often fix it. It definitely wastes time and needs addressing soon.
> Rather than editors being at fault, could these indicate that Go is a bit too verbose?
No, I think it’s just that the Go language server, last I used it, had lots of trouble dealing with completion for code that lives in another module. GoLand did much better in this regard, but I suspect it’s not used nearly as much as VSCode, hence the response.
I think code completion is for “I want a list of properties or methods available for this function” and not “I don’t want to have to type the next few characters”.
My code completion is actually quite decent, and my editor is vim. Under the hood, gopls takes care of the heavy lifting. It can be memory hungry (I note it taking up half my freaking ram on my 64G machine, though the codebase it's working with is quite large)
e followed by down and enter produces the following for me, its downright essential snippet code to be on a single character entry for golang:
if err != nil {
return |, err
}
I can't believe how much I need this, on the one hand I love how error handling is explicit, but also the amount of times I handle an error and just pass it means the above code is used a lot.
I just want to see f(g(x), h(y)). I’m hoping for an editor that both generates and hides the twelve lines of noise that call g, handle an error, call h, handle an error, call f, and handle an error. I don’t want to write or review that for the same reason that stack frame setup just happens in code that nobody writes or reviews.
We could generate Go from some other language, but I can’t assume any team will buy into that.
I feel this way when writing business logic RPC services, because returning the error to the caller is almost always what you want to do.
Recently I wrote something very different, more low level. Rather than handlers it had a number of goroutines looping, selecting, and sending to channels. In this case explicit errors were a lot more useful. If it had been a language with exceptions and I had forgotten a try/catch, it could have killed one of my loops. Not good!
This is the kind of use case that fits well for Go. I think it’s a systems glue language that just happens to be friendly enough to invite abuse in mundane backend business logic tasks. But using it that way is setting yourself up for frustration.
I agree it this needs to happen. Right now about all you can do is snippet your way through it, it is an incredibly common scenario that go handles really poorly.
Java's Checked Exceptions was less invasive and API polluting than this is because at least it didn't get in the way of these types of calls where the error should just shortcut. More importantly in Java you could hide the errors behind a generic RuntimeException if from that point up there was nothing anything could do but generically deal with the error. Panic/Recover is similar but very discouraged for this sort of usage pattern.
Sublime text used to have a pretty decent Go plugin, but the repository looks abandoned. VSCode has an ok plugin I'm not really a big fan of the editor itself. Outside of that, there's the Jetbrains Goland editor which looks decent but I'm not going to pay for.
Desktop Applications 8%. There is a reason for that, the GUI frameworks up until recently have been quite poor. I had been using Lorca as a Chrome wrapper that gave me a HTML interface but alas some users ran into weird bugs with it, its just not reliable and webview which utilises the native browser (edge/GTK/Safari) is even less reliable. I have been trying out Fyne recently and that seems stable and functional all be it with the same issues that Swing has with Java but also the same benefits.
Go could do with a decent GUI framework, I think a lot of people would like something that isn't Visual Studio C#/C++ for this purpose but its not Go (or rust) at this point.
All I want for Christmas is a way to get decent test coverage on a method with several “if err != nil { return err }” branches that isn’t excruciating.
Go is good. Based on decades long research and experiments of Rob Pike and others.
It's interesting to read comments by employees of american corporations that act like members of a national-socialist organization(of workers).
There are people from Europe(not western) that became almost suicidal after working in those environments in US. Main principles of some organizations are pathological lying and suppression of free speech in any forms.
That banner is like a test of obedience. Anyone who questions it - is problematic, "toxic". It doesn't matter what that banner contains.
While you read that blog entry, please especially enjoy the different bar lengths for identical percentages. One would guess that the SVGs were generated with Go. /s
I only read articles if the comments merit it. I've learned 100 times more from the comments I'd say. I'd guess I read 10 comment threads to ever linked article.
The articles are a semi-random selection of what is on the internet. The comments are from the HN community, which by being part of, is almost self-selecting interesting and stimulating content for yourself.
I wonder why that is.