Tuesday, December 7

Windows (III): Packaging & nitpicks

(This is a part of a series of posts on my recent experience with Windows; see Windows (I)  and Windows (II): User Interface.)

Every GNU/Linux desktop distribution hangs on a package management system as a foundation, and as a result the packaging systems are quite advanced, while Windows is stuck with those pesky installation wizards. There have been several stabs to implement a package system for Windows (see here), but none seem to have caught on.

There are three main disadvantages on not having good package management: tedium of manual installation, no dependency resolution and no system-wide automatic updates. In practice they are less important than it might seem. Installation wizards are indeed tedious, but in terms of time I found them to be quick enough to get through. Moreover, apps tend to be less specialized and more encompassing than Linux utilities, and as a result you do not need to install as many things as in Linux. For the same reason dependency resolution is not as important: there are few dependencies in general. As for automatic updates, most high-profile apps have integrated mechanisms to deal with that, however, I found that those mechanisms tended to result in nagging the user with messages. After a while I started ignoring the update notifications. I suspect that happens to many users.

The one thing that Windows has going for it is simplicity. You download installation binaries and you run them, and that's it. Linux package systems tend to be very complicated, and if (when) they break, you will need serious sysadmin chops to deal with the problem. Also installing specific versions (either older ones, or newer ones not yet available in the distro) of specific apps/libraries can be unnecessarily complicated, and the dependency graph limits your actions. In my experience, Windows does well enough without all this complexity as long as you don't reinstall your system too often.

As for the other complaints, I frequently run into the restriction of moving/editing files opened by another application. Coming from Linux, that one is stupidly annoying. Furthermore, it is frustrating not to be able to move inactive (or stuck) background windows. I really miss my unified filesystem namespace. Also there's quite a bit of nagging in general on Windows which I would rather do without. In the end, these are not dealbreakers though.

In my next (and probably final) post I will discuss software development on Windows.

5 comments:

Tobias said...

Since there is no package manager for Windows, one can use FileHippo's Update Checker or Secunia's PSI (http://secunia.com/vulnerability_scanning/personal/) to keep software up-to-date. PSI has a huge software database, this really helps to keep everything patched...

Gintautas Miliauskas said...

Indeed, I had in mind but did not mention the security implications of not having reliable updates. At least Windows itself has a reasonably good update system, even if it messes up occasionally. Thanks for the pointers.

Anonymous said...

maintaining one windows computer is not a problem; maintaining a windows network, on the other hand ....

Marco said...

Dependency resolution is not important in Windows cause every 'not trivial' application comes with all the libraries he needs.
You can do the same in Linux too, if you like nightmares.

Gintautas Miliauskas said...

@Anonymous, I completely agree. Personal desktops tend to be individualized and the Windows approach works better there, but it's a huge pain on servers and managed networks.

@Marco, sure. I'm starting to think that packaging libraries with apps is better than using shared libraries. The extra bandwidth needed and RAM used may well be worth the convenience.