Thank you, rsc, for all your work. Development in Go has become much more enjoyable in these 12 years: race detector, standardized error wrapping, modules, generics, toolchain updates, and so on. And while there are still things to be desired (sum types, better enum/range types, immutability, and non-nilness in my personal wishlist), Go is still the most enjoyable ecosystem I've ever developed in.
Because of this change, Go 1.22 is actually the first Go version which seriously breaks Go 1 compatibility, even if the Go official doesn't admit the fact.
I think this is a side effect of golang having failed at the mission to replace C++ or even Java, becoming a replacement for ruby / python etc for API's. makes the project's goals align with users not about conquering the world anymore. as that battle is lost to Rust, Zig etc.
I've noticed: competent people who aren't interested in leadership tend to make the best leaders.
As compared to people who want to be leaders, for the sake of being known as a 'leader', but have neither the competency nor accountability to be leaders.
Without taking a stand on the first half of that, I don't think it's particularly surprising that the best BDFLs are skeptical of their power. I'd argue the main benefit of having a single person with the power to make a unilateral decision is that it provides a way around the gridlock that tends to occur whenever there are a wide variety of stakeholders involved;. a project whose leader feels warranted to overrule decisions that have a strong consensus is a lot less likely to build up a community to the point that anyone is aware of the project.
I don't think this is true. Python had a BDFL and it didn't seem to benefit much from it. I'm not sure what other projects this attitude draws from. Off-hand I'd guess it causes less drama but no appreciable increase of quality, just like other forms of bureaucracy.
Meanwhile there's entire landfills of failed projects with single owners who couldn't bend enough. We just don't find this worth discussing.
The whole idea is a joke, it's right there in the name. It was a recognition of the "facts on the ground" of GvR's role as the creator of Python, it was never seriously meant as a principle of project management. It's descriptive not prescriptive, eh? The idea got reified all out of hand.
> rsc, thank you very much for all the hard work on the language that brought me into software engineering.
You're quite welcome, and thank you for this comment. I never expected when we started that Go would have such a positive impact on people's lives, bringing new people into programming and software engineering. That's definitely the impact I'm most proud of.
Incredible blog. I've said it on this site before, but his series on regular expressions is insanely high quality and the fact he just posted it there for all of us is a huge privilege.
I disagree on one point that has nothing to do with Go. Python has not benefitted from GvR stepping down. The new "leadership" is non-technical, tyrannical and has driven almost all true open source contributors away.
Development has stalled except for the few corporate contributions of doubtful quality. The atmosphere is repressive and all that matters is whether you have a position of power at Microsoft/Instagram/Bloomberg.
It is not necessarily the fault of these companies. They may not know that their generosity is being abused.
gofmt probably has alone saved so much time across the world (and is upstream from every other language ecosystem basically saying "ok let's just autoformat").
I hate what autoformatters do to my code, but I love not having to talk about spacing anymore.
Interestingly enough, I hate autoformatters (and use spaces instead of tabs) in every other language, but in Go you just get used to the way gofmt formats your code from the beginning, and then start to appreciate that you don't spend as much time on it anymore, so it's not a problem (at least for most people).
https://www.youtube.com/watch?v=wwoWei-GAPo — Project has come a long way since this. Happy that it's still around and thriving. I don't think we expected that in 2009. I don't believe Go would have been where it is without Russ. His contribution to the project has been tremendous.
While vendoring is great, generics is bad addition to Go, since they complicated Go type system too much [1]. This makes typical Go code with generics hard to read and hard to maintain.
Huge news! I hope the new leadership remembers that keeping golang small and simple was its greatest strength. Adding generics was too much, and while I think there are some important small cases when it's valuable, in practice people are using it when they shouldn't. I'd also like to see less google control of the project.
> Adding generics was too much, and while I think there are some important small cases when it's valuable, in practice people are using it when they shouldn't.
Strongly disagree.
Beyond very simple codebases lack of generics means either duplicating a bunch of code or eschewing type safety - neither of those things are particularly attractive to me. I can't imagine writing code in a strongly typed language that doesn't have support for generics.
Even if you don't use them directly it's almost certain you're using libraries that would be forced to be less ergonomic or type safe because of a lack of generics.
> I'd also like to see less google control of the project.
That doesn't look like is going to happen — the leadership change announced here seems to me to continue on the Google path. Both Austin and Cherry are relatively unknown outside Google and are to my knowledge not active in the community outside Google.
> I'd also like to see less google control of the project.
What does this even mean? Google basically just finances the project, but doesn't really "control" anything, never mind that "Google" isn't a monolithic entity in the first place.
Russ has done a great job of shepherding Go through over a decade of growth and maturity and has led a ton of fantastic additions to the language and built a strong pattern of excellence in how language changes are considered and made that should serve as a shining example for the future of Go as well as any other language out there.
And now he’s continuing the stretch of outstanding leadership by passing the torch. I can wait to see what the next 12 years of Go brings. Thanks for your service, Russ!
Out of interest, why are people so confident in Google when it comes to Go, yet every other day there's articles about how Google can't be trusted in related to Dart/Flutter which are soon to be abandoned?
I don't really know anything about Dart or Flutter, but they're entirely separate teams within a huge organisation. It's entirely possible that one team does an excellent job, whereas the other doesn't. I keep repeating this: but "Google" is not a monolithic entity. People aren't "confident in Google", they're "confident in the people working on Go" (or not: you can decide that for yourself).
I get an early-UNIX / Bell-Labs vibe from the entire Go project. New Jersey all the way. The ecosystem is too sleek and practical to abandon. My 0.02€, ymmv.
At any point in recent history, I would have been pretty happy sticking with the last release of go for quite some time. Flutter always feels like it's the next release that's going to be the good one.
Thanks Russ for your great leadership and contributions to the Go community. I’ve always enjoy your talks, blogs, and your many contributions to the language. Looking forward to your future contributions to the language and ecosystem.
I have so many disagreements on goals for the language with Russ, but have been a fan since his early days of writing the regex package and the c-to-go conversion code. Glad to hear he will still contribute to the lang, and hoping for a bit different direction from the new leads.
Thanks RSC, since the past 8 years I really enjoyed working with Go.
It's my first experience following a programming language development, all the proposals, debates and how all of them were handled.
The Go community is incredibly lucky having had a person as lead with such outstanding technical skills and at the same time a great sense of strategic long term view. As this was not enough, I remember reading some discussions where I thought "Damn, this rsc guy has a lot of patience."
Go evolves slowly but steadily. No drama, no politics (external, I don't know about the internal), not social justice wars, just great technical and community work focussing on the thing at hand: A programming language and ecosystem.
Does Google actually consider Go to be a success? I get the impression that it failed in what it set out to be: a successor to C/C++. Or put differently, Rust has eaten Go‘s lunch.
Go was never intended to be a C/C++ successor, it was intended to solve a class of problems that Pike and gang experienced in the software they worked on. Which is to say network servers. What you are probably remembering is that they assumed from their unique Google lens that it was C++ developers who had those same problems and would see it as an alternative to C++ when faced with those problems, but it turned out that in the "real" world people were writing network servers in Python and Ruby, not C++.
Which isn't surprising to the rest of us. If you remember the days before Go, every second thread on HN was about how "company X", including the company now known as X, saw their Ruby network servers completely falling down under load, forcing a rewrite in whatever the language du-jour was that day. But Googlers tend to live in a completely different bubble with respect to the way software is written.
A goal of Go was to put working on complex distributed systems within the reach of the junior people Google had access to in the quantity they were hiring. To whit, the kind of people who would have been able to work on a big Python system with 3 months ramp up or on a big C++ system with a year of ramp up.
It is pretty clear that with respect to that goal, Go is a success. It has attracted Python programmers who need type safety and performance. Someone with no Go experience could land a useful new feature in a big Go program in 3 months.
Introducing a junior person to a large Rust system would still take a year, because it is so much more difficult than Go. Which means to me that if Rust had been aiming at this same adoption goal (it wasn't) it would not have succeeded where Go did.
This is an interesting question, but I doubt you will get a satisfactory answer here and probably anywhere. There is probably not even a uniform opinion about this within Google.
What I am more curious about is how much actual use Go has within companies and especially Google. What is the percentage of Go within their monorepo? How much of Google search is powered by Go?
I guess it depends on how you define success, but given there's a lot of people writing a lot of go code inside and outside of google over the last 15 years it seems likely it's doing a decent job at solving problems for those people. I'd call that a success.
I've seen this "if err != nil" pattern before, but I can't help thinking that it's not necessary.
"return ret, nil" ignores err's value, which is nil anyway.
"return nil, err" ignores ret's value, but why? If the caller checks for err before doing anything with ret, it doesn't hurt having ret always passed up.
4 extra lines only to lose the value of ret in case of error.
Boy, this makes me sad. He’s really changed my life, I’ve learned so much about software and programming from his writing and thinking. I wish it didn’t have to happen, but I guess it’s only ever a matter of time.
Go team has built a remarkable tool under your leadership. A tool that moved a niddle to the better side of things for the industry. Thank you and God speed!
Want to say thanks to anyone and everyone that made Go happen. It’s been my language for a while now and I appreciate what it has made available to me.
Russ thank you so very much for your outstanding leadership, dedication, design wisdom, and technical contributions to Go. This language, its libraries and tools, and especially the Go community are incredible. You are a class act sir!
Golang is easily one of my favorite new languages. It's fast and clean without the difficulty of Rust. I was able to create a small mobile app with Chat GPT without any real experience in Golang.
I would like better mobile and gaming frameworks though. Although I really like Flutter, I think Google missed a major opportunity to use Golang instead of Dart.
Since rsc frequents HN: I’d like to thank you for all the work you’ve put into this great language. Peak HN hype cycle I decided to pick up Go and never regretted it. Thank you.
Is the new tech lead more likely to get rid of the glibc-isms that Golang won't let go of, like crashing if non-ELF standard parameters like env aren't passed in ELF library initialization, or maybe supporting global-dynamic thread local storage so we can dlopen() shared objects made in Go on platforms that don't hack like glibc?
Go's obsession with glibc-isms is really unfortunate, and it's been many years. If you're using Go with containers on Alpine/musl, keep your code very vanilla, because they won't support you.
The Go project specifically acknowledging the glibc-isms here:
"All Linux first class ports are for systems using glibc only. Linux systems using other C libraries are not fully supported and are not treated as first class."
Go only supporting static-init thread local storage, and thus their "C ABI" libraries can only be dlopen()'ed if the libc pre-allocates memory to hack in libraries later.
Some comments were deferred for faster rendering.
ainar-g|1 year ago
everybodyknows|1 year ago
https://research.swtch.com/vgo-intro
LudwigNagasena|1 year ago
Ah, I still remember this thread:
https://groups.google.com/g/golang-nuts/c/rvGTZSFU8sY/m/R7El...
vyskocilm|1 year ago
sharno|1 year ago
tapirl|1 year ago
Because of this change, Go 1.22 is actually the first Go version which seriously breaks Go 1 compatibility, even if the Go official doesn't admit the fact.
paride5745|1 year ago
Other than that, I agree with your comment.
tomcam|1 year ago
hoten|1 year ago
nottorp|1 year ago
I suppose in theory it's some independent entity/commitee/whatever, but who pays the majority of the people working on it? Google?
dzonga|1 year ago
jgowdy|1 year ago
TheDong|1 year ago
[deleted]
alphazard|1 year ago
It's interesting that the best projects have BDFLs, and that the best BDFLs are skeptical of their own power.
knighthack|1 year ago
As compared to people who want to be leaders, for the sake of being known as a 'leader', but have neither the competency nor accountability to be leaders.
saghm|1 year ago
darby_nine|1 year ago
Meanwhile there's entire landfills of failed projects with single owners who couldn't bend enough. We just don't find this worth discussing.
Of course this won't happen, but a man can dream.
groby_b|1 year ago
This extends well beyond OSS projects.
carapace|1 year ago
riwsky|1 year ago
dondraper36|1 year ago
Despite playing around with several programming languages, Go still feels like home.
The development experience is terrific and I really appreciate how unapologetically simple and responsible the language and its creators have been.
Good luck and all the best in all your endeavours!
rsc|1 year ago
You're quite welcome, and thank you for this comment. I never expected when we started that Go would have such a positive impact on people's lives, bringing new people into programming and software engineering. That's definitely the impact I'm most proud of.
Thaxll|1 year ago
furyofantares|1 year ago
jjice|1 year ago
klartd|1 year ago
I disagree on one point that has nothing to do with Go. Python has not benefitted from GvR stepping down. The new "leadership" is non-technical, tyrannical and has driven almost all true open source contributors away.
Development has stalled except for the few corporate contributions of doubtful quality. The atmosphere is repressive and all that matters is whether you have a position of power at Microsoft/Instagram/Bloomberg.
It is not necessarily the fault of these companies. They may not know that their generosity is being abused.
the_duke|1 year ago
Do you have some data to back that up?
The stats on Github seem to show healthy activity. 700+ merged PRs from 120+ contributors in the last month [1].
There seems to have been a big influx of new contributors in the last few years. [2]
[1] https://github.com/python/cpython/pulse/monthly
[2] https://github.com/python/cpython/graphs/contributors
rtpg|1 year ago
I hate what autoformatters do to my code, but I love not having to talk about spacing anymore.
rob74|1 year ago
j2kun|1 year ago
An LLM-based architecture for helping maintain OSS projects. Seems cool.
simonz05|1 year ago
Thanks Russ.
zmj|1 year ago
nasretdinov|1 year ago
bruckie|1 year ago
valyala|1 year ago
[1] https://go.dev/blog/type-inference
purpleidea|1 year ago
I'm certainly thankful for golang as it made my https://github.com/purpleidea/mgmt/ project possible!
Thanks Russ!
p1necone|1 year ago
Strongly disagree. Beyond very simple codebases lack of generics means either duplicating a bunch of code or eschewing type safety - neither of those things are particularly attractive to me. I can't imagine writing code in a strongly typed language that doesn't have support for generics.
Even if you don't use them directly it's almost certain you're using libraries that would be forced to be less ergonomic or type safe because of a lack of generics.
dblohm7|1 year ago
I strongly disagree. Sure, like anything in programming, generics can be misused. But even comments can be misused!
OTOH I am able to build things in Go with generics that I would not be very happy building without them.
simonz05|1 year ago
That doesn't look like is going to happen — the leadership change announced here seems to me to continue on the Google path. Both Austin and Cherry are relatively unknown outside Google and are to my knowledge not active in the community outside Google.
arp242|1 year ago
What does this even mean? Google basically just finances the project, but doesn't really "control" anything, never mind that "Google" isn't a monolithic entity in the first place.
skywhopper|1 year ago
And now he’s continuing the stretch of outstanding leadership by passing the torch. I can wait to see what the next 12 years of Go brings. Thanks for your service, Russ!
hgyjnbdet|1 year ago
arp242|1 year ago
bufo|1 year ago
quectophoton|1 year ago
I trust specs[1], multiple implementations[2], and how easy it is to bootstrap a compiler[3].
[1]: https://go.dev/ref/spec
[2]: https://gcc.gnu.org/onlinedocs/gccgo/ (even if feature parity isn't quite there yet)
[3]: Instead of requiring double-digits compilation steps that each take too long to be reasonable.
euroderf|1 year ago
tedunangst|1 year ago
unknown|1 year ago
[deleted]
nu11ptr|1 year ago
source?
meling|1 year ago
declan_roberts|1 year ago
For example, if a language doesn't come with a built-in formatter that's a huge red flag. Go broke the tyranny of style discussions.
Easy static binaries is right up there for all new languages.
Kudos to rsc and team for all the work that went into making a great language. Good luck on your next projects.
unknown|1 year ago
[deleted]
throwawaygo|1 year ago
calini|1 year ago
chmike|1 year ago
Go is awesome and I hope it will continue to progress in that direction. Thank you Russ Cox
wejick|1 year ago
MaiVa|1 year ago
Go evolves slowly but steadily. No drama, no politics (external, I don't know about the internal), not social justice wars, just great technical and community work focussing on the thing at hand: A programming language and ecosystem.
hankman86|1 year ago
randomdata|1 year ago
Which isn't surprising to the rest of us. If you remember the days before Go, every second thread on HN was about how "company X", including the company now known as X, saw their Ruby network servers completely falling down under load, forcing a rewrite in whatever the language du-jour was that day. But Googlers tend to live in a completely different bubble with respect to the way software is written.
jeffrallen|1 year ago
It is pretty clear that with respect to that goal, Go is a success. It has attracted Python programmers who need type safety and performance. Someone with no Go experience could land a useful new feature in a big Go program in 3 months.
Introducing a junior person to a large Rust system would still take a year, because it is so much more difficult than Go. Which means to me that if Rust had been aiming at this same adoption goal (it wasn't) it would not have succeeded where Go did.
weinzierl|1 year ago
What I am more curious about is how much actual use Go has within companies and especially Google. What is the percentage of Go within their monorepo? How much of Google search is powered by Go?
remus|1 year ago
barsonme|1 year ago
It was supposed to replace C++ in projects where the developers would’ve otherwise reached for C++ simply because it was the default language choice.
trustno2|1 year ago
amiga386|1 year ago
cocok|1 year ago
"return ret, nil" ignores err's value, which is nil anyway.
"return nil, err" ignores ret's value, but why? If the caller checks for err before doing anything with ret, it doesn't hurt having ret always passed up.
4 extra lines only to lose the value of ret in case of error.
glii|1 year ago
fliter|1 year ago
Thanks for your leadership of the Go team over the past 12 years, and for your patient comments and guidance on our proposals and PRs.
Best wishes for the future, and hope to see you in the community again.
unknown|1 year ago
[deleted]
zakki|1 year ago
jeremyloy_wt|1 year ago
philosopher1234|1 year ago
rsc|1 year ago
xyst|1 year ago
Wonder what he’s going to do next? Maybe just moving around within G? or another OSS project within G?
dochtman|1 year ago
mseepgood|1 year ago
remus|1 year ago
https://github.com/robpike/ivy
hu3|1 year ago
Being able to use channels in a modern programming language is such a gift.
rsc thank you for all your contribution to our field. You blog posts also taught me a lot.
igmor|1 year ago
iJohnDoe|1 year ago
septune|1 year ago
tschellenbach|1 year ago
DLA|1 year ago
shoggouth|1 year ago
denysvitali|1 year ago
999900000999|1 year ago
Golang is easily one of my favorite new languages. It's fast and clean without the difficulty of Rust. I was able to create a small mobile app with Chat GPT without any real experience in Golang.
I would like better mobile and gaming frameworks though. Although I really like Flutter, I think Google missed a major opportunity to use Golang instead of Dart.
What's next? Any good for native Chrome support?
fuzztester|1 year ago
>I would like better mobile and gaming frameworks though
er, try asking chatgpt to create them for you.
38|1 year ago
so you didn't really create it then did you? ChatGpt created it for you.
unknown|1 year ago
[deleted]
rollulus|1 year ago
shynome|1 year ago
[deleted]
coolThingsFirst|1 year ago
[deleted]
keybored|1 year ago
[deleted]
oneepic|1 year ago
unknown|1 year ago
[deleted]
lagniappe|1 year ago
jgowdy|1 year ago
Go's obsession with glibc-isms is really unfortunate, and it's been many years. If you're using Go with containers on Alpine/musl, keep your code very vanilla, because they won't support you.
liveoneggs|1 year ago
jgowdy|1 year ago
Go requiring non-ELF standard parameters for initialization of supposedly "C ABI" libraries, open since 2015.
https://github.com/golang/go/issues/13492
The Go project specifically acknowledging the glibc-isms here:
"All Linux first class ports are for systems using glibc only. Linux systems using other C libraries are not fully supported and are not treated as first class."
https://go.dev/wiki/PortingPolicy
Go only supporting static-init thread local storage, and thus their "C ABI" libraries can only be dlopen()'ed if the libc pre-allocates memory to hack in libraries later.
https://github.com/golang/go/issues/54805
jgowdy|1 year ago
[deleted]