Jeff Duntemann's Contrapositive Diary Rotating Header Image

How Necessary Is Windows? Part 5: Crossover

There have been several attempts down the years to make Windows unnecessary. The most audacious is doubtless ReactOS, which cuts to the heart of things and wants to be a complete Windows XP-compatible OS. Needless to say, this is no small project and will take a long time to complete; right now, I’d call it somewhere between completely useless and intriguingly experimental. (It runs Skype, at least.) I’m also concerned that if they ever do get it anywhere near useful completion, Microsoft will stomp on it hard.

That’s certainly the high road. But how necessary is it to clone the whole damned OS? A Windows app, after all, is just a block of x86 machine code that makes calls into one or more APIs. If you can clone the APIs in an acceptably clean-room manner, you don’t need to duplicate the entire architecture, kernel and all.

And that brings us to one of the oldest and oddest ongoing projects in open-source computing: Wine, begun in 1993 by Bob Amstadt and Eric Youngdale. Wine provides a compatibility layer consisting of clean-room DLLs implementing the Win32 APIs, plus whatever magic is necessary to make the deeper host OS machinery look like Windows to the app. This is easier than implementing a whole OS, with the further advantage that if done properly, Wine can act as a Windows compatibility layer over several Unix-like OSes, rather than only Linux. Currently, Wine can operate over Linux, Mac OS X, FreeBSD Unix, and x86 Solaris.

After 16 years of dogged work, Wine actually works pretty well. Part of its success is due to a remarkable cooperation between the Wine project and a commercial software house in St. Paul named Codeweavers. Codeweavers sells a $40 deployment/management utility for Wine called Crossover, which basically makes Wine noob-friendly. (Naked Wine is pretty stark.) Codeweavers also tweaks Wine itself to improve app compatibility, and contributes those tweaks back to the Wine project under LGPL. Some financial support is also provided to the otherwise volunteer-based Wine project. Wine’s founder, Alexandre Julliard, is an employee of Codeweavers, where he works full-time on Wine development.

Codeweavers focuses mostly on big-market apps like Microsoft Office, and doesn’t officially support apps beyond a relatively short list of “gold” software. However, I’ve found that a great many Windows apps install and run just fine under Crossover whether they’re on the list or not. InDesign 2.0 is listed on the site as “known not to work” but apart from a minor display glitch, it seems to work as always. (I haven’t tested it deeply so far.) Most Microsoft apps work beautifully (especially older ones) and I’ve been using Office 2000 and Visio 2000 under it without incident since last fall.

Wine implements a sort of runtime environment emulation for Windows called a “bottle.” More than one bottle may be created on a single host OS, and each bottle has its own emulated C: drive and Registry. By giving each Windows app its own bottle under Wine, apps are prevented from interfering with one another in the dreaded “DLL Hell” effect. Because it’s not a VM, the performance hit for running Wine/Crossover is very small, and most important, you do not need to have a legal copy of Windows running in the VM. On the other hand, a bottle looks enough like Windows to be infectable by Windows malware, though one bottle probably can’t infect other bottles on a Linux system, or the underlying system itself. (From what I’ve heard, the low-level system tricks played by many malware packages keep them from running or at least running completely.) There are known conflicts between WGA and Wine, so don’t install WGA if you can avoid it.

Bottom line: If Wine supports all the Windows apps you absolutely must use, you do not need Windows at all. I haven’t tested all the Windows packages that I use here (next up is MapPoint 2004) but for Office and Visio 2000 it’s been nothing short of magical, and I’m guessing InDesign will come along eventually. In a mature software market, time works in our favor: One by one, existing apps will be installable under Wine, and each time that happens, Windows slips a little bit deeper beneath the waters of irrelevance.

Next up: For the hard cases, there’s always virtualization.

11 Comments

  1. Brook Monroe says:

    Okay. We get it. You don’t like Windows. I just don’t understand why the tone has shifted to that of a crusade.

    1. Okay. Simple answer in short sentences: WPA. WGA. WAT. “The Customer Is the Enemy.” Kill switch.

      I could go on…but I think that’s a sufficient answer.

      1. Tom R. says:

        Jeff, Those are the best reasons I can think of. I STILL wonder what will happen after next year if I have to repair or upgrade the one computer I have here with XP on it — will activation still be possible? If Microsoft decides NOT to continue providing activation what happens then? I think that might end up making some lawyer very rich if they refuse to activate something you bought. Of course the Lawyers are the only ones that will really make any money out of that kind of argument — and they will make it on both sides.

  2. […] How Necessary Is Windows? Part 5: Crossover After 16 years of dogged work, Wine actually works pretty well. Part of its success is due to a remarkable cooperation between the Wine project and a commercial software house in St. Paul named Codeweavers. […]

  3. Tony Kyle says:

    Between WGA and WPA, and Vista, I’ve switched to OS X. Professionally I’m still tied to Windows as a web developer. Personally though I give my money to people who make me happy with my computing experience. 🙂

    Microsoft seems to think we are out to screw them from the get-go. That is old news. Been that way for a LONG LONG time. Now they have the tools to put the screws to us and we need to let Microsoft know we don’t like it. Just like the dongles of the late 80’s, there are ways to deal with customers and ways to deal with thieves. Don’t confuse the two classes and don’t turn your customers in to thieves or worse. 🙂

    Take care,

  4. Carrington Dixon says:

    I wonder about ReactOS. Is it even possible to be binary-compatible down to the driver level without also being susceptible to, at least, some of the Windows malware? Many folks claim that Windows is insecure at the design level. So where does that leave any OS that copies the design?

    1. Tony Kyle says:

      With a broken design and a frequent patch and release cycle? 🙂

    2. Keith Dick says:

      I haven’t attempted to study it, but I think it could be that the security problems with Windows come not from the design of its application programming interface, but from the design of the code intended to implement that interface. If so, then, at least theoretically, it would be possible to design a new implementation of that application programming interface that does not have the security problems.

      I don’t know whether the ReactOS folks’ goal is to correct the Windows security problems. ReactOS might just be aimed at providing an open source implementation of Windows for other reasons.

      Of course, if the security problems of Windows are due to an application programming interface that has security problems inherent in its design, a reimplementation of it would retain those security problems.

    3. This is a good point, but it’s kind of an imponderable. Outside of malware that has to be launched via social engineering, the key is exploits in the code itself, especially buffer overflows. ReactOS doubtless has its share of those, but they’re not in the same places…and hence are unlikely to be exploited in any serious way. I’ve often wondered if an OS written entirely in Pascal would have the same number of exploits as one written with heavy use of clib and its dark halo of unbounded string functions, but that’s another imponderable. I’ll go out on a limb and predict that ReactOS will have its own share of exploitable codefarts, but for the most part, people won’t care, and the black hats won’t bother to use them. Scarcity has its benefits in this business.

  5. Ron Standage says:

    Hi Jeff,

    I noticed that your posting has been copied verbatim to a website linked to on Linux Today. Did you authorize this! I am bothered by this sort of thing.

    Regards,
    Ron

    1. I didn’t approve it but I don’t mind, really–I wrote it to be read by as many people as possible, and I’m certainly not expecting to make any money at it. So I’m actually glad people are picking up the text–it’s a perspective I’d like to see become more generally known.

Leave a Reply

Your email address will not be published. Required fields are marked *