Technical note for the technically interested, related to the intent to
eliminate dependence on the GTK libraries for Windows and Mac:
GTK is a library for the C language for creating windows and handling
events, especially on Linux. GTKMM is a "wrapper" of GTK for use by C++
programs. Because there exist Windows versions of these libraries (and
Mac versions for the Unix-based X11 windowing system, as distinct from
the native Quartz graphics), Jonathan Brandmeyer originally wanted to
use GTKMM for Windows as well as Linux, and for X11 on the Mac, as this
would mean that one set of code would work on all platforms. However,
shortly before he left the project, he came to the realization that it
was so incredibly difficult to install GTKMM libraries on Windows that
few developers would ever be able to build Visual on Windows. For that
reason he rapidly wrote a Windows-specific module for creating a window
and handling mouse and keyboard events.
The beta version of Visual 4 seemed to be significantly more buggy on
Windows than on Linux, so when I started working on Visual this past
fall I made the attempt to go back to using GTKMM, with the thought that
perhaps the problem was with the Windows-specific code which Jonathan
had created at the last minute. As it happens, his Windows-specific code
seems basically fine, but this was masked by a variety of other problems
which happened to be more visible on Windows than on Linux, which I
worked on, one after another, as slowly the beta version worked better
and better on Windows. I went through enormous difficulties, with blood
all over the floor, to create a GTKMM build environment on Windows. This
hair-raising tale is told in an article that you can read in the section
"For developers" at vpython.org.
When David Scherer recently became interested in working on Visual
again, he quite sensibly reacted in horror to the great complexity of
the gtkmm build environment on Windows and proposed going back to using
Windows-specific code. Having seen that many of the supposedly
Windows-specific problems with Visual 4 were independent of the
Windows-specific code (which I wasn't using), I was quite willing to
agree that we should try abandoning the gtkmm approach on Windows. The
non-gtkmm version seems to work as well or better than the gtkmm-based
version, and it is far less complex. It can be easily compiled using
Microsoft Visual Studio (and there is a free version of this available
from Microsoft).
Moral of the story: Good people have volunteered a lot of time to the
attempt to create an open-source cross-platform windowing system to
support cross-platform graphics-oriented programs. Nevertheless, the
existing gtkmm environment is off-scale complex, large, fragmented,
inadequately documented, and incomplete on some platforms. It started on
Linux, where it is the workhorse. But the ports to Windows and Mac are
just plain too hard to use.
Bruce Sherwood
|