Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Google Programming

Is Go Google's Programming Language, Not Ours? (utoronto.ca) 172

Chris Siebenmann is a Unix sys-admin for the CS department at the University of Toronto. He recently saw a tweet asking about the possibility of community-implemented generics for the Go programming language, and posted a widely-read response on his blog.

"There are many answers for why this won't happen, but one that does not usually get said out loud is that Go is Google's language, not the community's." Yes, there's a community that contributes things to Go, some of them important and valued things; you only have to look at the diversity of people in CONTRIBUTORS or see the variety of people appearing in the commits. But Google is the gatekeeper for these community contributions; it alone decides what is and isn't accepted into Go. To the extent that there even is a community process for deciding what is accepted, there is an 800-pound gorilla in the room. Nothing is going to go into Go that Google objects to, and if Google decides that something needs to be in Go, it will happen.

(The most clear and obvious illustration of this is what happened with Go modules, where one member of Google's Go core team discarded the entire system the outside Go community had been working on in favour of a relatively radically different model. See eg for one version of this history.)

Or in short, Go has community contributions but it is not a community project. It is Google's project. This is an unarguable thing, whether you consider it to be good or bad, and it has effects that we need to accept. For example, if you want some significant thing to be accepted into Go, working to build consensus in the community is far less important than persuading the Go core team. (As a corollary, sinking a lot of time and effort into a community effort that doesn't have enthusiastic buy-in from the Go core team is probably a waste of time....) On the good and bad scale, there is a common feeling that Go has done well by having a small core team with good taste and a consistent vision for the language, a team that is not swayed by outside voices and is slow moving and biased to not making changes.

The essay also concedes that "I like Go and have for a fair while now, and I'm basically okay with how the language has been evolving and how the Go core team has managed it. I certainly think it's a good idea to take things like generics slowly.

"But at the same time, how things developed around Go modules has left a bad taste in my mouth and I now can't imagine becoming a Go contributor myself, even for small trivial changes."

UPDATE (1/29/2024) In a 2023 talk, Rob Pike -- one of Go's original creators -- addressed the question head-on. "People often assume Google tells the Go team what to do. That's simply not true.

"Google is incredibly generous in its support for Go, but does not set the agenda. The community has far more input. Google has a huge internal Go code base that the team uses to test and verify releases, but this is done by importing from the public repo into Google, not the other way around. In short, the core Go team is paid by Google but they are independent."
This discussion has been archived. No new comments can be posted.

Is Go Google's Programming Language, Not Ours?

