At Linuxtag in Karlsruhe I met during lunch one of the authors of ganymede. I am the last person in the
world to promote the use of the Win32-API, but it can come in handy, when
you have to use some legacy software on Linux and do not want to pay
license fees for the usual suspects like vmware. Having to maintain only
one code-base is sexy, too.
I asked David Guembel, one of the fathers of the software to email me a
On an abstract level, the idea behind our ganymede system is simple: To make
an application run under Wine (a free Win32-API layer and Windows
executable loader), it is neccessary to know what parts of the Windows API
are actually required by that particular piece of software. Software has a
modular structure - in this context, a module is a Windows executable
(.DLL, .EXE, .OCX etc.) - and every module provides (exports) certain
functionality and requires (imports) functionality from other modules.
Thus, ganymede internally creates a dependency graph of an application's
binaries. This method is static and does not require anything but a fresh
installation of the software to be analyzed.
Before x-raying a Windows application, ganymede parses and stores an
analysis of the soure code of one or more Wine versions. It automagically
determines the implementation state of the APIs provided by Wine. During a
software analysis, the functionality required by the Windows application is
compared to what Wine provides, and missing or incomplete APIs are
reported. By storing Wine versions and the dependency structure of the
analyzed applications in a database, automatic or manual re-analysis with
different Wine versions is possible. Via the API ganymede itself provides,
the collected data is accessible in several ways. One application of that
API is our tool named sysiphus, which uses ganymede and a GUI-based
approach to semi-automatically determine the best possible Wine
configuration while providing for the possibility to re-use already
licensed Windows DLLs to fill the gaps Wine still leaves.