It’s time for the maintainers of a Linux distribution to give serious thought to dropping “developers’” packages once and for all.
Back In The Days, when processor speeds were a few tens of megahertz, hard disk sizes were a few hundred megabytes and Internet connections were by dial-up, there was a genuine need to conserve CPU cycles and disk space. So the fledgling Linux distributions provided pre-compiled binary packages containing only files essential for day-to-day running. If you wanted to compile another package yourself from Source Code to work with an existing package, you had to download a separate developer’s package. If you were playing about with Linux at all, you generally knew what you were doing.
That made perfect sense in that environment.
Today, things are different. Processor speeds are in gigahertz. Hard disk space is approaching the terabyte boundary. Two megabits a second is considered a slow Internet connection. And Linux is not the sole preserve of geeks anymore. Most people have plenty of room on their disks for the development files — and enough bandwidth not to notice downloading them.
And most people wouldn’t understand that when some package foo that they are trying to build says it requires package bar to be installed, what it really means is that it requires package bar-dev (or bar-devel, if you come from RPM-land; in which case, arguably, you’ll be more likely than a .deb user to have to build something from Source Code) to be installed. Because if you had compiled bar from Source, as well as the main executable, some other files would have been created; which are not necessary just to run bar, but are necessary if you want to compile something else that works with it. Such as foo.
And those nice people in charge at your favourite Linux distribution separated out the files generated by compiling bar into two packages: one for everyday use, and one just for developers. Because once upon a time, you probably would have been on a dial-up connection and not had much disk space to spare; and if all you wanted with bar was to run it, then that would actually have been a thoughtful gesture. After all, if you really wanted to get your hands dirty playing about developing stuff, then you’d already know you had to download the developers’ files.
Today, it’s anything but helpful. Splitting off -dev packages creates a highly counter-intuitive situation. Almost everyone, at some stage, is going to have to compile a package from Source Code. Having separate -dev files serves only to make it unnecessarily hard for you to do that.
Because compiling from Source Code is not hard. No harder than, say, peeling your own potatoes and cutting them up into chips, as opposed to taking a bag of chips out of the freezer. Of course, if the supermarkets who sell ready-cut chips hide the potato peelers away from the other kitchen utensils where you might logically expect them to be, then they’re making it hard.