top | item 41132669

Russ Cox is stepping down as the Go tech lead

738 points| bojanz | 1 year ago |groups.google.com

371 comments

order

Some comments were deferred for faster rendering.

ainar-g|1 year ago

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.

vyskocilm|1 year ago

Well written list of what made Go better language during last years. I'd add iterators, the recent big thing from Russ.

sharno|1 year ago

I’m sure if Go had nullable types and/or sum types from the beginning, it’s have been much more popular

paride5745|1 year ago

I wish they would opt for ARC instead of a GC, to have a more deterministic memory objects lifecycle.

Other than that, I agree with your comment.

tomcam|1 year ago

IMHO Go has been one of the best-managed open source projects ever. Hats off to Google for supporting it.

hoten|1 year ago

What are some things that make it well managed?

nottorp|1 year ago

I did mean to ask: who "owns" Go for all practical purposes?

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

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.

jgowdy|1 year ago

Yeah, only supporting glibc behaviors and ignoring the ELF standard at will really qualifies as best managed. /s

TheDong|1 year ago

[deleted]

alphazard|1 year ago

> I don’t believe that the “BDFL” (benevolent dictator for life) model is healthy for a person or a project

It's interesting that the best projects have BDFLs, and that the best BDFLs are skeptical of their own power.

knighthack|1 year ago

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.

saghm|1 year ago

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.

darby_nine|1 year ago

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.

Of course this won't happen, but a man can dream.

groby_b|1 year ago

The only people worth having in power are the ones that don't want the power.

This extends well beyond OSS projects.

carapace|1 year ago

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.

riwsky|1 year ago

Remember when they tried to king George Washington?

dondraper36|1 year ago

rsc, thank you very much for all the hard work on the language that brought me into software engineering.

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

> 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.

Thaxll|1 year ago

RSC has a really good blog: https://research.swtch.com/

furyofantares|1 year ago

This is the first time I'm noticing that rsc would be an initialism for the blog.

jjice|1 year ago

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.

klartd|1 year ago

Thanks for all the Go contributions!

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.

rtpg|1 year ago

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.

rob74|1 year ago

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).

simonz05|1 year ago

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.

Thanks Russ.

zmj|1 year ago

Thanks Russ! Putting tooling on a first-class basis was revolutionary, and it's still Go's standout feature.

nasretdinov|1 year ago

Russ gave us proper vendoring and generics: two things I thought I'd never see in Go... Thanks a lot for the effort!

bruckie|1 year ago

Ian Lance Taylor did a lot of the work on generics, too. Thanks to both, and the rest of the team!

valyala|1 year ago

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.

[1] https://go.dev/blog/type-inference

purpleidea|1 year ago

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.

I'm certainly thankful for golang as it made my https://github.com/purpleidea/mgmt/ project possible!

Thanks Russ!

p1necone|1 year ago

> 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.

dblohm7|1 year ago

> Adding generics was too much

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

> 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.

arp242|1 year ago

> 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.

skywhopper|1 year ago

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!

hgyjnbdet|1 year ago

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?

arp242|1 year ago

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).

bufo|1 year ago

Because Go has massive traction both inside and outside of Google, whereas Dart/Flutter never got big traction.

euroderf|1 year ago

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.

tedunangst|1 year ago

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.

nu11ptr|1 year ago

> Google can't be trusted in related to Dart/Flutter which are soon to be abandoned

source?

meling|1 year ago

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.

declan_roberts|1 year ago

There are features of the Go toolchain that I consider to be a requirement in all future languages.

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.

throwawaygo|1 year ago

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.

calini|1 year ago

Thank you for making my career more enjoyable and productive, rsc! Go is a lovely ecosystem and I'm looking forward to see where it will Go :).

chmike|1 year ago

humor: I wonder if the upvotes are cheerings that he finally stepped down or a respectful salute. I give my respectful salute.

Go is awesome and I hope it will continue to progress in that direction. Thank you Russ Cox

wejick|1 year ago

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.

MaiVa|1 year ago

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.

hankman86|1 year ago

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.

randomdata|1 year ago

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.

jeffrallen|1 year ago

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.

weinzierl|1 year ago

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?

remus|1 year ago

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.

barsonme|1 year ago

It was not supposed to /universally/ replace C++.

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

One guy that did ML in Google told me that Google indeed tried to use Go for ML problems, then realized it's too slow and went back to C++ there.

amiga386|1 year ago

    thanksStr := "thank you rsc"
    ret, err := sayThanks(thanksStr)
    if err != nil {
        return nil, err
    }
    return ret, nil

cocok|1 year ago

Can anyone familiar with Go explain why not

  return sayThanks(thanksStr)
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.

glii|1 year ago

Don't forget the context string so you can "unwind the stack" from the error message:

  return nil, fmt.Errorf("expressing gratitude: %w", err)

fliter|1 year ago

Go has become a very mainstream language, giving software development a new look.

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.

philosopher1234|1 year ago

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.

rsc|1 year ago

Happy to hear that. Still going to write and think. :-)

xyst|1 year ago

I think the only reason I used go at some point was because of Russ Cox. Have joined the dark side and switched to rust ;).

Wonder what he’s going to do next? Maybe just moving around within G? or another OSS project within G?

dochtman|1 year ago

The post actually contains some references to what he’s working on next, some kind of LLM agent to facilitate software development processes?

hu3|1 year ago

Go changed the way I think about concurrency.

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

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!

iJohnDoe|1 year ago

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.

septune|1 year ago

Thanks Russ and infinite kudos to you

DLA|1 year ago

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!

shoggouth|1 year ago

Thanks for working to create such a great language!

denysvitali|1 year ago

Thank you for all your work Russ!

999900000999|1 year ago

Thank you.

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 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

er, try asking chatgpt to create them for you.

38|1 year ago

> I was able to create a small mobile app with Chat GPT without any real experience in Golang.

so you didn't really create it then did you? ChatGpt created it for you.

rollulus|1 year ago

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.

keybored|1 year ago

[deleted]

oneepic|1 year ago

Certain people take their job seriously. You can judge that however you want, but they exist.

jgowdy|1 year ago

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.

liveoneggs|1 year ago

golang's priority is "works inside of google" and everything else tends to be a bit of a fight

jgowdy|1 year ago

Here are some citations since people seem to be just downvoting because they don't like the message:

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