Why are we in this position? For reasons I will not go into right now, it seems painfully obvious to me that we are suffering from a severe case of Bad Public Image (tm). Whenever I talk to people not intimately familiar with Wine, about our beloved project, I am _always_ treated with the same reaction: a surprised "Really, it works? Hmmm, I thought it was only running Freecell...". Translation: people consider Wine a huge hack that can run (by some strange happenings) some apps, sometimes. It is viewed as unreliable, "freak of nature sideshow"; something (maybe) cool to talk about, but utterly useless.
Well, here's my views on the situation. Most people who are AWARE of Wine get those opinions for several reasons:
- No users, because of two things: - Many apps do not work without Desktop enabled. This is far worse than it sounds, because most newbies try managed non-desktop first. People think WINE should be able to do seemless intergration. Then when an application hangs, they think it's incompatible and give up. However in many cases the Application will work fine in Desktop mode. BAD, these apps should either be made to work... or non-desktop mode should be removed!
- Getting the right set of dlloverrides and registry entries correct for a large portion of software is irritating. Most of this comes down to the lack of WINE being able to dynamically run RunOnce and wininit.ini entries. Doing this manually is far beyond your average user who just wants to install a reasonably complex program. Something like Crossover's reboot.so is needed.
- No developers, because of two other issues: - The amount of cross-dependency in WINE code makes it very hard for a newbie developer to try and debug a problem in an application he uses. This also means that to trace most of this inter-dependency you need to debug so many parts that the amount if debug info becomes pretty difficult to work with. So to begin with, you need a good idea of WINEs internal structure and DLL cross-calling before you even start to play with it.
- There is no real decent debugging documentation, just a heap of skeleton documents on WineHQ. And any debugging situation a NEW developer is going to start on, is almost certainly going to be a difficult one.
Let's take the average example of a new developer trying to break into WINE. I try to run Paint Shop Pro 7, and it crashes. "Alright," I think; "This debugger looks like GDB.. I wonder if I can find the problem myself! Let's look at the backtrace..."
0x00778170 (psp.exe.?Default@CSubclassWnd@@IAEJXZ+0x35ef0 in C:\Program Files\Jasc Software Inc\Paint Shop Pro 7\psp.exe): movl 0x20(%eax),%edx
=>0 0x00778170 (psp.exe.?Default@CSubclassWnd@@IAEJXZ+0x35ef0 in C:\Program Files\Jasc Software Inc\Paint Shop Pro 7\psp.exe) (ebp=406928ac) 1 0x5f401cea (MFC42.DLL.6374+0x22 in C:\WINDOWS\SYSTEM\MFC42.DLL) (ebp=406928cc) 2 0x4098f0c8 (JCONTROLS.DLL.?WindowProc@CJascDialogBar@@MAEJIIJ@Z+0x28 in C:\PROGRAM FILES\JASC SOFTWARE INC\PAINT SHOP PRO 7\JCONTROLS.DLL) (ebp=4069293c) 3 0x5f401bfb (MFC42.DLL.1578+0x2a in C:\WINDOWS\SYSTEM\MFC42.DLL) (ebp=40692958) 4 0x5f401bba (MFC42.DLL.1579+0x39 in C:\WINDOWS\SYSTEM\MFC42.DLL) (ebp=40692984) 5 0x407ef457 (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=406929a8) 6 0x407ef4ed (WINPROC_CallWndProc+0x8d(proc=0x5f401b81, hwnd=0x20038, msg=0x18, wParam=0x1, lParam=0x0) [winproc.c:183] in user32.dll.so) (ebp=406929d8)
"Oh wow, that doesn't mean much to me.. I know enough Windows Programming to know that Paint Shop Pro is trying to subclass a window... but what's wrong with that? WINE is calling back into the program.. I can't find any information to help me work this out! Oh, I give up."
The thing to keep in mind is Developers are Users, but not all Users are Developers. A user who is going to turn into a developer is going to start by tackling a problem he experiences, and these are generally going to be the more complex issues. So without a good set of pointers on how to debug problems like this, they will jus tget frustrated and give up completely.
- James 'Ender' Brown ------------------------ Project Leader: http://www.scummvm.org/ Site Founder: http://www.quakesrc.org/ Lead Programmer: http://www.collectivedetective.org/