THEY SAID it was impossible. First, reaching the "holy grail" was considered achieving compatibility with Windows applications. Those that remember Sun's "WABI" (Windows Application Binary Interface) raise your hand. Then WINE jumped into scene along with other win32 api emulators, "compatibility layers" and the like.
In the meantime, the open source revolution took care of "commoditizing" common desktop software: web browsing, e-mail, html authoring, word processing, spreadsheets, presentations, cd-burning, mp3 playing, and many other tasks that until not long ago required proprietary commercial software can now be carried on by using open source software: Mozilla, OpenOffice, CDRecord, and various open source mp3 players, in that order.
But most importantly: regardless of what operating system you run (the applications mentioned run on Unix, Windows, Linux, even many have been ported to the "dead" IBM OS/2. This availability of portable software has certainly decreased the need to rely on win32 applications when you dump windows for an alternative OS.
It can be said then that desktop applications are now a commodity, also Win32 application emulation has reached maturity -with products like CrossOver Office running the Vole's Windows Office crown jewels seamlessly on another OS. So, what is the "final frontier" in emulation technology?. Yes, you the little guy in the back, you guessed right: device drivers.
Device drivers is an area where emulation was until recently considered "out of the question": writing native code was the only solution. Not anymore.
I came across two very interesting and different projects that tackle the issue in a clever way: running hardware device drivers designed for windows on "foreign" operating systems. Both come from small developers outside Silicon Valley, which makes one wonder why nobody inside the billion-dollar labs of "innovative" mega-corporations like Carly Fiorina's or Palmisano's thoughts about this.
The first comes from Montreal, Canada -- it is called "DriverLoader" and created by Linuxant Inc. Simply put, it is a revolutionary "compatibility wrapper" allowing standard Windows NDIS 5.0 drivers (the network driver standard used by Windows and on an earlier spec revision by OS/2 too) as shipped by hardware vendors for windows users to be used as-is on Linux x86 systems as well.
Driverloader immediately gives Linux users the ability to use network cards "for which no adequate native open source drivers are available" -the company claims. The company has currently released a technology "demo" that allows owners of 802.11g 54mbps Wireless LAN devices (CardBus and PCI) based on Broadcom chipsets to use their devices under Linux.
Currently, and apparently for a limited time, DriverLoader packages can be downloaded and a free trial licence obtained from Linuxant's web site at no cost. It supports the most popular 2.4 and 2.6 kernel based distros like RedHat, SuSE, Mandrake, and Debian.
The company says that discussions are under way with hardware vendors to finance further development costs. Linuxant hopes that DriverLoader will remain free for end users but that hardware manufacturers will foot the bill to have their existing windows LAN drivers to run seamlessly in Linux.
Personally, I'd prefer to see this technology offered free-for-all and DriverLoader incorporated into Linux, with the development costs paid by some Linux consortium. This, in an ironic twist of "embrace and extend" would allow Linux to claim compatibility with "off the shelf Windows LAN drivers", while encouraging hardware vendors that prefer to deliver better (native) Linux drivers to continue writing their own.
Discussions aside, Driverloader proves that creating a "wrapper" around win32 drivers and running them on a foreign operating system is possible, at least for LAN drivers. I remember getting some heat on the Solaris x86 mailing list when I suggested that Sun advocates should embrace, not fight, the Linux movement, and try to develop clever, innovative ways to make porting and running linux software and drivers in unix, rather than bitching about "Gnuish linux-only code". In short, this DriverLoader for linux project confirms my theory that nothing is impossible from a programming point of view. You just have to put enough brains for enough time thinking about clever ways to achieve the goal :o) .... fast CPUs remove the problem of just another software layer between the driver and the operating system.
And just when I thought I had seen everything, OS/2 programmer and hacker extraordinary Vitaliy Timchishin from Ukraine created Win32PRN. It allows IBM OS/2 users run any Windows 2000 printer driver -and Windows XP too, but this possibility is not fully tested yet- on OS/2 via the "Odin" win32 api compatibility layer, as if it where a native printer driver, available for all OS/2 applications.
The project is in its early beta stages, but shows great promise and already works with the Canon LBP-810 printer using Canon drivers for Windows, on the Epson EPL-N2050/PS+ using Epson drivers and with the HP LaserJet 1100 using Windows XP's "UNIDRV" drivers supplied with Windows XP.
While IBM continues currently writing and releasing native OS/2 drivers on a regular basis for most printers out there -OS/2 is in "maintenance mode"- this technology gives them another benefit: IBM or OS/2 licensees Ecomstation could fund this technology, bring it to maturity and then forget about writing printer drivers except perhaps for the generic postscript and PCL5 base code. Users would just be told to download and run Windows printer drivers.
In short, you have seen that it is technically possible to run some windows drivers on foreign operating systems - currently LAN drivers on Linux and printer drivers on OS/2-. So how revolutionary is this approach? Would you use, lacking native drivers, Win32 drivers on linux, unix, or other operating systems? Are printer and network card drivers going to become, over time, a commodity with Win32 drivers one day the 'de-facto standard' run via wrappers?
Can OSes like Unix and Linux gain market share by "piggy-backing" on win32 driver development in an ironic twist of "embrace and extend" that this time takes advantage of Microsoft's driver market share to hurt them and let users move to other platforms? Let me know what you think. ยต
Fernando Cassia is the INQ's South America correspondent, he's based in Buenos Aires, Argentina where he lives surrounded by computers in his home LAN running Windows, Solaris x86, Linux, and OS/2
I think it is a fantastic idea to be able to use windows drivers in linux. I'm very sorry to see that this article is 6 years old and I still don't see any common use of windows drivers in linux yet.
Unfortunately, when you recieve a new hard drive, it is completely blank. It gets worse when you install an OS other than windows. I have a Dell XPS m1330 and i had to get a completely new hard drive and I installed Ubuntu SE and the drivers for my computer are only for Windows... I need programs so I can install these drivers on my XPS.
Though ndiswrapper has made DriverLoader unneeded for many people, only network drivers are supported.
A concerted effort is needed to make Win32-Linux driver layers for all categories of devices. This would greatly expand the range of Linux adoption to new masses of hardware.
The challenge is that Linux (and Unix in general) uses different layers for different types of drivers, so each one must be developed differently:
* Printer drivers are separated into the actual device (kernel layer) and the protocol passed over it (application layer as a "print filter").
* Video drivers were traditionally monolithic "X" server variants. Next xorg separated the drivers into modules (but in xorg-specific format, not a kernel module). Finally, we are getting Kernel Mode Setting which puts the hardware under kernel control to some degree and has the right amount of separation.
These are just two examples, but note that the driver formats are very different and so a developer cannot take skills from one type of driver to another as well as in Windows development. This is one reason for the challenge.
Nevertheless, if you want to earn the gratitude of the Linux using world, enabling even one more device class to use Windows drivers would do it!