Live data from Hacker News

A nice picture of (dependency) hell

disfunksioneel.blogspot.com

21–25 of 25 posts

Re: A nice picture of (dependency) hell

#21
post #3

When dependencies are shown on the rim of the circle, most of the area is used by the circle. You might want to try to do some automatic force-based layouting instead for the most dependent-on packages would be easier to see.

I am doing something like that. Look at the zoomed in graph, there you will see the more connected packages are further away from the rim.

Maybe I can give more connected packages a larger angle to occupy?

Re: A nice picture of (dependency) hell

#22

Meanwhile, over in Windows land, I'm trying to remember when I last encountered DLL hell. It's a long time ago now. People simply stopped trying to install DLLs in the system directories and just ship all their dependencies. With the amount of RAM available now, it doesn't matter if you load 100 different versions of a shared library, you're not gonna notice the difference anyway.

In that case, you can link as well everything statically. That's what one of my open source projects is about. [1]

Linking everything statically works usually quite well, except if you use libraries that make some assumptions about being dynamically linked (e.g. GTK+).

The benefit is that you have one big EXE file for which you don't even need an installer. Also, it is usually smaller than the previous bunch of DLLs because static linking omits code that won't be called anyway. You can even run an EXE packer [2] on your result, making it even small and easier to deploy. The total memory usage, however, stays the same, of course.

The downside is that you need a good build system for that.

[1] http://mingw-cross-env.nongnu.org/

[2] http://upx.sourceforge.net/

Re: A nice picture of (dependency) hell

#23

Meanwhile, over in Windows land, I'm trying to remember when I last encountered DLL hell. It's a long time ago now. People simply stopped trying to install DLLs in the system directories and just ship all their dependencies. With the amount of RAM available now, it doesn't matter if you load 100 different versions of a shared library, you're not gonna notice the difference anyway.

What happens when someone finds a buffer overflow in that library? In Linux land only one file needs to be updated.

But the inverse is also true. New bugs are automatically distributed to every consumer of the library.

Re: A nice picture of (dependency) hell

#24
Is there a single package at the center of this chart that requires every single other package to be installed (either directly or via sub-dependencies)? If not, what does the most complex version of that chart look like?

My assumption is that this is multiple dependency networks being displayed but that the networks are not all interdependent - eg: dev/ruby does not require dev/perl or vice versa.

It's an interesting exercise, but it needs justification to define it as representing "dependency hell" and not just a visualization of a complex system.

Also, to be read in a Crocodile Dundee voice, that's not a dependency, this is a dependency: http://thedailywtf.com/Articles/Enterprise-Dependency-The-Ne...

Re: A nice picture of (dependency) hell

#25
post #8

Meanwhile, over in Windows land, I'm trying to remember when I last encountered DLL hell. It's a long time ago now. People simply stopped trying to install DLLs in the system directories and just ship all their dependencies. With the amount of RAM available now, it doesn't matter if you load 100 different versions of a shared library, you're not gonna notice the difference anyway.

In my opinion, that's the very definition of dependency hell - when the system is so badly designed, software is forced to bundle everything and never share it.

On the contrary, bundling in your dependencies is the very definition of good, user-centric design.

Disk space has now become so cheap that there's really no tenable excuse for shipping your software with "some assembly required" and "batteries not included" labels. Which is why pretty much every major platform has quit doing it. The lone holdouts are linux distributions. And even they betray their implicit agreement that it's bad design when they resort to employing ungainly feats of contortionism known as "package management systems" in an effort to duct tape over the problem.

Post reply on HN