Hacker News new | past | comments | ask | show | jobs | submit login
Go is Google’s language, not the community’s (utoronto.ca)
83 points by uggedal 54 minutes ago | hide | past | web | favorite | 42 comments





Actually there are relatively few real (TM) open source projects driven by the community, at least if you look at important projects. Many open source projects are just commercial projects driven mainly by a single company. Look for example at Redis, MongoDB, MySQL, and Elasticsearch. They follow exactly the model described in the article. Technologies like these could have been developed by a community, too, but it is hard to form such a community and keep it alive.

For a community-driven project from the size of a database some serious sponsors would be needed. Good examples are Rust, Linux, and PostgreSQL. I wonder why so many companies are happily paying Oracle (and the likes) tons of money instead of sponsoring an open source project like PostgreSQL.


Actually Mongo doesn't even look at pull requests. So, yes.

Postgres (do we really still need the "QL" reminder?) has demonstrated staying power, and repays invested time in spades. Linux, obvs. Rust, it's still too early to be sure about. Learning it will be at least educations, maybe formative, and at worst it won't be taken away.


I'm curious what the distinction is between Rust (driven by Mozilla) and Go (driven by Google).

The article uses "Google" instead of individuals names to make the actions taken seem like sinister actions of a faceless corporation.

My interpretation is that Google employs a tight-knit group of people that work on Go and collectively are the BDFLs of the language. This isn't that much different from most large OSS projects, although it does seem likely that this core team weights the opinions of those that they interact with daily (ie, other Google employees) over people they barely know.


Many like Go because it is an opinionated language. I'm not sure that a 'community' run language will create something like that because there are too many opinions. Many claim to represent the community, but not the community that doesn't share their opinion. Without clear leaders I fear technical direction and taste will be about politics which seems more uncertain/risky.

I like that there is a tight cohesive group in control over Go and that they are largely the original designers. I might be more interested in alternative government structures and Google having too much control only if those original authors all stepped down.


In my opinion the way they are handling adding Generics to Go is proof of this model working.

They are actually trying to pick the implementation that solves real world issues, not just trying to tick [x] Generics in the Go spec sheet.


It can be forked it if the opinions are widely shared and you think people will support you to run it better ? The tone of the article seemed to be casting shade relative to the institution funding it's development as the foundation of why there are problems ? It's normal in a large scale open lanuage there will be disagreement around direction of the project.

Many models around how those disagreements are resolved exist across many projects. You can choose one of them or build your own project and make your own decisions :)


To their credit, the Go team withdrew most of Error Values draft 2 [1] after a great deal of negative feedback. However, they've kept one unpopular change to fmt.Errorf().

We can hope that draft 2 of Error Handling [2] won't look anything like draft 1, for reasons such as [3].

[1] https://github.com/golang/go/issues/29934

[2] https://github.com/golang/go/wiki/Go2ErrorHandlingFeedback

[3] https://medium.com/@mnmnotmail/golang-how-dare-you-handle-my...


"... can't we have something like OpenGo ..." > " ... this won't happen ... "

I'm confused as to what's stopping someone from forking it, calling it OpenGo, and building a community around that.


This could be done, of course. But how likely is such an approach to succeed? It would effectively create a new language and in turn to a new ecosystem. Why not just use a different language (Rust comes to mind) then?

Momentum mostly.

Momentum.

This.

But Go is one in a long line of proprietary languages that those of us who have been around the block know to stay away from. Recently: Java was Sun's, C# is Microsoft's, Swift is Apple's, Go is Google's. With any luck, all will be footnotes in ten years. Those of us who knew better than to get invested in them will be fine. Everyone else gets a chance to learn something.


There is a mind-boggling amount of Java running around the world and more is still being written. Java won't die for several decades at least.

So what would you recommend?


For what purpose?

Java is a footnote?

Not yet. But we can hope. Ten years is a long time in this business.

Modern Java is a pleasant experience compared to Go.

I am about to learn a new programming language and I decided against Go just because of this fact. I do not trust Google and reading this article just makes clear how critical the state of the language is in terms of control by the community.

Python looks most promising and I already worked with it, but I am not sure yet. Can anyone recommend a viable alternative for Go? Any web-focused language that is performant, modern andalready well used?


There really isn't any with a substantial community.

Python is good for algorithmic stuff and things that need specific libraries (tensorflow, NumPy etc)

But if you want a garbage collected language for moving bits from place to place over the network, it's kinda hard to beat Go.


you shouldn’t let an article decide what language you learn.

So proprietary is bad? I have no issues with things being owned by a single entity, especially when they're financially backed by that (massive) entity.

What is being proposed as the alternative here?


Seeing Huawei got recently blacklisted for all US made chips, parts and some Android services from Google, an interesting question to ask is whether the US government will one day force some foreign companies (e.g. Huawei, ZTE and DJI for example) to stop using programming languages invented & implemented by US companies.

I don't see how this even would be possible. It's not like they disclose the source code of whatever software they write in order to sell in US.

That's not how open source works.

The license can change any time they want. They can change the license to prevent certain companies from using future releases and/or security patches.

Let's don't forget the fact that Huawei had legally binding contracts with all those US suppliers.


So? Just fork the last freely-licensed Version then.

then start to use clean room process to reimplement all future bug fixes? nice!

To determine how open a language really is look at how many widely used implementations of the compiler there are for the language. If there is only a single implementation of the compiler/interpreter than it is not really open but controlled by that core compiler team.

The TinyGo project are implementing a Go compiler on top of LLVM, to use Go on very small devices:

https://tinygo.org/

The Go language is defined by a spec with compatibility guarantees, but beyond embedded systems and WASM, there don't seem to be a lot of use cases for alternate implementations.


Most languages I can think of have one very dominant implementation and maybe another one or two that few people use. Python, Ruby, Java, C#, Go, Rust, Haskell... C/C++ are the only exception since Clang became serious competition to GCC and Visual Studio. Even Javascript only really has Chrome and Firefox.

So, there's your answer right there.

Afaik GCC's Go has been pretty complete and up-to-date for a couple of years.

There are at least four Go compilers: the original one from google, GCC go, gollvm and GopherJS.

I don't think that is necessarily true. Rust has only one compiler (and I think adding a second one would be a huge effort with no clear win) yet it is developed by a community that is very welcoming to newcomers. At least, that's been my experience.

It is definitely true. There's virtually no room for improving the underlying compiler toolchain because there's no allowance or support for an alternate implementation (using GCC, for example).

Go at least has gcc-go, which is a compliant implementation that gets some benefits from being part of GCC (like not completely broken support for dynamic link libraries!).

Having a second compiler implementation forces the language grammar and behavior to be specified in a formal manner that allows anyone to understand how it works.


I haven't thought consciously about that, but it turns out that I've been doing that kind of validation unconsciously. I didn't get interested in actally using D, for example, until the GDC variant arrived (Dlang-support in the GCC collection).

How is there no allowance? A lot of people in the community would love a rust compiler that can compile down to C for instance.

Maybe the tool chain is hardcoded to use the standard compiler? But that's more likely because of YAGNI, not because the rust community hates freedom.

Gcc compiles Rust fine. Its borrow checker won't bark at you, but that doesn't affect code generation.

OCaml and Haskell are one-horse towns with substantial history.

But as Stroustrup says, there are languages people complain about, and languages no one uses. You generally end up better off investing your time in mastering a language people complain about. Bitterly. Once that meant FORTRAN.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: