Related link: http://www.oreillynet.com/pub/wlg/5369
In his latest blog post, Andy Oram discusses InstallShield’s presence at LinuxWorld and how their software is drawing interest from other commercial software vendors as a way to install their programs under Linux. I would argue that Linux already has a better solution, and that vendors would do better to do it “the Linux way” than try to shoehorn the flawed solution Windows users have to deal with.
InstallShield is supposed to solve the problem of program installation so that you simply run “setup.exe” in whatever form, it presents you with some “next” buttons to click, and the app is installed. Of course, if you want to update, you can’t use InstallShield for that. You either have to go to the company’s site and download updates (if you can, otherwise you have to run through a purchase form first, depending on the update), or in some cases you can use a custom proprietary update feature built into the program.
Of course, these update features are different for every application not just under the hood, but in look and feel. Symantec has their live update, MS wants you to open Internet Explorer and go to their website (or potentially download and upgrade things automatically in the background if you trust their patches won’t break anything). Of course, if you want to upgrade Office, you have to visit a totally different site than if you want to upgrade Windows itself. Most other vendors have an update program that falls somewhere in between Symantec and Microsoft.
What I don’t understand, is how is this easy? The end user has to learn a new update process for each vendor, and then either runs through the Windows installer to remove a program, or possibly uses an uninstaller the program provides.
For some time now, Linux has offered a much superior solution to this mess, something Windows simply can’t top, because vendors can’t cooperate. In case you haven’t tried this recently, here’s how it works:
If you talk to a Debian user for any period of time you will hear “apt-get install” this and “apt-get upgrade” that. For a long time Debian’s automatic dependency management with apt, coupled with the large package repository in Debian unstable (13,000 packages or so at the moment) meant you could use a simple command-line program and install and update basically any software you could want.
If any Windows users are scoffing now because I said “command line” and “simple” then just wait, I’ll get into the more “user friendly” solution in a bit.
Debian isn’t alone with its dependency management. Basically all modern Linux distributions have it, whether it’s SUSE, Redhat/Fedora with apt4rpm, yum, and up2date working together, Mandrake with urpmi, etc. All of this means the end user simply learns a single program, and manages any software they would want to install on the system with this program. What’s better, the user doesn’t have to go looking for the software. The package manager handles that. No more browsing downloads.com or [insert your favorite shareware repository]. You just run a program, tell it what to install, and it goes and gets it for you.
./configure && make && make install to install programs in Linux is obsolete for the desktop Linux user, and any of you old timers that are still telling newbies to install this way, shame on you! Heck, any of you who still tell people to install rpms by downloading the .rpm files and running rpm -Uvh *.rpm, shame on you too.
So, we have these command line applications, but if you want a GUI instead, Linux has those bases covered as well. SUSE’s installer already lets you browse through packages to install and update in a complete and simple graphical environment. Redhat/Fedora have Red Carpet, which you can combine with Open Carpet to install and upgrade almost any program you would want just by clicking one or two buttons. Debian provides synaptic, which works in much the same was as open carpet.
Basically in all of these cases, the end user has to learn a single program (that is easy to use as well) and if they want to install a program, they don’t have to find it on the web, download it, then run the executable. The user just finds the program in the list of available programs (or uses a simple search to narrow things down if they want), clicks it, and says “install this” and the program does all the heavy lifting. If the user wants to remove something, just choose the program, and click “remove” and the program is removed.
What’s better, when a user wants to upgrade all his software, he doesn’t have to track down the upgrade program for each application. Just click “upgrade” in the package manager and let it do the work.
The fact is, you simply couldn’t have this kind of functionality under Windows. Not because Windows programmers aren’t smart enough, just because the proprietary nature of the software, combined with the somewhat defensive nature Microsoft and its competitors often have, means you aren’t going to see the kind of collaboration and cooperation it would require to get this sort of solution working. At least not anytime soon.
Even if somehow all major Windows vendors and shareware authors did decide to collaborate, it would still be more complicated for the end user than Linux, because you wouldn’t be able to upgrade to Microsoft Office 2003 from Office 2000 with a click of a button. You would have to incorporate some kind of payment structure (possibly with passport) to automate the process.
In addition, these GUI package managers are getting better and easier to use every day. Adding an InstallShield to the mix would just throw a monkey wrench into the works, as you would have to run one program for your open source programs (the majority of your Linux software) then some other proprietary software that was installed with InstallShield, but doesn’t provide an integrated update tool.
In my humble opinion, if you are a vendor who wants to break into the Linux market with your software, take some time to learn the “Linux way” of installing software. I know the InstallShield paradigm is familiar and appealing, but in the long run the Linux way is a win for everyone.
How do you install and upgrade your Linux software? Your Windows software? Which do you think is easier?