Schlaffer couldn’t be more wrong.
Andrew Kantor of USA Today says that “Linux isn’t just for geeks” but I beg to differ for one reason. Near the end of his post he talks about something that is completely alien to a Windows user, repositories and dependencies.
That’s not really true, and it’s true. Windows has a mess of dependeny troubles. People are all the time talking about DLL Hell, the situation where programs depend on DLLs and other programs and you have to chase them down. It also appears when you install a new program and one or more old ones quit working. Typically, one program replaced a DLL somewhere that was being used by some other application, and the old one is broken.
That’s what dependencies are. An upgrade to one breaks another, or one won’t work without the other present, or there are two programs that you can’t have installed on the same computer at the same time.
Also, removing one program can result in some DLLs or other files being removed that are needed by some other program. You delete program A and lose programs B and C Because that is such a big problem, the uninstallers tend to err on the side of caution and leave junk rather than remove something that might be needed.
The problem is that Microsoft has no way to manage dependencies. They abdicated responsibility for that, and left it up to the the software providers to provide their own installers that follow the windows guidelines. They don’t enforce it, and the programs don’t look after each other. DLL hell is well-known to developers, and users only know about it because they get the ill effects.
So you already have dependencies. They’re just not managed.
So lets talk about repositories. In Microsoft, you have to find and then buy or download every app you want. They all come from different places. You are forever hunting down CDs so you can do the sway-and-wait two-step, and then you get to do the same thing with downloads, clicking to download, click to allow installing, click to agree to where it will be installed, switch to the next web page. It’s more work than any Ubuntu or Debian user would put up with.
In linux there are tens of thousands of free software titles. Because there is a package manager, and software is free, it is not such a big deal to gather the software all up on one big server somewhere (and mirror it to hundreds of others). If the package manager knows you need java, and some graphical whiz-bang magic, and maybe some crazy web service stuff, it knows where to get them. The software comes from the repository. All the software comes from the repository. Well, almost. “Shopping for software” isn’t a series of web searches — it’s all in one place! It’s not a trek to the local Best Buy, CompUsa, etc, — it is online. You don’t have to write a check or anything. There is more free software than you will use in this lifetime, and more every month. And it’s fresh, piping-hot stuff with all the latest security patches. That’s what a repository means: other people find it and put it all in one big pile, and you use a very simple program to pick what you want.
You don’t run installers anymore. The package manager does it. You don’t search for software anymore, the package manager does it. You don’t run installers and cleaners, the package manager does it. Your dependencies are no longer a problem. They have software to do that now.
“Judging by a comment in an article written earlier this year about Cinelerra: “…installation is simple: I add the correct Cinelerra repository for my CPU, along with the Debian Multimedia repository, to my /etc/apt/sources.list file, then update and install Cinelerra.”
Yeah, okay… what? I don’t even care to understand what that means… why can’t I just install an executable or msi file and be done with it. Linux doesn’t work that way which is why it will never be ready for Joe Schmo user, not that Windows is easy for some people either but come on… I want double click installation files where I can click “Next, Next, Okay, Finish.”
Remember when I told you what repositories are? Well, there are some special repositories that some people put together for special purposes. If you want something special like this Cinelerra thing (and probably you don’t) then you add the URL of the repository to your list of standard repositories. It’s a thing you can do with a GUI program or you can edit the file because it’s text. In linux, we don’t have long, painful, weird registry paths and secret configuration foo and bizarre commands to do these things. In Linux configuration is typically in well-documented, human-readable, human-changeable text files tucked away in a special place where any sufficiently geeky user can modify them (given that they have the right password). You don’t need to care. You don’t need to add repositories.
If you know what cinelerra is, then you can probably follow the instructions. Joe Schmo has it easy, but if you happen to be Joe Geek, you can do a lot more stuff as our friend was able to do. Some people want to do more than run Debian’s measly standard 15K free software titles. You can probably make do with that “starter kit”. But if you want something special, there is probably another repository. You add it to the list, you install the code. It’s not magic.
Then there’s this:
Let’s try the Windows way. Say you want to install Limewire or Frostwire and have no idea what Java is or don’t know that Java is required for the program, during the installation, Frostwire/Limewire will pause installing, download Java, install it and configure it for use without you having to do a single solitary thing except click “OK” and “Next.” Linux needs to learn to do things that way or it will never be ready for… 90% of the population.
That’s funny. It’s not the windows way, it’s the Linux way. It just happens that your Limewire and Frostwire people have enough experience that they understood what really needed to be done. This description is exactly what the dependency manager will do for you, and without pausing. And all with a single program instead of whatever installer-doohicky the software team decided to go with this week. It will determine that you need java, and it will know whether there will be a problem with other applications if you install it. It will determine whether you need any other shared modules too. It will install them without effort and trouble, all in one smooth little batch. All you have to do is pick the app you want (or all the apps you want) and click a button to install them. Synaptic is a very nice program, check the first two screenshots at the synaptic page. Admittedly, the color selection in the screenshot is awful. Mine is a lot cuter. How it works is that you just check the stuff you want, you tell it to go (”apply” button). Very easy. And in linux you get multiple desktops so you can switch over to your tetris game in a flash and ignore the installer.
… and you don’t have to reboot. Applications can be installed in Linux without crashing your box (Linux folks tend to never reboot their machines unless they install a new piece of hardware or a new linux kernel, which is rare enough, or if they are taking a linux laptop on the road and want to conserve heat and battery).
In the Windows case, though, it is up to each installer to do the right thing. In the Linux (Debian/Ubuntu) case, it’s not just installing limewire or frostwire, it is every single program on your system. Every program you install gets the same careful installation and you avoid a world of problems. And the undelete will work correctly too.
If you want to eliminate the pain of searching for software, installing it, uninstalling it, and you don’t want to mess with all the due diligence necessary to avoid messing up your computer then you want the Linux repository/dependency system, and not the ad-hoc chaos and human effort of the windows way. And now you know that.