Go is pretty established. By the time this module change was made, a huge swath of the cloud ecosystem had been written in Go, including core components like Docker, Kubernetes, Terraform, etc. It’s also the default language for which Terraform and Kubernetes extensions are written, as well as the default language for container infrastructure (i.e., container runtimes, etc).
I think Python’s packaging story is a bummer in part because Python leans so hard on C which doesn’t have a standard build system or a sane approach to building or packaging.
Sure, and when it has been “pretty established” for a couple of decades, it’ll have a chance to have the community weight of important legacy projects that Python has.
This is a canned argument for any criticism of older programming languages.
First of all, it’s not much of a consolation to users that the packaging and performance are bad “because the language is old”, and secondly Python had already had half a dozen significant changes to its packaging format and ecosystem by the time it was Go’s age (distutils, cheeseshop/pypi, PEP241, setuptools, eggs, easy_install, etc).
Note that by this time, Python’s package management was far more complex than Go’s and it was also far more painful (and indeed, still is far more painful). Note that Go deprecated GOPATH when the language was already 9 years old, at a point when it was quite a lot older and more widely used than Python’s myriad package formats which are still supported today.
We can say “No fair! Go has the benefit of hindsight!” and true enough, but again as a user, I don’t much care—I just want the tool that’s going to solve my problem with the least headache.
And this isn’t even touching on the Python 2-3 saga, which began when Python 2 was merely 8 years old and lasted for more than a decade. If you want to argue that we should use the Python 1.0 release date for our comparison, then fine—call me in ~4 years if the Go ecosystem is on the precipice of a suite of breaking changes which constitute an existential crisis. My money says that wonky happen.
> This is a canned argument for any criticism of older programming languages
No, its a an argument that applies to the ease of making disruptive changes to languages with less legacy in the ecosystem (age is a factor, but not the only one; its also a reason why Ruby, which was a similar age with the disruptive 1.8 to 1.9 transition had an easier time than Python did with 2 -> 3).
It doesn't apply to all criticism, or even to “older languages” generally (at least not equally, though survivorship bias means it is likely at least somewhat applicable to older languages that it is interesting to discuss in the first place.)
Fair enough, but I don’t think we can argue that Go had considerably less “legacy” during its modules transition than Python had during its various package management iterations. I think Go is just quite a lot simpler than Python (or Ruby for that matter) especially in how it distributes software (just source code, minimal dependencies on C, etc) which makes package management a lot easier.
If Go is successful for any significant period of time, that will change.