Linux for Windows?

You'd almost think it was the ultimate goal of Linux-- to be able to run ELF and Windows binaries on the same O/S. "Lindows" does it. Now SuSe does it. And another new Linux distro, Xandros does it. Efforts by the WINE project and CodeWeavers are making this dream a reality. But here's a question I have: WHY???

Darkness at the End of the Tunnel

Let's imagine for a moment that the WINE project is complete and that Linux can natively run all manner of Windows applications. It's a roaring success-- achieving 100% compatibility, it becomes part of all the mainstream Linux distributions. There-- that's when Microsoft wins.

Huh? How's that? Waitaminute-- Microsoft loses if you don't need Windows to run Windows apps, right? No-- Linux loses because there will be less incentive to develop native Linux software. Worst case, the Linux application development community shrugs and starts learning Visual Studio and MFC. Because if Linux can run Windows apps, they might as well make Windows apps, since Windows certainly can't run Linux software. And if there's little to no development going on for Linux, then eventually people will realize that they might as well be running Windows for all their Windows software.

I consider it verging on treason for Linux users to be running WINE. Now with all due respect to the WINE team-- I hold those guys in the highest regard. Their kung foo is certainly better than mine. But wouldn't their talents be better spent developing the native Linux platform rather than enabling a Windows platform on top of Linux?

I just don't get it. For running Windows applications, there is a perfectly good O/S for doing that: Windows. I'd rather run Linux software on Linux. Instead of MS Office, I would run OpenOffice. Instead of WinAmp, I'd run XMMS. What are we trying to do? Propogate the Microsoft 'Office monopoly' on to the Linux platform? I realize that there are Windows apps out there that don't really have a decent equivalent for Linux. But developers should consider this an opportunity! Windows desktop software development has stagnated to a standstill. But for Linux, there are lots of gaps left to fill. Developers should stake a claim and make the best desktop Linux software they can.

Hindsight is 20/20

Let's consider history for a moment. Think back to 1994. In a bid to encourage Windows users to switch to the arguably better OS/2 operating system, IBM released OS/2 Warp 3.0. It was a bold, new OS/2 with the best Windows compatibility yet. You could start up Windows apps right on the OS/2 desktop. They even went a step further and released a version of OS/2 called "OS/2 for Windows" just to further confuse everyone. For the most part it delivered pretty well. It supported 16-bit and "Win32s" Windows applications by running them in a separate virtual machine, but the process was transparent enough to make it look seamless.

It was a technical triumph. Many Windows users tried OS/2 for the first time (ironically enough, I was one of them, but mainly used it for running DOS and Windows applications, which it did with style). But-- in the end, OS/2 was not served very well by it's Windows support. Windows95 and Windows NT 4.0 were soon released-- '95 was a dream for the consumer and naturally you couldn't run '95 applications on OS/2, so many of the new converts switched back. And Windows NT 4.0 brought the stability that many OS/2 users chose OS/2 to begin with. And naturally, you couldn't run Windows NT 4 applications on OS/2 either. Not to mention that these new versions of Windows ran Windows apps better than ever!

Had IBM put more effort into OS/2 itself as opposed to making it a funky kind of Windows shell, would OS/2 be better off today? Personally, I think it would. With OS/2 for Windows, IBM declared "if you can't beat 'em, join 'em." OS/2 developers heard that loud and clear and packed their bags for the Windows camp.

Let's not take Linux down that road. We've learned this lesson already-- even if WINE were to be 100% compatible with Windows today, tomorrow it would not be. That would translate into a very negative user experience for end-users and would give Linux a big black eye in the process. If I were heading up the Windows division of Microsoft, this would be my game plan: allow the API to stablize long enough for projects like WINE to support it. Then, without warning, introduce a new layer of APIs that can't so easily be replicated. New applications would require this new layer to function and thus be incompatible outside of Windows. Sounds a lot like what MS is in the process of doing with .NET. I'm starting to see more and more applications require that .NET be installed to operate.

Call to Action

I don't have any call to action about any of this. WINE and co. will continue, regardless of what I have to say. Hoards of people will run their Windows software on Linux, to the detriment of native Linux projects. Personally, I think if Microsoft wants their applications to run on Linux, they should port them. They don't deserve a free ride. Linux desperately needs native applications if it is going to survive. Don't give up on it please.

Options Abound

Cross-platform application development is a much saner approach to take than using a "cross-platform O/S". Here are a few choice development solutions for creating cross platform applications (alphabetically ordered):

  • Delphi / Kylix: C++ and ObjectPascal cross-platform development with one of the most polished IDE's you'll ever see (the 'Personal' Kylix edition is even free).
  • Java: Sun's "write-once-run-anywhere" (debatable, but mostly true) language/platform.
  • Metrowerks CodeWarrior: I haven't used it, but I hear it's pretty good.
  • Tcl/Tk: Open-source, mature language for creating GUI applications that will run on a variety of platforms.
  • WxWindows: Open-source GUI framework for cross-platform development.
  • XUL and XPCOM: XUL (pronounced zool, rhymes with cool) for interface definition, XPCOM for writing the native code components for different platforms. It's how Mozilla is built, so that's good enough for me.

Related Links

TrackBack

TrackBack URL for this entry:
http://bradchoate.com/mt/feedback/tb/434

Listed below are links to weblogs that reference Linux for Windows?:

