Hacker News new | past | comments | ask | show | jobs | submit login

Linking everything statically is not always an advantage...



You're right. Let's put it in a docker image instead, and ship shared libraries that way.


In this case it actually is.

Imagine the nightmare of having to hunt tens of shared libraries versions, and even have to re-build them and patch them with the correct version of the language/apis so that they continue to work.


How does that square? I mean, I have one copy of a shared library on any of my machines. I don't even necessarily know off the top of my head what of the Go tools my developers found bloggable enough to want in the stack that might be impacted by this bug. (Or rather, I do, but that's because it's my job, and I'm actually good at my job. I don't have the same high hopes with regards to most other infrastructure folks I've worked with.)


>How does that square? I mean, I have one copy of a shared library on any of my machines.

That's all well and good, but that's just you. Real systems often get messed with multiple copies/versions of shared libraries. Also known as dll-hell in Windows. In Java land you could easily end up with 20 versions of some jars just as easily, all installed locally by maven and needed by this or that lib/framework/etc.

>Or rather, I do, but that's because it's my job, and I'm actually good at my job.

Citation needed.


I haven't seen that on a decently-maintained Linux system--certainly not any I'd call a "real system"--in a really long time, unless they're side-by-side packages from the OS.


What "Linux system"? We're not talking about your distro userland packages here.

We're talking about businesses deploying multiple server apps and such. Neither Java nor .NET shops for example rely on "OS packages" for their server dependencies when it comes to Jars, dlls, etc.


Yes, actually, I was talking about distro userland packages, but whatever. If you're deploying a Java application, everything should be coming out of Maven (and thus avoid any sort of shared library hell) in the first place, no?


>Yes, actually, I was talking about distro userland packages, but whatever.

Then you were off topic, since we were discussing Golang packages for deployment, which aren't userland packages either. But whatever.

>If you're deploying a Java application, everything should be coming out of Maven (and thus avoid any sort of shared library hell) in the first place, no?

You still get multiple copies of jars. And you still need to replace them. And you still might have older projects that need particular versions of a jar that you need to update somehow in case such a long-reaching issue is discovered (and upstream might not do that at all).


[flagged]


> As an aside, do you have any idea how pretentious you come across?

No personal attacks on HN, please. This comment would be fine without that last sentence.


> You simply need to rebuild whatever binaries you run

"Stack", not "app". That includes, say, Docker. Or nsq. Which are packaged by the operating system (because, as noted in a reply to `tptacek, paying me to build out what they get from the operating system is generally not something a client is going to want to do). And which will not be updated as conscientiously as I can expect a core library on my system to be updated.

> As an aside, do you have any idea how pretentious you come across?

Pretension, frustration, whichever. My low opinion of Go aside, it's my job to deal with the details of my clients' stacks, make a coherent experience for their developers, and deal with the system-level security concerns they don't think about. If getting annoyed that Go and its community make my life suck a little bit more in ways it need not suck is pretension, I'm really gonna be okay with that. I mean, jeez, it's 2016. "Rebuild the entire world when a mouse farts" is fragile, dangerous garbage that puts the lie to the idea of "engineering" in this profession. We should be better than this. (And Go's first iteration, lovingly called Java 1.4, was. We're going backwards.)


`go build -a` rebuilds all packages (i.e. those already cached under $GOPATH/pkg/ or /vendor).

Alternatively you can just rm -rf your `$GOPATH/pkg` directory.


I can't understand why someone making a statement like that ("bloggable..") which is untrue can be upvoted while you're downvoted. Worse, he even bragged about being an excellent engineer who knows everything there is to know when he clearly doesn't in this case.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: