Hacker News new | ask | show | jobs
by vincent-manis 1021 days ago
I'm with Andrew Tanenbaum, who said, “It is sometimes said [Unix] Version 7 was not only an improvement over all its predecessors, but also over all its successors.” I got my start with V6, and I understood it thoroughly. There are large parts of my current driver, Debian Bookworm, that I only vaguely understand. Now nobody is trying to prevent me from understanding them (hello, Microsoft and Apple!), but there is no actual roadmap to the system.

So, yes, Debian is far more complicated than I need or want. I have pondered on building my personal Linux system, using say Alpine or Void Linux, but that is work that seems unnecessary to me. Better off just to use Debian as it is.

And, by the way, this bloat isn't just due to the distros. I build Emacs from source, and you should see the bizarre dependency set it needs, many of which have nothing to do with anything I use Emacs for. I have both GTK and Qt libraries on my systems. TeX Live's distribution media would fill up 20 IBM 2314 disk storage devices (circa 1970), each containing 8 washing-machine-sized disk drives (plus a spare). Install an application, and you might find yourself installing (different versions of) Perl, Python, and/or Ruby. It goes on and on.

I have felt for a long time that dependency management is one of the big unsolved problems of software engineering. It's not surprising that the resulting systems have the appearance (and texture) of big balls of mud.

1 comments

There's really no explanation of Emacs' dependencies? Has no one bothered to write one?
Well, none that I've seen. Some of them make perfect sense (e.g., image processing libraries, etc), while others show up as recursive dependencies.

In my experience, people don't write up lists of dependencies, especially since some are recursive. Instead, they look at the available tools and libraries, determining which are useful for their purposes.

I'm not picking on Emacs (though its earlier icon as an overflowing kitchen sink gives a clue). This is a phenomenon of lots of software. If I want to use Asciidoctor-pdf, I must install Ruby, for example. The very fact that we have a wide variety of tools, languages, and libraries guarantees this sort of explosion. I'm as guilty as anyone of this, as my preferred language is Scheme. So if you want my programs, you have to install a compatible Scheme system.

My real point here is that, given our understanding of dependencies, this sort of explosion is inevitable. So if I had a perfect, svelte Linux system, it would start picking up cruft almost from the moment it was created. That's just where we're at.