(This is part of a series of posts on Why Linux?)
I’ve run a number of distros in my time. I ended up on Debian near the end of 1999, and part of the drive for that was the number of packages available in one centralised location. Decent package management is a definite strength of Linux (or FreeBSD) over proprietary operating systems. It derives from the freedom aspect, but means you can end up with one source for all (or most) of your software, that’s compiled against the same set of libraries, with one way to track what owns what.
This may not seem like a big thing, especially if you’re a hobbyist or are coming from a Windows background. Reinstalling is often seen as a necessary regular requirement. Personally I’ve got better things to do with my time. If I want to try out a piece of software I want to be able to install it safe in the knowledge I know exactly what files it owns and where there are. And I want it to be able to tell me what other common components it needs that I might not already have. Then if I decide it’s not for me I can cleanly remove it and anything else it pulled in that I no longer need.
Don’t underestimate this. This is useful on all of my machines. I can query the version number of everything installed. I can check for updates with one command (no need for every piece of installed software to have its own updater implementation). Software can share libraries correctly rather than stashing their own private copies, meaning I get bug fixes and security updates. (Yes, sometimes authors bundle even in the Linux world. Stop it.)
I’m a developer. I tend to interact with a lot of different systems, of different types. It’s really handy to have access to a wide range of tools to help me with that, know that there’s legally no problem with me installing them, be able to do so with a single command and, should they turn out to be unsuitable, know I can cleanly remove them with another single command. This is a definite win in the work context.
Equally I’ve been a sysadmin for multiple machines at once. Being able to login to each of them and check that everything is up to date is damn handy. Being able to easily install software for customers tends to make you popular too. And being able to rebuild boxes (or build additional boxes to share load) with the same setup is a lot easier with a decent package manager too.
And, to pre-empt any responses about how a lot of this is possible under, say, Windows, yes, it is. I’ve spent some time in the past building packages for commercial deployment using Novadigm’s Radia tool. I’m aware that Windows integral package management has also got better over time. I still think dpkg/apt (or rpm/yum) is far more powerful. And, for the end user, mostly easier as well - distros are building pre-prepared packages for you, rather than you having to do it yourself like with Radia.