A step in the wrong direction, in an ocean of steps in the right direction (try 3)

Remco remco47 at gmail.com
Sun Jan 25 08:21:59 CST 2009


On Sun, Jan 25, 2009 at 1:53 PM, Guillaume SH <gsh.debianlists at gmail.com> wrote:
> The most interesting part in your answer is indeed this word of
> "Behaviour" you used. Indeed, in my understanding (but maybe "I am
> hoping" is more correct here) wine's goal is to provide the same
> functionalities as Windows API, not to implement those functionalities
> C statement for C statement with respect to Window's ones.
>
> Two reason comes to my mind :
> 1 - Just copycatting Windows implementation would brought wine very
> close to plagiarism, thus legally threaten is mere existence

Legal problems aside, copycatting Windows is exactly what has to
happen for Wine to function like it should. It can't be a 'better'
version of Windows, because many programs depend on the quirks and
faults of the Windows API/ABI.

And I don't think there are any legal problems. Wine developers don't
look at reverse-engineered Windows code, so Wine's code will
inevitably differ a great deal. Implementing quirks the same way will
make the code more similar than before, but there are still things
like coding style and implementation details that differ a great deal.
Probably not even 1% of the C statements in Wine is an exact match to
a statement in Windows.

> 2 - Obviously, Windows implementation is not always the most efficient
> nor the most secure, due to commercial stakes (release schedule,
> financial arbitrations...)

Well, the implementation can differ from Windows, as long as it has
the same effect on the API/ABI level. Some applications actually do
run faster because of this. And some run much slower because of this.

> Regarding the part of your mail where you wrote : "that's actually
> good that applications crash when
> they pass invalid data", I must admit I don't understand your point at
> all. It seems to me a dogma, not the result of some thought or stand
> back.

A while back there was some case where a buggy Windows program would
run in Wine, while it didn't run in any version of Windows. After Wine
became better, the buggy program stopped working. Of course it also
meant that a lot of other programs started working. At some point you
have to stop making bad programs work, and implement the API as close
to Windows itself as possible. The buggy program can still be made to
work with a custom patch.

Remco



More information about the wine-devel mailing list