WINE for Reactos

Dmitry Timoshkov dmitry at news.sloboda.baikal.ru
Tue May 8 09:35:29 CDT 2001


"Nick J. Date" <ndate69 at hotmail.com.NOSPAM> wrote:

> 1) Is there already a version of WINE that can run a Win32?

I think you mean the various Wine DLLs. Apparently no such effort was done
yet. But at least some parts of Wine were partially compiled by me under
Win95/2000 (user controls, commdlg) using MS VC and hacked Wine headers.

I don't think that porting parts of Wine which does not use Wine server calls
will consume too much time. I repeat: it is possible. Especially if you use
gcc (I know, you do).

> 2) If not, I'm assuming that I would have to rewrite user32.dll and try to
> incorporate the bitmaps from xfree86 (or a similar project).

I'm sure you don't want to do so. Wine already implements a lot of user16/user32
API calls. Lots of efforts were put in adding missing functionality and especially
in fixing bugs, making REAL applications run better and better. If you are going
to duplicate the whole Wine way to success (1993-2001), then you better forget
about working ReactOS for at least 5 (five!) years.

There are significant differences in the Wine and ReactOS ambitions (Wine runs
applications - ReactOS kernel drivers, services, applications; complete binary
compatibility is crucial thing for ReactOS, while Wine can easy drop some
restrictions and implement things in its own way, etc.), but a lot of working
Wine code can be reused with minimal or without modifications at all.

There are several projects aiming in implementing Win32 API. But every of them
has no any intercommunication with others. IT IS VERY BAD. Moreover, Wine has
different licence than others, which makes incorporating back bug fixes and
improvements made by other projects impossible without a good will from
developers of that projects.

Here is the list of projects I know about (some of them have not been updated for
some time or were dropped by their authors): (in arbitrary order)

1. WinFree by Onno Hovers (aims to run console Win32 apps under Linux)
2. YAW by Andrew Kozin (mostly ntdll implementation on top of Linux syscalls)
3. ReactOS (complete NT-like OS implementation)
4. ProjectOdin (Win32 for OS/2 using IBM Open32 implementation along with parts
borrowed from Wine)
5. Wine (Windows on Unix)

1 and 2 are completely independent projects and haven't been developed for some time.
ProjectOdin although borrowed some parts of code from Wine, made a lot of modifications
to them resulting in nearly complete impossibility to do both incorporating bugfixes
from Wine and returning back their own bugfixes and improvements. Most of bugs already
fixed in Wine still exist in the borrowed by the ProjectOdin code.

As far as I know, ReactOS already uses some parts of Wine code. But ReactOS developers
made the same mistake as ProjectOdin guys: they made too much unnecessary modifications
making just a simple diff -uw completely impossible.

Please, consider the following when incorporating parts of Wine code:
1. Keep the same code structure for borrowed code as in Wine.
2. Do not make unnecessary renaming variables or source reformatting.
3. Send your improvements and bug fixes for the Wine code to wine-devel
mailing list for review and suggestions: probably some of them were already
fixed, or your modifications will break working applications, or rather your
"fix" existed before and was removed for some good reason.
4. ...
Anyone wants to add something else or correct me if I'm wrong?

P.S.
When I worked on the unicode support in Wine, I wrote tool which creates fully
binary compatible with NT l_intl.nls and c_?????.nls files from the unicode.org
tables. I can send results of my work to anyone interested.




More information about the wine-users mailing list