Hacker News new | ask | show | jobs
by shkkmo 3143 days ago
Go's biggest issues still seems to be the lack of a standard mature dependency management system.
4 comments

Could it be a strange mindset of our time that we look to language ecosystems to provide this? What if we could manage dependencies without being locked into language?

Conda goes some way. Think of something like virtualenv, but not specific to python. I would be happier with something that had fewer features than conda, but where critical features were easier. Example: setting up a package server should be trivial.

I think we do not yet have the git of dependency systems, with the gravity to draw in the community and for people to regard it a solved problem. Maybe the most efficient route would be: find a way to get Linus pissed off about it.

How about Nix, could it be the 'virtualenv, but not specific to python' you mentioned? I've never used it, but from what I understand that would be an appropriate description of Nix.
I don't know why people are so upset about this. Go standardizes enough things about imports and package structure that you can completely solve dependency management in literally a shell script: https://github.com/holocm/golangvend (I'm using this productively for the Go apps that I develop at work).
the issue becomes that there are so many solutions out there that going from project to project becomes a pain.

Large projects use a litany of different tools like glide, dep, godeps, vndr, govendor, etc. that managing all of them is a pain.

What makes it worse is that Golang's official solution seems half-baked when compared with other solutions out there.

this is being addressed in dep, it's obviously not fully ready yet but works pretty well in my experience

https://github.com/golang/dep

Which is why I added the 'mature' qualifier.
Glide is great - it supported the most important feature I cared about, which was aliasing for forks where I had to fix bugs. "Standard" matters less because there's also no centrally-controlled repository of packages, unlike npm/maven/pip