Comments Filter:
  • by Anonymous Coward

    "go" is google's thing, just like "swift" is apple's and of course facebook just had to have its own also. And mozilla, with its groupies. And sunacle. And the entire language zoo shitshow from redmond. This isn't hard to figure out.

    It's the thing to do for a tech giant. Own that "ecosystem". And if you're a fanboi, then yes, you have an owner too.

    • We probably learned our lesson with Java.

      • learned what? Java has been out for 20+ years and still doing important business work. It's a job requirement, not something "the community" chooses to use or not.

        • It wasn't always. 20-some years ago it was one of those newfangled fad languages - not very powerful, atrociously slow, and owned by a particular company. Nobody took it seriously, but it was being marketed hard as the magic bullet for cross-platform and web development.

        • by Anonymous Coward

          The community has rammed everything into the Java specification, which is over 700 pages today. This was not the case back in 1995 when it was introduced to the world. You see feature creep in other languages too.

        • Re: (Score:2, Interesting)

          by Anonymous Coward

          You mean the 4 distinctly different and incompatible
          Java versions released over the last 20 years?

          I'll stick w/C. If I need a "higher-level" language, I'll
          write the mutherfarkin language myself in C.

          CAP === 'bashes'

    • But it's curious how those languages came to be. Go - Googlers are too stupid to learn C or C++. Hack - Mark Zuckerberg wrote facebook in PHP and then they discovered PHP sucks. Swift - Objective C was too difficult for javascript hipsters to write fart apps? Not really sure on this one. The common thread seems to be pandering to the lowest common programmer.
      • by HiThere ( 15173 )

        How about Objective C's documentation was (and is) horrible. Whenever I tried to figure out how to do something with it, I'm directed to a page about using an Apple library...which I didn't have.

      • by pjt33 ( 739471 )

        There's a tradeoff: more power generally goes with being easier to shoot yourself in the foot (and blowing off more of your leg along with it). As for C++, I get the impression that no-one outside the standardisation committee can keep up.

        • by Livius ( 318358 )

          no-one outside the standardisation committee can keep up.

          You think the standardisation committee is keeping up. That's cute.

          • by DeVilla ( 4563 )
            They have regular meetings / conferences where they teach each other the latest version of "Modern C+". The ones who make most of the meetings and do blog posts on are pretty current on things.
      • You win the internet today.

  • by 93 Escort Wagon ( 326346 ) on Saturday May 25, 2019 @08:00PM (#58655104)

    Couldn’t you say similar things about the Linux kernel, for example? Or Apache’s web server?

    • Or every other open source project. That’s why forks exist.
  • by Anonymous Coward

    "Is Python Guido's programming language, not ours?" (until very recently, at least)

    "Is Linux Linus' kernel, not ours?"

    There are multiple freely licensed Go implementations and a language spec document you can copy and modify to make your own Go variant. In the case of modules it's not even really a breaking language change, it's a tooling behavior issue.

    This guy's complaint boils down to: someone who doesn't answer to me made a decision I don't like. Welcome to reality, friend. We would all prefer some thin

    • Re:Yes and no (Score:5, Interesting)

      by Aighearach ( 97333 ) on Saturday May 25, 2019 @11:51PM (#58655846)

      Perl 5 was Larry Wall's rewrite of Perl 4.

      Perl 6 is the community's rewrite of Perl 5.

      And it completely destroyed the community, and "nobody" uses Perl anymore.

      I say like Pike and Thompson keep it.

      It is already created, we know what it does, the interesting thing after that is choosing libraries. And nobody controls that.

      • by gweihir ( 88907 )

        I use Perl 5. I will not touch the Perl 6 mess with a very long pole.

      • And it completely destroyed the community, and "nobody" uses Perl anymore.

        No they don't. But that's not because of Perl's internal politics. It's mostly because most folks find it very difficult to read Perl code -- any version. Even code they wrote. Python has much the same capability and is far easier for most of us to read, so Python has largely replaced Perl. see ftp://ftp.ntua.gr/mirror/pytho... [ftp.ntua.gr]

      • And it completely destroyed the community, and "nobody" uses Perl anymore.

        That guy shows up a lot in my syslog files.

        [And I still use Perl for many things.]

        • Sad that that practice is still around, since adding a user for each daemon is so cheap.

          There's nothing wrong with Perl. It didn't disappear.

          But the "Perl community" largely did. That's why I quoted "nobody;" because I know that there is a mouse that is stirring, and yet, it is still a very quiet night on Perl Street.

  • by logicnazi ( 169418 ) <gerdesNO@SPAMinvariant.org> on Saturday May 25, 2019 @08:25PM (#58655186) Homepage

    And python was Guido van Rossum's programming language (he effectively had final say over all decisions) and many other programming languages have a single leader or small inner circle who effectively dictate what changes are accepted.

    I suspect this is a desirable and necessary part of building a good programming language. Many ideas that are good in their own right may need to be abandoned to achieve greater overall consistency or simplicity. It's necessary to have a small group in charge who can ensure a consistent vision.

    The fact that Google is a for-profit company rather than a lone developer is actually a good thing not a bad one. It ensures that Go is responsive to many real world concerns (and scalability concerns that developers without massive data centers might not run into) and provides a certain assurance of continuity. There is no profit motive for google to make the language worse or limit it. If they do abandon it...well fork it.

    • by Junta ( 36770 ) on Saturday May 25, 2019 @08:50PM (#58655280)

      I would go a bit further and say it's an unfortunate requirement for any good project to have "centralized" design/approval structure.

      I have seen some "decentralized" projects in open source land. They have thus far always sucked, lacking any semblance of consistent vision and direction.

      Sometimes there have been very successful forks, where someone couldn't get their vision through current leadership and forked and ultimately "won" the disagreement by becoming the new gatekeepers, but always there is some core leading small team.

      provides a certain assurance of continuity.

      Eh, I wouldn't assume that. Companies tend to assert branding, but the technical will behind it usually isn't all that much stronger in a company. People think google and imagine the thousands of employees standing behind it. In practice about a dozen people are the bulk of the project (which is actually on par with the most popular open source projects). Particularly Google is notorious for changing their minds in very public ways that impact people who have adopted their technologies. The almighty fork remains the option for an abandoned or bad direction for such a project.

      • I know very well that it's a dozen people on each project. I used to work there. The difference is that for any project that is used widely internally if those dozen people leave or quit Google will make sure that someone else with the expertise and background needed to run the language will be hired/assigned to keep it going.

        It's basically like the small inner circle making the calls for any programming language but backed by a big pot of money to hire replacements if they decide to do something else.

    • by DrXym ( 126579 )
      Having a "benevolent dictator" or a core team is probably better than a free-for-all. But even with that model it wouldn't stop contributors producing something equivalent to Boost, a side library of useful things where the good ones can be incubated and be incorporated into the core language.
      • Is this supposed to be something that should be stopped? Doesn't sound like it. I'm confused about the relevance.

  • by Anonymous Coward on Saturday May 25, 2019 @08:35PM (#58655222)

    I read the link and basically this dude is sour grapes for working on something then the people who built it from scratch refuse his contribution.

    I know because -- I was that guy --. I have spent a lot of time writing stuff that gets rejected from open source projects.

    What I have learned is that basically, the Buddhists are way ahead of us on this. Monks travel around the world making sand paintings. They are huge, they are beautiful, they are intricate, they take many many days to create, its hundreds of hours of work. Then, they sweep the sand into a bucket and leave.

    The point is not to be attached to the things we create. It is the act of creation that is important, and the appreciation, the focus, the experience. The final product is out of our control most of the time anyways.

    When I became on the "other side", having to tell people their pull requests were rejected, it became full circle. A lot of contributions are not good. A lot of contributors lack respect for what came before them. It might take 1 hour to implement a feature... it might take 100 hours to make sure that feature works on all platforms, doesnt have weird bugs, integrates with test cases, doesnt confuse people in the UI, wont restrict further developments, doesnt complicate the underlying structure too much, etc.

    Why is open source great ? Because it is a market place of ideas (without much of a money exchange yet but...) and you can always start your own thing if you dont like how things are going.

    But if you are angry because someone didnt take your contribution, that is a lesson in life, not in code. Life is about rejection. Rejection from jobs, rejection from relationships, rejection from business partners. It is not the rejection that is important, it is how you feel about it, and how you handle those feelings. In fact, how you handle your feelings is pretty much the only thing you actually have control over.

    • by rl117 ( 110595 ) <{ten.erbiledoc} {ta} {hgielr}> on Sunday May 26, 2019 @04:16AM (#58656314) Homepage

      A lot of people fail to realise the costs involved. Creating a patch is one of the least costly parts. It might take someone a few minutes to a few hours to create a tested, working patch. But integrating it might take many hours, or even weeks. Checking it matches the existing design specification, updating specifications if needed, checking it has correct test coverage, and that the tests work on every supported platform, and that there are no behaviour or compatibility breaks for downstream users, all takes significant amount of time and resources. Far in excess of the initial patch creation.

  • by Anonymous Coward

    Of course it's Google's language.

    So why have anything to do with it?

    I never understood why people are so keen to throw free labor to one of the richest corporations on the planet.

    You wanna contribute something to something? Go find a small OSS project of volunteers that needs help with something. They're all over.

    But FFS, don't donate your time and energy to Google, Microsoft, or bloody Oracle.

  • Check out the informative table here [wikipedia.org].

    • >"Check out the informative table here [wikipedia.org]. [Benevolent_dictator_for_life]"

      Yet Google is neither an individual nor to many people, "benevolent." Dictator- that fits, though.

  • I mean, yes it's Google's. So just wait a couple years until they abandon it and then you can do whatever you like.

    • That doesn't change anything, you can already do all that stuff.

      This is about "they didn't accept my pull request, and they don't even care about the letters next to my name!"

  • ... doesn't necessarily lead to better tools or software.

    Linux is case in point, while it is well enginered for proffesionals, it is badly enginered for end users. Programmers have this weird fetish where they want to adapt/modify/write standards for tools they are using and that's all well and good the problem is the human mind is just not capable of dealing with all that complexity well. We saw this with C++ standards over the years where a tool keeps growing in complexity to meet different needs of dif

    • by gweihir ( 88907 )

      ... doesn't necessarily lead to better tools or software.

      I agree on that. The current crop of SJWs does think the complete opposite though. One of the easiest ways to demonstrate that they are stupid.

  • Having your own in-house programming language is something all the major tech companies are trying to do. It allows a level of vendor lock-in, making talent hard to transition elsewhere.

    Microsoft: .net (Visual Basic and C#), TypeScript
    Facebook: Hack / HHVM, React
    Apple: Swift
    Google: Go (the language name is even basically the company name!)
    Amazon: Actually, I'm not sure they have any yet?

    • With flex and bison, anyone can make their own in-house programming language. It used to be (still is?) a requirement for CS masters programs that students create their own programming language.

    • by gweihir ( 88907 )

      Oh yes. There is basically zero need for any of these languages besides training chap bad coders (that usually only can code in one language) in it and then having them unable to get a job anywhere else.

      Also:
      Mozilla: Rust

      • Oh yes. There is basically zero need for any of these languages besides training chap bad coders (that usually only can code in one language) in it and then having them unable to get a job anywhere else.

        If "I can't learn a language" keeps you from getting a job somewhere else, then you should be prevented from getting a job in the industry at all. None of these languages are very hard (ok, Rust is a little hard but not a lot hard).

        • by gweihir ( 88907 )

          Sure, it should. The sad state of affairs is that most "coders" these days fall into that class though.

          • The sad state of affairs is that most "coders" these days fall into that class though.

            Not really. They're afraid to try, but if they tried, they would actually be able to. Cowards should not be programmers, they're afraid to try.

            • by gweihir ( 88907 )

              No, they would not. They can only think in the one language they learned, they have no general concepts.

              • That's true for anyone until they learn their second language. Just like speakers of English never consider the complexities of the subjunctive.
  • It is an endless pattern. They care about search and ads, everything else may get killed without much warning. Relying on any Google-owned tech is a really bad idea.

  • NoSQL movement... (Score:3, Interesting)

    by Peter Kese ( 5959750 ) on Sunday May 26, 2019 @05:34AM (#58656428)

    Golang is akin to the NoSQL movement.

    Features most appreciated by Go's proponents are easy to learn and great compilation speed. Does that sound familiar: with NoSQL databases you didn't have to learn the clumsy SQL query language and they were fast due to lack of ACID guarantees.

    But for years the top voted tickets on NoSQL databases were usually 1) SQL and 2) ACID compliance or 3) at least some sort of consistency guarantees (Json-schema or something).
    Because initially, people weren't aware of that baby that they threw out with the bath-water, was called 'relational algebra' - a useful concept that some guy invented in late 1960ies, in times before these new kids were even born.

    So have a look at Golang ticket tracker with top voted issues being:
    1) generics
    2) error handling
    3) discriminated union types (ideally with pattern matching)

    I personally don't think Go should add these features, because with those features added, it won't be fast to compile, nor will it be simple anymore. If you need these features, there are actually great programming languages already in existence. There is a space for a NoSQL programming language called Go. There will always be people who wish to screw things up out of their ignorance and they should have a language to Go to. There will always be moronic managers who think that having a simple language like Go is a the most important feature of the company, because you can always find stupid inexperienced programmers, who can at least learn Go. There will always be people who think that fast compile times lead to faster turnaround, more unit tests and faster bug squashing (as if such bugs are unavoidable). In short, there is a space for Go.

    However, each time a proponent of Golang speaking of it as a 'means to everything programming language', it reminds me of people praising NoSQL databases, while having totally zero awareness of the theory of relational algebra or benefits of ACID compliance.

    So if you like Golang, but would like to be objective, then first learn some 1960ies theory, like Curry-Howard isomorphism, Hindley-Milner type systems and similar things, then learn a language that uses them (the OCAML, F#, ReasonML group is a great starting point and show what languages can do for you), and then come back to praise Golang if you will.

    • Re: (Score:2, Interesting)

      by swilver ( 617741 )

      And yet, there are languages with those features that compile fast, or even hot-code replace stuff.

      I can't imagine using a language without generics anymore, the expressiveness of the language increases by a whole order of magnitude.

      And I didn't buy into NoSQL either. I did however find that storing JSON structures into a database, structures that don't benefit from further relationships or indexing, is a neat way to save spelling out every table and field (and easier to change). Fields that do benefit fr

  • ... because Google. I mean, it would be like if there was on OS kernel where many contributors could propose changes but in the end there was somewhere where the buck stops and decisions were made by key project members and a benevolent dictator of some kind. It could never work I tell you! Oh wait ...
  • My impression of Go: it is a language with a number of good points but some glaring gouge your eyes out bad flaws, because of catering far too much to the whims of an opinionated, authoritarian dictator for life, backed up by Google's smarter-than-you dystopia. Sad. It could have been good.

A morsel of genuine history is a thing so rare as to be always valuable. -- Thomas Jefferson

Working...