"Missing Link" In Windows Emulation Unveiled?
ben_ writes "According to this article on inq7.net, a Philippines company called SpecOps has revealed their Project David, a middleware layer that solves the problem Wine has been working at for years and will "enable all major Microsoft Windows applications to run on the free and open source Linux OS".
Further (and more sceptical) analysis at Linux Electrons." I'm with Linux Electrons on this; as nice as it sounds, the information about David comes via Press Release which as we all know are founts of dependability *cough*.
If I understand what I'm reading correctly, they're in essence taking advantage of how NT/XP is designed.
As I have learned it, the NT Kernel is separate from the Win32 API. The Win32 system makes calls into the kernel to get system things done (like disk and screen I/O), but tracks all the Win32 stuff itself (like windows and message queues). Win32 is, in essence, just a 'personality' running on the NT core. Someone (Microsoft themselves, I think) is doing another personality module for the NT kernel that will let it run Unixy stuff too, at the same time as the Win32 stuff.
What WINE is doing, which is incredibly difficult, is rewriting the entire Win32 API so that existing programs will run under Unix. This has taken them many, many years, and it's fairly good now, but it's far from a complete solution, largely because it's so difficult.
It sounds like the David project will probably run the *existing* Win32 API (which is hard to replace), and write a new set of kernel routines to emulate the NT kernel. AFAIK, most of the work on NT is at the Win32 level, the kernel itself doesn't get that much work, because it's really solid and really stable. So they're not chasing a moving target in quite the same way.
Presumably, the separation between the Win32 personality and the NT kernel is drawn clearly enough that they can replace the kernel without breaking things too badly. At least, that would appear to be how they're thinking about it.
This would probably mean you'd need to install Windows under Linux, in order to get a proper Win32 personality. The net effect would be very much like the way that OS/2 used to run Windows 3.1. (remember 'a better Windows than Windows'? It was!)
I believe this could work. It would not, however, remove the need to own a copy of Windows, so its use would be more for the pragmatists ('we want it to work') than the idealists ('we want it to be free').
This would dissasemble the x86 windows binaries, rewriting any low level OS library and hardware access code, emitting Linux compatible executable binaries. This could be done both Ahead Of Time, before execution, and Just In Time, during execution. Caching the resulting rewrite on disk would speed up execution a lot.
A neat trick if possible. However Soft Labs would have to reverse engineer a hell of a lot of Microsoft's OS to manage it.
If Wine/David becomes so good that a windows program runs *as well* on Linux(under wine) as it does on windows, Linux may suffer the same fate as OS/2. Remember WIN/OS2? The development community saw this functionality as an excuse to write their apps. to windows (why worry about OS/2 when they have WIN/OS2?) Before you knew it, nobody was writing OS/2 apps..... and OS/2 cratered.