Google's major Go projects appear to be gVisor, Android GPGPU debugger, Fucshia's TCP/IP stack and volume management tools and the download server as it was done by the Go team.
https://commandcenter.blogspot.com/2012/06/less-is-exponenti...
"In this talk we explore the devastating effects using object oriented antipatterns in go while building programs in a monorepo. ... Unknown to most, Kubernetes was originally written in Java. If you have ever looked at the source code, or vendored a library you probably have already noticed a fair amount of factory patterns and singletons littered throughout the code base. "
So basically writing Java in Go lead to clusterfuck codebase.
Most of the codebase problems in Kube are:
1. we depended on half the Go ecosystem at one point (docker, grpc, etcd, a few others) which is hard to do with dependencies in go (few standardized libraries)
2. performance of serialization mattered and JSON and protobuf were still raw at the time
I don't think Kubernetes is any worse than any other large (3M+ LOC), relatively young codebase I've seen on average.
They are not scalable for Google scale and are not maintainable at google scale.
That's why Google C++ guidelines basically disallow everything that is problematic in C++ and enforce a style guide to
> Avoid surprising or dangerous constructs. C++ has features that are more surprising or dangerous than one might think at a glance
> Avoid constructs that our average C++ programmer would find tricky or hard to maintain. C++ has features that may not be generally appropriate because of the complexity they introduce to the code
> Be mindful of our scale. With a codebase of 100+ million lines and thousands of engineers, some mistakes and simplifications for one engineer can become costly for many.
I was replying to
> However, as you start pushing beyond "scale" Go is designed for
Go is designed for Google scale, I don't know anybody pushing beyond Google scale right now.
Anyway, I'm a nice person, you'll find your answer below
Enjoy
----------------
most of those projects are legacy software
did you expect search to be written in a language invented 10 years in the future?
Go is slowly replacing C++ to write the tooling.
C++ is simply not scalable enough for day by day use, Linus knew that 15 years ago.
Even Firefox is replacing it for its engine, it must mean something.
It can be done in C++ doesn't mean it should anymore.
Java is there because it runs in ads systems, you don't replace your core product overnight, just like in some banks you still find Cobol.
Java is the new Cobol.
Fuchsia is written mainly in C and Dart.
You wanna write an Haiku style microkernel?
C++ is fine, it's just a few thousands line of code.
Wanna write millions lines of code in a maintainable way at Google scale?
You don't start the project in C++ today, unless you're a crazy person.
Even ES5 Javascript is more maintainable than C++.
Like Google scale?
That's what Go is designed for.