» WINE: second glass from Jean-Philippe Leboeuf Notebook
An interesting point of view from Brad Choate about WINE, comparing one possible future of Linux + WINE to the misfortune of IBM OS/2 Warp + Microsoft Windows compatibility.... [Read More]

» WINE: second glass from Jean-Philippe Leboeuf Notebook
An interesting point of view from Brad Choate about WINE, comparing one possible future of Linux + WINE to the misfortune of IBM OS/2 Warp +  Microsoft Windows compatibility.... [Read More]

» WINE: second glass from Jean-Philippe Leboeuf Notebook
An interesting point of view from Brad Choate about WINE, comparing one possible future of Linux + WINE to the misfortune of IBM OS/2 Warp + Microsoft Windows compatibility.... [Read More]

5 Comments

I'm sure you know it already but OpenOffice.org already runs perfectly fine on Windows, Solaris, Linux (x86, PPC and even s/390). We only get about 20% of our downloads for Linux, well over 70% of our users are on Windows.

You can write cross platform solution based on the newly released OOo SDK as well. Advertising over.

I totally agree with you Brad, I have deep reservations about WINE myself even though I can understand why they're doing it.

Larry Israel said:

You have a good point, but I think you may be missing a few things.

1. Assuming WINE works, won't the Windows software be running in emulation and run slower than native software?

2. There is an existing case study: Virtual PC, which runs on a Mac, allowing the user to run the Windows or Linux OS. You don't hear about Mac users going out in droves and buying Office for Windows or much else to run under Windows. I think about the only reason people use it is when they have to. Mac users are not using Virtual PC a whole lot. Why would it be different for WINE?

3. MS Office will still cost money. OpenOffice and other open-source Linix software will be free.

Greg Graham said:

There are many Linux users who would love to be completely free of any Microsoft related software, but their circumstances require that they run some kind of Windows application. Many of them have to resort to a dual-boot situation, or they do like myself, and give up on Linux. WINE could allow these people to use Linux as their primary OS.

Brad Choate said:

Larry:

1. It may be somewhat slower, but not as slow as an emulator. WINE is one of those recursive acronyms, standing for "WINE Is Not an Emulator". WINE provides a Windows compatability layer than Windows applications run against.

2. I don't think you can compare WINE to Virtual PC that easily. WINE is more seamless than Virtual PC. And it's not an emulator. WINE doesn't cost anything (Virtual PC retails today for $219 - $249 US). And WINE is becoming a part of some Linux distributions where Virtual PC is a separate commercial product. And Mac users don't need to buy MS Office for Windows and run it on Virtual PC, they would buy the MacOS-native version of MS Office.

3. This isn't about commercial versus free. It's about the side-effects that the WINE project is going to have on Linux as a platform, Linux developers and Linux users. Consider:

For Linux software developers-- WINE's harmful effects: Linux users can run Windows applications on WINE, which means there isn't much frontier left on the Linux landscape. Commercial Linux companies now have to deal with competing with Windows products even though they weren't trying to in the first place. Linux developers have even fewer employment opportunities for Linux software development.

For Windows software developers-- WINE's helpful effects: without the need to target Linux specifically, the Windows developer can concentrate on Windows and let the Linux 'fringe' run his Windows apps if they want to. And now, without even trying, they're making money from Linux users too. Those proceeds go towards more Windows development instead of Linux. Developers have no reason to learn how to program for Linux.

For Linux users-- WINE's Harmful effects: instead of companies writing Linux versions of their software, they expect Linux users to run their Windows applications on WINE. It runs OK, but doesn't take full advantage of the Linux platform.

For Windows users-- WINE's helpful effects: With WINE in place, fewer companies will be wasting their time and dollars with distracting Linux development, which means more R&D and polish goes into Windows products.

For Linux as a platform-- WINE's harmful effects: WINE hurts the Linux platform by allowing Windows applications to run on Linux. It adds capability to Linux, but to the detriment of Linux itself. Companies may look to try out Linux with this support for Windows, but they find that their commercial software isn't supported by the manufacturer if it's running under Linux (and in some cases, doing so is in violation of the EULA).

For Windows as a platform-- WINE's helpful effects: WINE supports the Windows platform by allowing Windows applications to run on Linux.

Now, as a software developer, I'm all about solving problems. Because of that, I abhor "stop energy", but I think this is an important topic that needs to be thought about.

Patrick said:

Reading this, I just can't refrain myself from replying:

Just for the sake of argument, replace Linux with MyFavoriteFreeOS and replace Windows with SomeOtherCommercialOS. In this light, this discussion boils down to the fact that the free OS suffers from heavy competition of the commercial OS - all because most of the so-called 'popular applications' just don't run (well enough) on the free OS. This is not an issue of OS, it's an issue of (a lack of) platform-indendance of software.

I think the reason behind that issue is a result of the lack of (goood) cross-platform support in development suits. There are all kinds of issues that need to be solved to overcome this problem. Issues like hardware abstraction, cpu independance, library availability, etc.
Some initiatives seem like a good step in the right direction (like Java and - I must say - .Net).
Developers need to get the opportunity to chose from a wide variety of cross-platform languages and tools, for them ever to produce cross-platform software. If this goal every gets reached, free software can finally start competing with commercial software on equal terms.

So far my 5 cents.

About

This article was published on November 2, 2002 11:04 AM.

The article previously posted was Supplemental Category Tags.

The next article is More Linux for Windows.

Many more can be found on the home page or by looking through the archives.

Powered by Movable Type