The Windows API is of course public, so my guess is that isn't a huge bar to creating WINE.
Unfortunately, you guess incorrectly. While the API may legally be public (the interface can't be protected, as far as we know,) it isn't always documented. MS uses undocumented APIs very, very frequently in its own products, and I don't just mean in its applications: parts of its API depend on other, hidden parts of its API. Even the parts that are documented are not documented completely. For example, many APIs take 32-bit flags parameters, some of whose meanings are documented. But the behavior for all possible values is not well-specified, nor are the return values. I continue this thread next:
Is it simply the scope of the project?
This is a large part of the problem. It's difficult to appreciate just how large it is. (There was a presentation about this once, maybe by David Korn, but I've lost track of it.) We can only learn the behavior through experimentation, and so do application developers. The application developers depend on undocumented behaviors, so we have to replicate them, including bugs. The problem is, there are many more of application developers (and Windows developers) than there are of us.
Also part of the problem, though I don't think it comes close to scale as far as its impact, is that our architectures are different. For example, the code obfuscation tools (securom, safedisk et al) depend on device drivers being loaded by ntoskrnl.exe. This is related to the hidden assumpmtions problem I described already, but sometimes we have to implement a large amount of silliness that we didn't anticipate having to do, or reimplement stuff that was already working for some apps. ReactOS can potentially avoid some of these issues, since they're copying much more of Windows's architecture.
Would open sourcing part of Windows help?
Only if it were done in a way that didn't encumber our ability to develop WINE.
--Juan
__________________________________ Start your day with Yahoo! - Make it your home page! http://www.yahoo.com/r/hs
Juan Lang wrote:
The Windows API is of course public, so my guess is that isn't a huge bar to creating WINE.
Unfortunately, you guess incorrectly. While the API may legally be public (the interface can't be protected, as far as we know,) it isn't always documented. MS uses undocumented APIs very, very frequently in its own products, and I don't just mean in its applications: parts of its API depend on other, hidden parts of its API. Even the parts that are documented are not documented completely. For example, many APIs take 32-bit flags parameters, some of whose meanings are documented. But the behavior for all possible values is not well-specified, nor are the return values. I continue this thread next:
And on that note: does anybody know of any documentation anywhere for msvcrt sopen? Particularly, what the different pmode flags mean (I'm getting 0x01b6)...
Hi,
On Fri, Nov 18, 2005 at 10:00:22AM +0000, Aneurin Price wrote:
And on that note: does anybody know of any documentation anywhere for msvcrt sopen? Particularly, what the different pmode flags mean (I'm getting 0x01b6)...
I've got an old grey folder with MSVCRT API documentation at home (together with tons of other API books ;), *maybe* those extra flags that I cannot find on the net are described in there.
I will ask my family to look it up for me this evening.
Greetings,
Andreas Mohr