Versions & mass-appeal

Ender winedev at admdev.com
Wed Oct 30 00:57:43 CST 2002


> 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 at 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 at 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 at CJascDialogBar@@MAEJIIJ at 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/




More information about the wine-devel mailing list