15 ms·
Russ Cox’s response to “Go Is Not a Community Driven Project”
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- SpaceManNabs 7y agoI don't use Go much to have an actual opinion on this. I actually like Go because I built my data science blog on top of it (learned a bit of CSS and html along the way). But I think the final paragraph of this post only serves to highlight an issue brought up in the original post by Mr. Siebenmann. The rebuttal says: "There are certainly senses in which Go is Google's language: it was created at Google, Google continues to fund most of the development, and a few people at Google are the final deciders about the language itself." I understand that the language can be owned by Google and the community, but the original take was: "You could ask if Go is Google's language or the Go core team's language, since Go's direction is set and controlled by that small core team. However, at the moment I believe that most or all of the active Go core team is employed by Google, making the distinction impossibly to determine in practice (at least from outside Google). In practice we'll only get a chance to find out who Go really belongs to if Go core team members start leaving Google and try to remain active in determining Go's direction." Seems like the rebuttal's concluding statement doesn't really address the biggest concerns. The rebuttal continues to say that the development team tries to work with the community when possible. The original discussion here on HackerNews brought up examples where that is not always the case. I don't think a BDFL or a team acting as BDFL is a bad thing inherently, but I don't think this rebuttal really talks to the issues. I once wanted to build a bunch of ML tools for Golang. Like coding up UMAP or other dimensionality reduction techniques, introducing some variational techniques, etc. But the package manager situation at the time (I thought of doing this 2 years ago) scared me off! edit: I thought about this and did form a slight opinion on this article only. If we were to change the opening and concluding paragraph only (and retain the rest of the contents), it should have been titled "Go is Google's Language, and that is ok!" And then added a paragraph on how Google possibly abandoning the project wouldn't cripple it.
- Lowkeyloki 7y agoDoesn't seem like much of a rebuttal at all, does it?
- ummonk 7y agoIn fairness, it didn’t really claim to rebut the post, just add further context to it.
- xbmcuser 7y agoHe does not need to rebut anyway go is language created by googlers for a need they had and they open sourced it. If it does not meets anyones development requirements they can use another language or fork it and do the changes themselves. There are so many community driven open source projects one of the most used is Kodi and if you have spent any time on it's repo you can see that the maintainers set a hardline on what their vision is and what code they are willing to accept. Funnily enough an argument is going on at the moment where Kodi maintainers want to remove all hardware specific hacks in future versions and some dev opposed to it. What do you think will happen?
- Lowkeyloki 7y agoThe original title on HN used the word "rebuttal". It appears to have been changed.
- geodel 7y agoFrom the response: "..I've noticed that people often use the term “the Go community” without being particularly clear about what they mean. To me, the Go community is all Go users, which is at least a million people at this point. As such, it's at the very least imprecise to say things like “the Go community wants (or did) X.” I think this is important because some outspoken members seems to have tendency to claim that they represent whole community and they must be heard and responded to even at the cost of quiet community members.
- hayd 7y ago> at least a million people at this point. This seems a little implausible to me, can this really be the case? Edit: Oh, I see the reference in the post https://research.swtch.com/gophercount https://research.swtch.com/gophercount (I'm still skeptical!)
- badamp 7y agoNo reason to be skeptical, that analysis is pure shit and dismissible on its face. The minor issue is the quantifying of developers. The methodology for the 15-20 million figure isn’t clear, but it at least passes some basic sniff test. What’s completely bullshit is using stackoverflow surveys. There is no reason to believe the respondents of that survey are an unbiased cross section of the 20 million and many reasons to believe they aren’t. I would totally expect the stackoverflow social 2.0 tech hipster webshit crowd that would fill out that dumb survey to be more likely to use Go. The same with oreilly surveys. Old grizzled grey beards aren’t as likely to fill out publisher surveys on old stable tech. Also, answering that you have “used” go is not the same as being a regular developer (as noted by one of the commenters there... assembly is more “popular” than Go).
- icebraining 7y agoWell, as a "stackoverflow social 2.0 tech hipster webshit" (I answered the survey), I fully agree with you that the methodology is beyond suspect, you just can't take those numbers and apply some fudge factor from the top of your head and pretend the result has any credibility. OTOH, regarding > answering that you have “used” go is not the same as being a regular developer The question they ask in the survey is: "Which of the following programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year?", so it's more than just having "used" it.
- rmrfrmrf 7y agoNot sure what to make of this. All of the points the author makes are obvious; of course a project originated at Google would have a majority-Google membership. Of course anyone is free to fork Go. Of course the code can be considered FOSS. Of course execs at Google couldn't care less about spec details. None of those things disprove the point that Go is not a community-driven project. I think I've mentioned this a while back, but one only needs to look to the Guava library team to see what Google's general position is on community contribution: contributors need not apply. The maintainers there blogged at-length about the inferiority of non-Googlers and the tedium of dealing with the unwashed masses -- typical NIH syndrome -- this is the same philosophy that the Go team is influenced by, perhaps with only a less hostile tone. The difference between an OpenJDK and an OpenGo project, in practice, would be that the two would be completely unrelated. Go core would go on ignoring community progress and, at best, Google would sue for the project to change the name and force a hard fork.
- DannyBee 7y ago"I think I've mentioned this a while back, but one only needs to look to the Guava library team to see what Google's general position is on community contribution:" Can you explain why it makes sense to generalize a company of 50k developers, which has released 4000+ open source projects, on the basis of precisely 1 of them? Why doesn't it make sense that it will end up with a variety of projects with a variety of models? Especially given that is true of the world writ large? I simply do not understand this fixation with trying to rigidly pigeonhole Google on open source.
- fellellor 7y agoThe idea is to embarrass Google as an organization into changing their culture or at least the optics surrounding that culture.
- onion2k 7y agoI think the point rmrfrmrf is making is that Guava is a typical example of Google's attitudes towards the two-way relationship of open source. Google developers (and many other big software companies) are more than happy to open their code and promote it as something that the community should adopt, but seem rigidly dismissive of any code contributions to the project from outside. That may not be the case for every Google project but it does feel like it's a common one to me. What Google projects would make good counterpoints by demonstrate a welcoming attitude to external contributions?
- nixpulvis 7y agoThe fact I needed to log into google to view this seems ironic either way.
- chii 7y agoYou hardly need to login. Stop spreading FUD!
- nixpulvis 7y agoIt sure as hell asked me to log in...
- kabwj 7y agoIt didn’t ask me to log in but I believe you because I’ve had google groups ask me to log in to read regular posts before.
- dylz 7y agoIf you have any G cookies set at all you will be forced to log in
- chii 7y agoIf you have any Google cookies , you're automatically logged in, not forced to login via a UI redirect.
- marcinzm 7y agoYou do. But only, apparently, if you have any have cookies on your machines from any previous google login.
- crispinb 7y agoA shout out for Firefox multi-account containers here. Set up google-specific containers for any google properties you do want to log into, leaving your main container uncontaminated with google cookies.
- sheeshkebab 7y agoGoogle should at least relicense Go under Apache 2 to clarify the uncertainty.
- GeertJohan 7y agoWhat's wrong with BSD?
- GeertJohan 7y agoGoogle can't relicense Go. It would need approval of all copyrightholders, a list of hundreds of people and companies, of which Google is just one.
- Carpetsmoker 7y agoI believe this is covered by the CLA: https://cla.developers.google.com/about/google-individual https://cla.developers.google.com/about/google-individual > You hereby grant to Google and to recipients of software distributed by Google a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.
- merlincorey 7y agoIt seems the bulk of the rebuttal is a reposting of Russ' blog post from 2015 "Go, Open Source, Community" found here: https://blog.golang.org/open-source https://blog.golang.org/open-source I was hoping that this would address the package management fiasco, but it did not.
- zahreeley 7y agoBoring Lang
- duxup 7y agoIs the concern here that if Google chooses to move on from Go that much or all of the leadership might too?
- icholy 7y agoNah, it's just the "we want generics now" crowd finding a new way to whine.
- mcguire 7y agoI don't use Go, I think rsc's module system is significantly better than the community version (although bad in its own way), and I find your broad dismissal... unappealing. Can we keep the discussion substantive?
- eternalban 7y agoI am curious why you even care about this conversation if you don't use Go. I think OP has a point that perhaps could have been expressed more gracefully.
- yellowapple 7y agoMaybe this is a reason why this person doesn't use Go? That'd be good enough reason to care, I'd reckon.
- geezerjay 7y agoGoogle's blanket dismissal of any criticism of Go's GOPATH design screwup pushed people away from adopting Go.
- eternalban 7y agoBe serious.
- mcguire 7y ago
- gerbilly 7y agoIf it’s so community driven, then why does this issue resonate so much? It seems like we will never hear the end of the apologias about how open Go is. To me that betrays that it’s exactly the opposite. I use Go, it’s useful, but i do so with a bad taste in my mouth: like someone’s stubborn opinions are being forced upon me.
- icholy 7y agoNothing is being forced upon anyone.
- gerbilly 7y agoExcept the sneering condescension of the guys behind Go when we make reasonable requests and critiques.
- Carpetsmoker 7y agoSo it's just sour grapes for not having your favourite feature implemented? Okay, fair enough ... but Go was always designed to be a small language with a limited set of features. Many reasonable requests may very well be reasonable on their own, but don't fit with the design aesthetics. It's like trying to add Common Lisp features to Scheme: that might be considered reasonable by some, but it doesn't really fit with Scheme's design. They kind of tried with R6RS and it was massively controversial, and many Scheme implementations stuck with R5RS. This is the part that so many people don't seem to understand. They confuse "trying to maintain Go's minimalist design aesthetics" with "not open" and "unwilling to listen". Those are not the same things! Some of the most frequently quoted examples all include things that have either been implemented, or at least seriously considered: monotonic clock, package management, generics (not implemented but Go Core team proposals go back to at least 2010). Arguably, some things took rather long, but again, Go is a small language and changes are discussed and considered for longer than most others. Many consider this good, as it provides a stable working environment to "get stuff done", which is the entire point of Go. It's also not clear to me that exactly "community-driven" means? The entire community voting on all proposals? Accepting a proposal as long as a subgroup is loud enough? Very few projects – if any – operate like that. There is always a comparatively small group of core developers who, in the end, get to decide.
- tptacek 7y agoI 100% believe everything Russ Cox says here and don't think it will make a whit of difference on HN and Reddit. Keeping as constant Go's opinionated (for better/worse) management philosophy, I don't think there's anything the Go team can say to put this criticism to bed. It's simple: Rails can be "omakase" because Basecamp is a tiny company, and Go can't be (without gripes) because Google is a big company. Hell, it wasn't even clear a few weeks ago whether Clojure was allowed to gripe-free "omakase" status, and hardly anyone on HN has even heard of Rich Hickey's company. Since, short of drastically changing how the project is managed --- something I don't think many Go users have an appetite for --- there's nothing they can do rhetorically to shut the argument down, I think it's best ignored. If you don't want to use a project affiliated with Google, don't code in Go. Similarly, if you want to have large solo impact on core features of a language platform, like package management, set your sites somewhere other than Go, where fairly intensive gatekeeping to that kind of stuff is widely considered a feature, not a bug.
- atombender 7y agoI'd wager that nobody would complain if Google donated Go to an open organization such as CNCF [1]. The CNCF is a good fit because it already hosts the world's most prominent Go projects, including Kubernetes and Prometheus. While Google is certainly a big bish in that pond, there are plenty of other big fish to balance them out, including Cisco, Red Hat/CoreOS, Github, IBM, Intel and Docker. Or invent a new organization. Call it "the Go Foundation". Make sure it's independent and has the bylaws and administrative structure to prove it. It's worked out pretty well for Python [2]. [1] https://www.cncf.io/ https://www.cncf.io/ [2] https://www.python.org/psf-landing/ https://www.python.org/psf-landing/
- zaphirplane 7y agoI kind of get what you (and the articles) are driving at. Who will be the people that run it under that umbrella? You need some community buy in and corporate buy in. Who will run it? Activists ? You want the top talent working in/on go to be the people that run it. Now if GvR (python) or equivalent was contributing to go and he is hey I’m an awesome developer and an awesome language designer what gives with side lining me. That would be a point. But now most top go talent that are working on the language are at google Just like with k8s google may create a foundation for it or donate to one of the existing one when there is diversity in top contributors. I assume hope. Perhaps this activism is early
- nullwasamistake 7y agoGoogle does with all corporate sponsored projects. Most non-Google commiters just submitted simple bug fixes, most or all core maintainers are Google employees. It's this way with every Google OSS project I know of. Guava, Angular, AMP, Chrome, Android, Tensorflow, gRPC. Sometimes they even de-facto take over existing projects, like Square's Dagger DI. Google has no open source governance model unlike Apache, the chaos that is Linux or rust, or even Java's JCP. Since a fork is so expensive to maintain over time, many of these projects are open source only in name. Google invests enough money to keep anyone from forking. Pennies for them compared to the huge marketshare they get for having massive "safe" OSS projects that companies won't worry about adopting.
- brudgers 7y agoI don't know what "a community driven project" means because it doesn't use technical terms. The established technical concepts are stakeholders, consensus, and standardization. Go has clearly delineated stakeholders. These are few relative to Go's broader user base. Not being stakeholders, the broader user base is excluded from Go's consensus process. Go's stakeholders do not appear to value standardization of the language. None of this is inherently bad or good.
- hu3 7y ago> Go's stakeholders do not appear to value standardization of the language This seems rather misinformed. Go has a spec https://golang.org/ref/spec https://golang.org/ref/spec and at least 2 alternative compilers in the form of gccgo and GopherJS. I'd love to hear where do you base the notion that Go's stakeholders do not appear to value standardization of the language.
- brudgers 7y agoSorry for not being clear. I used "standardization" in its established technical sense. In general technical use, standards and specifications are different. Standards are technical documents published by an independent standards organization. For example ISO in the case of the C programming language and ECMA in the case of ECMAscript (i.e. Javascript). Standards (in conventional use) have formal processes for establishing stakeholders, submitting proposed changes, acting on proposed changes, and publishing changes to the standard. Formal processes are not an inherent property of specifications. The Go specification could change in surprising ways tonight. Though it probably won't. The process for changing the Go specification can also change. Specifications are short lived. Standards are 'forever'. Fortran 77 is still Fortran 77 because of X3.9-1978. It is common for specifications to incorporate standards by reference. For example a specification might include "the program should generate valid XHTML 1.1." The standards body W3C provides a process for determining conformance with the standard https://validator.w3.org/ https://validator.w3.org/. T
- dumpsterdiver 7y agoThis brings to mind an excerpt from the movie 'The Aviator (2004)': Senator: "Mr. Mayer works for you, does he not?" Mr. Hughes: "He does." Senator: "And what is his official title?" Mr. Hughes: "Well I don't exactly know, Senator. A lot of people work for me." Senator: "Explain why your press agent would pay out $170,000 to representatives of the United States Air Force." Mr. Hughes: "Well I don't know, I suppose you'd have to ask him, Senator." Senator: "Well would you produce him?" Mr. Hughes: "Produce him?" Senator: "Will you cause him to appear?" Mr. Hughes: "Senator, you had John Mayer on the stand for three days last week." Senator: "Well be that as it may, we would like him to reappear. Would you ask him to return?" Mr. Hughes: (long pause) "No, I don't think I will." Senator: "Will you try to have him appear?" Mr. Hughes: "No, I don't think I'll try." Senator: "You don't think you'll try..." Mr. Hughes: "No... I don't think so." In other words, go fork yourself, Senator.
- Lazare 7y agoHis comments are fine, but don't engage with any of the criticism or concrete points others have made. The "Go Is Not a Community Driven Project" post really dug into detail how, in a specific case, Go did not behave as a community driven project, and it was made very clear that Go was Google's language, not the communities. Responding with, in essence, "but we love the community!" is great, and probably true, but...unless it's followed up by "...and that's why we feel so badly about the previous events, and have made these specific changes" (or at the minimum a rebuttal of the specific criticisms), it doesn't really....mean anything? Keep in mind, the closest we've got to introspection from Cox about the modules issue was a "I'm sorry everyone else is upset, I must have not explained things well enough" non-apology. Which is fine! The Go team doesn't need to apologise for running their language development process however they see fit...but it does underscore the issue. Fundamentally, a decent chunk of the Go community thinks that the modules process was fundamentally broken, and the Go team thinks the modules process was fundamentally fine. I would interpret the subtext of Cox's post as "we really wish the community would be fine with the process". No doubt. Finally, there's something a bit patronising about this: > I spent a while trying to work out what I want to say about the general theme of Go and open source, but in the end I realized that my talk at Gophercon 2015 is a better articulation of what open source means for Go, and what Google's role is, than any email I can write in a few hours today. You can read the blog post version, “Go, Open Source, Community,” at https://blog.golang.org/open-source https://blog.golang.org/open-source, and I am including a copy below. I reread it this morning, and I still believe everything I said then. The current discussion is about events after 2015, by people who are well aware of that talk. If people are questioning how the Go team is interacting with the community even after that talk, then maybe it isn't sufficient, and you need to do more than just tell everyone to read it again?
- hermitdev 7y agoIt seems to me, as an outside observer, that golang is OSS. In that "hey, here's the code, you're welcome to tinker with it and all," but we're not accepting community contributions (or community contributions come under such heavy internal to Google scrutiny, they're unlikely to be accepted upstream, which discourages anyone from attempting). Again, outside observer as a non golang user, but this is my impression. Any non-Google's contributing care to share experiences. This perceived (on my part) hostility to the non Google user community definitely keeps me from even taking a look at it. I use C++, C# and Python professionally. I'd potentially give Rust a go if I had time to learn it (my job currently wouldn't allow it, as we're mainly a C# shop, only now branching into Python - few of the main reasons I was hired was business domain knowledge and +15 years experience in both C# and Python). My 3 main languages all have active engagement with their user community and 2 of the 3 aren't controlled by a single corporation. C# is definitely driven by MS, bit they are actively engaged with their development community and listen to feedback and accept PRs for .Net Core.
- deleted 7y ago[deleted]
- didibus 7y agoI think one interesting aspect is to think what would happen if Ken Thompson and Rob Pike and the other original creators and active maintainers left Google? And say, they still wanted to lead the project? Even though they no longer work? Could they? Or would Google appoint new people, and maybe Go would lose its magic? I guess that's the difference between run by one or a few BDFLs and run by Google?
- slimsag 7y agoI am pretty sure (but not completely positive) that Ken and Rob don't really do much with Go these days. They have since moved on to other projects for the most part.
- gnu8 7y agoAfter all the drama surrounding the bureaucratic paralysis and legal encumberment of Java, I wouldn't touch another corporate language with a ten foot pole. Let Go Die.
- atombender 7y agoAs an aside, since the discussion mentions trademarking, whatever happened to the new branding announced [1] a year ago? The logo (which they did trademark, along with the name "Go") is also still not in use. The design wasn't received so well by the community, so did Google perhaps change their minds? [1] https://blog.golang.org/go-brand https://blog.golang.org/go-brand
- lgleason 7y agoThe mental gymnastics here... Go is just like many Google projects and Google "community" programs. They are basically a way to get free labor while benefiting Google first and foremost. That is a philosophy that goes right up to the top. Yes others benefit from the free software, and by fixing something you might be scratching your own itch, but if you invest any unpaid time towards developing for it you need to understand the Google controls everything (unless you fork it). If you get on the wrong side of the Google activists, they will use the COC to invent a reason to kick you out of the main project. Some of Google's "community" programs are not as subtle about things. IE: The Google Developer Expert program in these "community" technologies such as Angular, Android etc. require the unpaid developer experts to sign non-disparagement agreements with Google while in exchange only getting a little bit of notoriety and a few comped trips and tickets to events...and of course Google is the gate keeper for it. The GDG program is even more flagrant. Each chapter is "independent" and has to raise their own money for things, but then Google tips the scales by throwing money towards programs that shill certain Google products. Google also has guidelines on how you market etc. things and is able to be a gate keeper on who is and isn't and organizer etc.. Many of the Google "community" "open source" packages are first only released to people under NDA's. I've seen this happen a few times with the some of the Android libraries etc.. Does that mean that Go is bad? No, in the same way that proprietary technologies are not bad. The key is understanding the truth from the propaganda.
- neilv 7y ago> require the unpaid developer experts to sign non-disparagement agreements I haven't heard of this. What's the rationale?
- wcr3 7y agothere are legitimate criticisms to be made w/r/t go's relationship w/ google, and vice-versa; the original post is plainly not one of them.
- kstenerud 7y agoYes, Google effectively has final say over what goes into golang; that's never going to change. But then again, the same could be said of the cadres of people managing other languages. At the end of the day, SOMEONE has to be in charge, and that someone probably isn't you. I personally like to have strong leadership behind such fundamental things as languages. I may not agree with all of their decisions, but at least I can count on the stability, which we all need in order to collaborate successfully. With strong leadership, I know I we won't have another Python2 vs Python3 mess. And the ability to fork is very handy. I've forked my own golang compiler to allow warnings for unused imports, variables, etc [1] because I don't like fighting the compiler during debug or exploratory coding sessions. [1] https://github.com/kstenerud/go https://github.com/kstenerud/go
- tgsovlerkhgsel 7y ago> Google effectively has final say over what goes into golang I'm wondering who has more say, Google or the individuals on the core Go team. My guess is that said people's personal opinion matters a lot more, or rather, almost exclusively. How exactly would "Google" decide what goes into golang? They pay the Go team to do that, and I have a gut feeling that the Go team will do what the Go team wants to do, and not something else. I would also be surprised if enough of them didn't have a sufficient amount of "fuck you money" to be able to effectively do what they want even if Google somehow managed to find someone who feels like they have any authority to tell the Go team which way to go (pun not intended).
- kstenerud 7y agoYes, I wasn't fully clear: It's the authors who wield the most power. Google as a whole doesn't really care so long as it works for the things they do (and it already does, so they really don't care anymore). This isn't a case of an evil empire seeking to enslave our minds via a programming language; it's a company open sourcing their internally designed language, and engaging the community to make it more useful outside of Google (and to increase the number of people who use the language, which is always good because it means a greater pool of developers who could possibly work for them).
- falsedan 7y agoLove how people from the big org that controls the project keep insisting that it's community driven, instead of members of the community
- coldtea 7y ago>There are certainly senses in which Go is Google's language: it was created at Google, Google continues to fund most of the development, and a few people at Google are the final deciders about the language itself. But I disagree with the “not ours:” I think Go is also the Go community's language. Well, not if people in the Go community can't be promoted to be among "the final deciders about the language itself" without also being hired by Google. Sure, the community is 1 million people. Nobody expects 1 million people to vote for Go's design and features. But each language community develops prominent members, which for Go can be outside of Google too. E.g. like JS had Resig and Askenash, or Java had the various Java Apache project leads, Yoda time, etc people, or like Python has Kenneth Reitz, Armin Ronacher, the Twisted/Tornado guys and co. And some major projects, modules, etc, eventually emerge. If those people can't get their (widely adopted by many in the community) proposals and changes into the language, and don't get the chance to be core team, them it's not a community language.