Platform Independent FAQ Part One


Copyright 1996 Ross McKay. Last released $Date: 1997/03/02 08:37:38 $
Copyright 1993-1995 Wade Guthrie. Permission is granted to copy and redistribute this document so long as it is unmodified (including the part that explains where to get the FAQ free-of-charge) and the copyright remains in-tact. I'd appreciate it if you told me about any redistribution, but that's not strictly necessary.

I. WHAT'S NEW IN THIS ISSUE. . .

Seems that many of the vendors with commercial products are looking hard at Java... just a few that I know of include Willows, Visix, Neuron Data, Bristol, and RogueWave. Of course, there are many other big names there already, including Sun, Symantec, Borland, Oracle, and yes, even Microsoft.

I will try to get together a rundown on what each offers for next month. In the meantime, you may want to check out some of the sites. It seems that many people are looking to Java as the language that will allow cross-platform portability at last.

Watch those prices! Many will still be out of date! Check with the vendor!

Notable in this version (3.1)

II. INTRODUCTION

This posting is intended to shell-out as much information as I can find concerning platform-independent Graphical User Interface (PIGUI) development kits (actually, it's platform-independent APIs targeting various platform-DEPENDENT GUIs, but let's not get too picky). This list is being posted because I've seen a whole mess of requests for GUI portability information and, besides, I need this information as well.

This document is maintained and periodically updated as a service to the net by Ross McKay (rosko@zeta.org.au). Any corrections, updates, or other pertinent information are welcomed at that address. If you are a vendor of a PIGUI package (whether it's represented here or not), I encourage you to amend, annotate, and append to this document (and then, of course, send the revisions back to the author).

IIa. Where to get this document.

As the primary format of this document is now HTML, the best place to get it is on the Word Wide Web at the following place: http://www.zeta.org.au/~rosko/pigui.htm

You can also get the plaintext version from the following HTML page: http://www.zeta.org.au/~rosko/textfaq.htm, by anonymous FTP from `rtfm.mit.edu', or by following newsgroups comp.answers or news.answers.

IIb. What's a PIGUI?

A PIGUI (Platform Independent Graphical User Interface) toolkit is a software library that a programmer uses to produce GUI code for multiple computer systems. The toolkit presents functions and/or objects (along with a programming approach) which is independent of which GUI the programmer is targeting. For the purposes of this document, a PIGUI must support several GUIs under at least two different operating systems (so just supporting OpenLook and Motif on two Unix boxes doesn't count). The toolkit does not necessarily provide any additional portability features. Native look-and-feel is a desirable feature, but is not essential for PIGUIs.

Now, let's consider Petula Sniggly, a programmer who decides she wants to build the ultimate computer program. This thing is going to be so cool that everyone anywhere near a CPU will want to use it, so Petula targets her program for every type of computer on the planet. She considers getting herself a PIGUI toolkit to handle the GUI portion of her code. With a PIGUI toolkit, when she wants to put a menu on the screen, she calls the toolkit's `PIGUI_menu' function. When she compiles her code with the `Macintosh' flag set, the PIGUI library puts a Mac menu on the screen in response to the PIGUI_menu call. When she compiles her code with the `Motif' flag set, the call causes the library to put-up a Motif-style menu. All this happens (theoretically) without Petula having to change her source code. If she is careful to make her non-GUI code portable, she would have a single program (with a single source) that works on multiple platforms.

There is no free lunch, so our heroine Petula has a few things to consider before deciding whether to use a PIGUI. First, most (and maybe `all' depending on whom you believe) of the PIGUIs will slow the execution of your code. You are also limited to the feature set provided by the PIGUI unless you want to code around the toolkit (but, then again, why would you buy the PIGUI in the first place if you're going to code around it?). Bugs in any toolset (PIGUI or otherwise) filter down to your production code. Fewer people know how to code any specific PIGUI than do a platform-specific GUI (e.g., MS-Windows), so wizardly help will be limited. The PIGUI only deals with the GUI aspects of your program -- you're on your own for other portability issues. Finally, if the vendor goes out of business you may be out-of-luck for support of future OS enhancements (source code can ease, but not eliminate, the pain of a vendor closing its doors).

Another approach that Petula could choose, is to design her system partitioned into GUI and non-GUI objects, and implement the GUI objects in the native API. Then, when porting, only the GUI objects need to be rewritten for the new platform. There are some developers who recommend this course of action, as it produces a better fit on each platform and eliminates the overheads often associated with PIGUI toolkits. Obviously, this would mean more effort on Petula's part, in both the initial development and in ongoing maintenance (no single base of source code). It also means learning how to code for every target platform. Not (usually) a trivial task, hence the market for PIGUI kits.

(NB: partitioning your design into GUI and non-GUI objects is a good thing to do anyway)

IIc. A word (or two...) about language choice.

There are PIGUI kits for languages including C, C++, Smalltalk, Java, Ada, Tcl, and Python. Most (all?) new PIGUI kits will be developed in Object-Oriented programming languages, as GUI work is ideally suited by the advantages of OO (especially inheritance / reuse). The bulk of exising kits are in C++, due to the popularity of that language, with many still in C but supporting C++. I have partitioned the Vendor Reports into separate parts because of this, putting C and C++ kits into Parts 2 and 3, and others in Part 4. My justifications are that:

a)
Part 2 was getting too big and needed splitting;
b)
due to practical or religious concerns, some people don't want to know about the C/C++ kits

Many C programmers will look at the purchase of a PIGUI library as a great opportunity to migrate to C++. If the library takes full advantage of C++, the programmer will have to use C++ methodologies (not just a C++ compiler with C syntax) to use it. When one ports a C program to such a library, one should expect to invest a significant amount of effort learning about (and modifying one's code to take advantage of) classes, inheritance, and constructors in order to complete the port. Of course, if one wants one's C code to become C++ code, this is a necessary exercise anyway.

IId. What else is in this Document?

After the introductory stuff, you'll find some more detailed information about PIGUIs in general followed by tables and prose that describe specific PIGUI toolkits.

The limits placed on which products are discussed in this posting are pretty-much provided in the title. The products listed here must be platform-independent and support at least two different OSs. The product must be shipping to the general public (i.e., no beta-only or pre-beta PIGUIs). Moreover, these packages focus on GUI portability, though some provide a larger breadth of portability features (and, I've tried to list those, where applicable). No limits (at either the high or the low end) have been placed on price, even though the prices in the field vary by more than an order of magnitude (and, now, there are some free PIGUI kits).

Note that in addition to one of the products listed here, you'll need (natch) one of the supported host machines, a compiler or interpreter of the appropriate type, and, for layered GUI packages (q.v.), the basic GUI builder for that platform.

IIe. Other Issues to Consider.

The difference in GUI programming is most likely the greatest hurdle when programming for cross-platform portability, but it is not the only hurdle. Other issues often not delt with by cross-platform GUI kits, and not addressed by this FAQ, include (but may not be limited to):

When developing an application that may be ported to more than one platform (even if those platforms are the 16 and 32-bit versions of Microsoft Windows), you should be aware of the differences between the target platforms before development commences.

IIf. More Legal Barf.

At this point, I find it necessary to say that this FAQ is my personal work and that this FAQ does IN NO WAY indicate, reveal, imply, infer, allude to, display, suggest, symbolize, expose, demonstrate, hint at, or in any way have anything to do with the thoughts, policies, suggestions, reflections, decisions, theories, sentiments, ponderings, rules, dreams, or beliefs of my employer.

I use a lot of names that are trademarks in this FAQ. At no time should the use of a trademarked name be construed as contesting the trademark. Those trademarks belong to their respective trademark holders.

If lots of stuff in this posting looks familiar to you, you're not hallucinating (well, maybe you are, but not regarding this). Much of the format (and some of the words) of this FAQ have been lifted (with permission -- thanks Eric) from Eric Raymond's PC-UNIX FAQ.

Despite the best efforts of the maintainer of this FAQ, some information contained herein may not be accurate. Please verify any information (especially prices) with the respective vendors before finalising any desision. Please also forward any corrections or comments to the FAQ maintainer, rosko@zeta.org.au

Some information contained in this FAQ is based on the opinions of users of the respective products, and does not necessarily reflect the views of the maintainer of this FAQ.

III. GLOSSARY

Here are some words that you'll find in this FAQ along with working definitions for them.

API
Applications Programming Interface. This is what the programmer sees when he's using a software development kit. Normally, this would be a set of function calls and/or objects.
APIW
Applications Programming Interface for Windows, a standard for cross-platform development. APIW was adopted by the European Computer Manufacturers Association (ECMA) on 15 December 1995, and is currently awaiting approval from the International Standards Organisation (ISO). APIW is based on the Microsoft Windows API. Microsoft are not happy; expect to see more legal action.
CDE
The GUI part of COSE (q.v.) is CDE, the Common Desktop Environment which includes hypertext help, IPC (q.v.), printer support, and a bunch of other stuff. The look-and- feel is Motif-like, but there's a lot more than that to CDE. It looks like CDE certification will be withheld from most if not all) PIGUIs since CDE includes its own API -- you have to comply with the API to be certified.
COSE
Common Open Software Environment. COSE is the industry-agreed- upon graphical environment that will augment (significantly) and replace Motif and OpenLook.
CUI
Character User Interface. This is like a graphical user interface, but it's implemented only with characters (e.g., ASCII). Many Platform-Independent CUIs are developed using the public-domain curses package.
DDE
Dynamic Data Exchange. This is a method of inter-process communication under Microsoft Windows.
DDEML
Microsoft Windows' Dynamic Data Exchange Management Library.
DLL
Dynamically Linked Libraries. These are, essentially, shared libraries under Microsoft Windows or OS/2.
FAQ
Frequently Asked Questions. A list. . .like THIS one!
font
A specific set of shapes for a character set. Old English is one example of a font (it's more complicated than that, but I'm not going into it here).
GDI
Microsoft Windows' Graphical Drawing Interface.
GUI
Graphical User Interface. If you don't know what this is already, you have quite a bit of homework before this FAQ will mean anything to you.
HTML
HyperText Markup Language, an implementation of a Standard Generalised Markup Language (SGML). HTML is what Word Wide Web (WWW) pages are written in; click on `View Source' in your Web browser to see some.
IMO, IMHO
In My (Humble) Opinion. Usually means very opinionated and not very humble.
IPC
Inter-process Communication. It's a generic term for the way separate processes (or tasks) under an operating system talk to each other.
MDI
Microsoft Windows' Multiple Document Interface. An MDI parent window is intended to be the main window of an application and MDI child windows represent separate documents or sessions (or whatever) under that application.
Motif
This is one of the choices of look-and-feel under the X Window system. In order to have one's software certified as Motif compliant, one must pay a fee to the Open Software Foundation (OSF).
OpenLook
This is one of the choices of look-and-feel under the X Window system. It was originally championed by Sun Microsystems before they agreed to support COSE (q.v.).
PCL
Hewlett Packard's Printer Control Language. It's a language for getting HP printers to display what you want. Several versions exist, including PCL4 and PCL5.
PIGUI
Platform-Independent Graphical User Interface. Actually, it refers to a platform-independent API (q.v.).
PM
OS/2's Presentation Manager. This is the GUI under OS/2.
PostScript
This is a printer language owned by Adobe Systems. It's an interpreted language that is used by a wide variety of printers. This is yet another technology created by Xerox Parc.
SDK
Software Development Kit. It's software to help a programmer build other software.
Unicode
This is an international (16-bits per character) character set in which all the characters from the various supported international languages co-exist at once. Among the supported character sets is the Latin alphabet (as used for English and other languages), Hebrew, and kanji.
WYSIWYG
What You See Is What You Get (pronounced Wizzy-Wig). It's a way of allowing the user of a package to see the package's output (in its ultimate format) while the user is developing using that package. Most WYSIWYG software is really WYSISWYG (pronounced Wizzy-Swig) -- What you see is sort-of what you get.
Xlib
This is the library of X-Windows functions distributed by MIT with the X Window system (hence, it's free -- just like X Windows). One can generate software that is compliant to the OpenLook or Motif look-and-feel (or any other, for that matter) using Xlib.
YMMV
Your Mileage May Vary.

IV. USER-INTERFACE APPROACHES

Most, if not all, of the products in this FAQ take one of three approaches to providing platform independence. The two most common approaches are the `layered' and the `emulated' user interface but an up-and-coming approach is `API emulated' interface.

Products using a layered interface access native, third party, GUI-building toolkits to provide the look-and-feel compliance for each particular GUI. Layered user interfaces have the advantage that, since they depend on other products which concentrate on a single GUI, they have to provide less software (and, hence, are usually less expensive) than emulated interfaces. Layered interfaces are also more likely to get the native look-and-feel correct on all platforms. Most of the PIGUI products in this FAQ fit in this category.

In an emulated user interface, the PIGUI's resultant code produces low-level calls and all the look-and-feel compliance is handled by the PIGUI software itself (e.g., for OpenWindows support, the software would NOT produce an XView program that must be compiled with the XView toolkit; the software would produce code that interfaces directly with X intrinsics). To provide an emulated user interface, a vendor has to develop a lot of extra code for look-and-feel support. Emulated user interfaces have the advantage that someone on a Motif workstation, for example, can see how the Macintosh-style UI will look (since the look-and-feel is part of the product). Emulated interfaces have the opportunity to provide a faster GUI than does a layered interface; in addition, it does not require you to purchase (or learn how to use) other kits to build GUI software.

A third approach to platform independence is emulating one of the supported target's APIs (usually, the Microsoft Windows API) to target other GUIs. With one of these products, one would program using the emulated API and the code would be (to the extent to which the product provides portability) portable to other GUIs.

V. FEATURES AND SUPPORTED PLATFORMS

[Platform vs Price]
[Features, Other Nifties, and Hidden Costs]
[Hardware Vendors Supported]
[Support Features]

The products in this FAQ are pretty similar in their basic functionality; they each provide function calls or classes that allow the user to build windows, buttons (regular as well as radio buttons and check boxes), menus, menu bars, and the like. Areas of contention seem to be things such as:

Of course, each user will have his own requirements; YMMV.

Now, on to the comparisons. To interpret the tables below, bear in mind the following things:

Another note: given that Sun Microsystems has announced its abandonment of OpenLook in favor of COSE, I'm not sure I'd hold my breath for the OpenLook betas in the tables below. It may just not be worth it for some of the vendors to support a product that has limited (at best) application (in fact, at least one vendor has abandoned an existing OpenLook product).

The following products are listed in this FAQ. Abbreviations are given for product names which are too long to go into the tables.

Alleg
Allegris Workshop, Intersolv (was C++/Views by Liant)
CLIM
Common Lisp Interface Manager, several vendors
DCLAP
Don's Class Application library, Don Gilbert
Eiffel
EiffelVision, ISE
Galaxy
Galaxy, Visix
Graph
GraphApp, by Lachlan Patrick
ILOG
ILOG VIEWS, ILOG
JAM
JAM, JYACC.
Java
Java AWT, Sun Microsystems Inc.
libWxm
libWxm, Visual Solutions
MAINWin
MAINWin/Cross-Development Kit, MAINSoft Corporation
MetaCrd
MetaCard, MetaCard Corporation
Menuet
Menuet/CPP, Autumn Hill Software, Inc.
MEWEL
MEWEL UIL, Magma Systems
MS-MFC
Microsoft Foundation Classes as provided by Microsoft Visual C++ and related products. This does NOT include non-Microsoft vendors who also support MFC (they are listed separately).
NuTCRAC
NuTCRACKER, DataFocus, Inc.
OberonF
Oberon/F, Oberon Microsystems
OI
Open Interface, Neuron Data
OpenUI
OpenUI, Open Software Associates
Qt
Qt, Troll Tech
ScrMach
Screen Machine, Objective Interface Systems, Inc.
StarVie
StarView, StarDivision
SUIT
Simple User Interface Toolkit, University of Virginia
VisAge
VisualAge for C++ and Smalltalk, IBM
VisWork
VisualWorks, Openware
Wind/U
Wind/U, Bristol Technology
WMMOTIF
WM_MOTIF User Interface Library, Software UNO, Ltd.
WNDX
WNDX GUI Toolkit, WNDX
wxWind
wxWindows, Artificial Intelligence Applications Institute
XVT
XVT Portability Toolkit, XVT Software Inc.
YACL
Yet Another Class Library, M. A. Sridhar.
zApp
zApp, RogueWave (Inmark have merged with RogueWave)
Zinc
Zinc, Zinc
In addition, I'd like to mention the following products that are not mentioned in this document (well, not except for here):
Appware
This product has been de-emphasized (which is commonly believed to mean `dropped') by Novell.
Aspect
Looks like `Open' has gone out of business.
CommonV
Word has it that Computer Associates has stopped supporting Glockenspiel CommonView.
GUILD
this seems to be part of the software configuration management tool, Continuus, rather than a toolkit in its own right
Object Windows Library
Borland seem to think `cross platform' means all varieties of Microsoft Windows.
Presentation Services Manager
after months of fruitless searching, I don't believe this is around anymore
STDWIN
This product is no longer supported, but it's free from ftp://ftp.cwi.nl/pub/stdwin/.
Vibrant
I'm told this is no longer supported, but contact info@ncbi.nlm.nih.gov for more information.
Table 1: PLATFORM VS. PRICE (US$ except where noted)

Please check with vendor, as many of these prices may be out of date!

                                         X/    Open-             Next-
Vendor  ASCII DOS  Win(s) Win/NT  OS/2   Motif Look  Mac   PenOS Step
------- -----------------------------------------------------------------------
Alleg   -     -    995(f) 995(f)  995    995   -     -     -     -
Amulet  -     -     -     free    -      free  -     free  -     -
CLIM    .     .    .      .       .      yes   yes   soon  .     .
DCLAP   .     .    (k)    .       .      (k)   .     (k)   .     .

Eiffel  -     -    .      .       -      .     .     soon  -     .
Galaxy  -     -    9600m  9600m   9600m  9600m 9600m 9600m -     .
Garnet  -     -    -      -       -      free  -     free  -     .
Graph   -     -    free   free    -      free  -     soon  -     -

ILOG    -     -    6500   10000   10000  10000 -     -     -     -
JAM     yes   yes  yes    .       .      yes   yes   .     .     .
Java    -     -    -      yes     yes    yes   .     yes   -     .
libWxm  -     -    (h)    (h)     -      yes   -     -     -     .

MAINWin -     -    (h)    (h)     -      8000n -     -     -     .
Menuet  -     499  599    -       599    999   -     .     yes   .
MetaCrd -     -    995(l) 995(l)  -      995(l)-     soon  -     -
MEWEL   1595  395u (h)    (h)     795    yes   -     -     -     .

MS-MFC  -     -    yes    399     -      -     -     1999  -     -
NuTCRAC 1995  -    -      2995    -      (h)   -     -     -     -
OberonF -     -    400v   400v    -      -     -     400v  -     -
OI      yes   yes  5800   6850    6850   9850  9850  4800  .     .

OpenUI  yes   -    3500   soon    4900   7900g -     3500  (w)   .
Qt(q)   -     -    -      1470    -      1470d -     -     -     -
ScrMach 495   495  1995   soon    -      (p)   -     -     -     -
StarVie -     -    499    995     495    1499  1499  499   -     -

SUIT    .     (k)  (k)    .       .      (k)   (k)   (k)   .     .
Tcl/Tk  free  soon free   free    soon   free  free  free  -     .
TWIN    -     -    (h)    (h)     soon   (t)   .     (t)   -     -
V       -     -    free   free    soon   free  -     -     -     -

VisAge  -     -    .      .       .      .     .     -     -     -
VisWork .     .    2995   .       2995   4995  4995  2995  .     .
Wind/U  -     -    (h)    (h)     -      9950  -     -     -     .
WMMOTIF 1500  -    (h)    (h)     -      1995  -     -     -     .

WNDX    .     1000 1000r  1000r   1000r  1000r -     1000r -     -
wxWind  soon  -    free   free    soon   free  free  free  -     .
XVT     -     -    1950   6300ab  1950   6300a (c)   1950  .     .
YACL    -     -    free   free    free   free  -     -     -     -

zApp(i) -     -    1495   1995    1995   4995d -     soon  -     .
Zinc(e) 1499e 499e 499(f) 499(f)  499e   1499  -     499ej 499   .
------- -----------------------------------------------------------------------
Vendor  ASCII DOS  Win(s) Win/NT  OS/2   X/    Open- Mac   PenOS Next-
                                         Motif Look              Step
(a)
This is the price for platforms other than x86-based computers. For x86-based machines (under DOS/UNIX/Xenix -- where applicable), the price is $1950.
(b)
For non-x86 platforms, check for availability -- Alpha and MIPS supported.
(c)
Support for this product has been discontinued.
(d)
per platform, e.g. once for each of SGI, HPUX, etc.
(e)
Zinc requires a single-time purchase of the Zinc GUI Engine at $499, plus the cost for each individual GUI (e.g. HP-UX Motif = $499 + $1499). They also offer several packages, called `bundles', which reduce the total price when you buy several platforms. These are PC (Engine + DOS, Win16/32, OS/2, Mac) $1999; Motif (Engine + all Motif platforms) $4999; Everywhere (Engine + all platforms) $5999. Unicode is $4999.
(f)
Win16, Win32s, and Win32 are packaged together.
(g)
for a PC-based Unix, we're talking $5850.
(h)
This product uses the API that's native on this platform (e.g., support for Win32 under MS-Windows NT); so, in that sense, it supports this platform.
(i)
You can purchase the entire bundle of libraries with zApp Factory for one platform for $8995.
(j)
Pre-release.
(k)
This product is free for non-commercial use. If you make a profit, you'll have to check with the vendor for pricing and availability.
(l)
A single license (any platform) can be used for all supported platforms.
(m)
Each version of Galaxy is able to use the Motif, OpenLook, OS/2 CUA, or Windows look-and-feels. On the Macintosh version the Mac look-and-feel is available along with the others listed above. Also: This is the C price. You're looking at $12.2K for C++.
(n)
The cost drops for subsequent copies. Number 2 is $3500 and number 3 is $2000.
(p)
The pricing here is a little complicated. It was explained to me as follows. "We have both systems based pricing and floating license pricing. The system based pricing runs from $3K (small Sun or SCO) to $24K (big VAX or Sun 2000). The Unix Motif floating license pricing is $6K for the first license and $3K for each additional license."
(q)
Qt is actually sold in terms of Norwegian Krona, so US prices may vary. A `Duo pack' for Win32 and UNIX/Motix for one developer is NOK13950, or about US$2200.
(r)
Per programmer per platform per annum. Check other options online.
(s)
That's Microsoft Windows (TM).
(t)
Annual subscription; Willows has three levels of subscription: Basic for $250 p.a., Standard for $1000 p.a., and Premium for $5000 p.a. Non-commercial users can download TWIN for free, or buy a CD-ROM for $80.
(u)
Price does not include source code (the other MEWEL products do).
(v)
Price includes all platforms supported, in one package.
(w)
Does work on PenOS systems, but does not yet have Pen extensions.
(x)
That's OpenLook.
(y)
That's NextStep.
(z)
DOS Text is sold separately from DOS graphics.

What we're looking at is two groups of products. The lower-priced group is usually C++, is a more recent introduction to the market, is almost always a layered GUI, and concentrates on PC-based operating systems. Products from the higher-priced group usually offer a more stable platform with both greater breadth and depth than does the previous group. In either case, the cost premium for UNIX support is usually a factor of 3 -- that is, the GUI package for a UNIX platform for any PIGUI product is usually 3 times as expensive as the version for DOS/MS-Windows. Other `personal' operating systems (e.g. OS/2 and the Mac) vary as to whether they follow the UNIX pricing or the PC pricing. These are merely observations, your mileage may vary.

Table 2: FEATURES, OTHER NIFTIES, AND HIDDEN COSTS

Vendor  Type(p) LAF(i) Eval(a) Source Royalty Distrib(z) Language Builder(g)
------- -----------------------------------------------------------------------
Alleg   layered native (j)     free   no      .          C++      yes
Amulet  layered native -       free   free    free       C++      soon
CLIM    .       native (u)     .      .       .          Cmn Lisp (u)
DCLAP   .       native free    free   .       .          C/C++    .

Eiffel  emulate native .       .      .       .          Eiffel   yes
Galaxy  emulate native (d)     (e)    no      .          C/C++    yes
Garnet  emulate custom free    .      .       .          Cmn Lisp yes
Graph   emulate native free    free   .       .          C        no

ILOG    emulate native 30      no     no      -          C++      yes
JAM     layered native .       yes    no      .          C        yes
Java    layered native free    (l)    .       .          Java     (l)
libWxm  API emu native 60      4995   .       .          .        .       

MAINWin API emu native 30      no     (w)     (w)        C/C++    yes
Menuet  .       native .       .      .       .          .        .  
MetaCrd emulate native free    no     no      free       MetaTalk yes
MEWEL   API emu native .       (r)    no      no         C(s)     (t)

MS-MFC  .       native .       .      .       .          C++      yes
NuTCRAC API emu native .       no     .       yes        C/C++    .
OberonF emulate native free    free   no      no         Oberon   yes
OI      emulate native (x)     .      no      $8,000     C/C++(k) yes

OpenUI  layered native (q)     (e,b)  no      .          C(h)     yes
Qt      emulate native .       .      no      no         C++      .
ScrMach layered native 30      (e)    no      .          Ada      free
StarVie layered native 30      6000   no      free       C++      yes

SUIT    .       native free    free   .       .          C        .  
Tcl/Tk  .       custom free    free   no      .          Tcl(c)   yes
TWIN    API emu native free    free   no      no         C/C++    .
V       emulate native free    free   no      no         C++      .

VisAge  layered native .       .      .       .          C++,Smal yes
VisWork emulate native 30(j)   100000 yes     .          SmalTalk yes
Wind/U  API emu native 30(j)   (f)    no      $19,500/yr C/C++    (t)
WMMOTIF API emu native (j)     7500   no      no         C/C++    (t)

WNDX    layered native 30      (f)    no      .          C        yes
wxWind  .       native free    free   no      .          C++      (n)
XVT     layered native (j)     yes    no      .          C/C++    yes
YACL    .       native free    free   no      no         C++      .

zApp    layered native 60(j)   free   no      .          C++      $499
Zinc    layered native 60(j)   free   no      no         C++      yes
------- -----------------------------------------------------------------------
Vendor  Type(p) LAF(i) Eval(a) Source Royalty Distrib(z) Language Builder(g)
(a)
This is the number of days that the product can be evaluated. Inside this time, the software can be returned for full money back (minus, possibly, a cost for the evaluation -- check with the vendor).
(b)
Open Software Associates is willing to make a deal for source on a case-by-case basis.
(c)
The Tk part of Tcl/Tk can be used from C/C++ and Java also. There is a shell for Ada, called TASH. There is a version of Tk for Perl and Scheme (Unix et al).
(d)
Give them a P.O. They'll give it back if you don't like the product.
(e)
Source code is held in an escrow account. You can't get to it unless the company goes belly-up. This helps you protect your investment -- if the company goes belly-up, you can do the software maintenance yourself.
(f)
You can buy it, or you can get an escrow account.
(g)
This is a WYSIWYG GUI Builder.
(h)
Pascal, Cobol, and Ada are supported, too, but there wasn't room.
(i)
Look And Feel - as claimed by the vendor. Native means on OS/2 it looks like a Presentation Manager app, on Macintosh it doesn't look like a MS-Windows app, etc. Custom means it has made up a new one of its own.
(j)
There is a cost for evaluation.
(k)
They've taken a `wrappers' approach -- you can't subclass from their C++ classes.
(l)
Source to the JDK and AWT is available, unknown (to me) what licence conditions apply. 3rd party GUI builders abound in beta release.
(n)
Uses SunOS's DevGuide.
(p)
Type means `emulated', `layered', or `API emulated'. This describes how the product approaches support for various GUIs.
(q)
They charge (about $500) for a 90 day (money applicable to purchase) evaluation period. Included is a 1-day training course and phone and fax support.
(r)
ASCII, OS/2, and Unix versions come with source for free. The DOS version is an additional $400 with source. The Motif version can also be purchased.
(s)
You can program in the MS Windows API or use MFC, OWL, or C++/Views.
(t)
Any C/C++-based (depending on the nature of the product) MS Windows Application Builder will work.
(u)
Different LISP vendors support CLIM -- each provides a different set of options and pricing structures.
(w)
MAINWin kind-of charges royalties and/or distribution... there are two schemes, `per product' and `machine general'. When there is more than one product installed on a machine, `machine general' is best, otherwise probably `per product' would suit.
(x)
These guys have a `flexible evaluation structure'.
(z)
This represents a cost per platform or application (check with the vendor) distributed. It's not technically a royalty since the cost is not per unit of software shipped, but it is a cost that one has to consider. These costs are usually limited to commercial applications.
Table 3: HARDWARE VENDORs SUPPORTED

This table makes the most sense for operating systems that work on various types of hardware (e.g., UNIX, Windows NT) rather than for OSs dedicated to a certain type of hardware (e.g., DOS, Microsoft Windows, Macintosh).

                              Win32   Sun     A   U                      
         D O S   A Win Mac    +++++  +++++    X   l                 L    
        +++++++  S +++ +++ O      M  O S      P O t   A   M H     P i   N
        G T 1 3  C 3 3 6 P S  x A I  p n S  I / V r V T S I P A S m n Q E
        f x 6 2  I . 2 8 P /  8 X P  e O o  S U M i M & C P U I G i u N X
        x t x x  I 1 s k C 2  6 P S  n S l  C x S x S T O S X X I d x X T
=========================================================================
Alleg   - - - -  - y c - - c  c . -  - c c  - c . - . . . - c c c - . . .
Amulet  - - - -  - - - c c -  c . .  - c c  . c . . . . c c c c c . c . .
CLIM    . . . .  . p . p . .  p . .  c c c  . . c . . . c c c c c . . . .
DCLAP   . . . .  . c . c c .  c . .  . c c  . c . . . . . . . . . . c . .

Eiffel  - - - -  - y . p p -  c . .  c c c  . . c c c . c c c c c c c . c
Galaxy  - - . .  - - y y c y  y c b  y y c  . c c y y . . c y y c . i . .
Garnet  - - - -  - - - c c -  - - -  . c c  . c . . . . . . c c c . . . .
Graph   - - - -  - c c p p -  c . .  - c c  . c . . . . c c c c c . c . .

ILOG    - - - -  - c c - - c  c b -  c c c  - c - - - - - - c c c - . . .
JAM     - - - -  c c c c c -  c c c  c c c  . c c . c c c c c c c c . . .
Java    - - - -  - p p . y c  y . .  . c y  . . . . . . . . y c c . y . .
LibWxm  . . . .  . e . . . .  . . .  . c .  . . . . . . . c c c c . . . .

Menuet  . . . c  . c . . . c  . . .  . . .  . . . . . . . . . . . . . . .
MAINWin - - - -  - e . - - -  c c c  c c c  p c - - - - c - c c y - - - -
MetaCrd - - - -  - - - p p -  c - -  - c c  - c - c - c c - c c c - c - -
MEWEL   c c . c  c e . - . c  p p p  - c c  - - - - - - c - c c - - . . .

MS-MFC  - - - -  - y y y b .  y y y  - - -  - - - - - - - - - - - - - - -
NuTCRAC - - - -  . - - - - -  y c c  - - -  e e e e e e e e e e e e e . .
OberonF - - - -  - . c c . -  c - -  - - -  - - - - - - - - - - - - - - -
OpenInt . . . .  . c . c c c  c c .  c c c  . c c c c . c c c c c . i . .

OpenUI  - - - -  y y . y p y  c . .  - c .  c c c c c . c - c c - c . . .
Qt      - - - -  - - - - - p  y . .  - c c  . y - - - . c . c c c . y . .
ScrMach - c c c  c c . - - -  p p p  - c .  c . . c c . c - c c c - . . .
StarVie - - - -  y y y y y y  y c c  c c c  - . . p p . p p p c p - p . .

SUIT    c . . .  . c . c c .  . . .  c c c  . c . . . . . . c c c . . . .
Tcl/Tk  p - - -  * - c c c p  y y y  c c c  . c c y y . c c c c c . c c c
TWIN    - - - -  - e e c c p  e e e  . c c  . c - - - c c c c c c . c c .
V       - - - -  - y . - - p  c . .  - c c  . y . . . . c c y c c . y c .

VisAge  - - - -  - . . . . c  c c .  . . .  . . . . . . . . . c . . . . .
VisWork . . . .  . c . c c c  c c .  c . .  . c . c . . . . c c . . . . .
WNDX    c - c c  . c c c c c  c . .  . c c  . . . . . . . . c . c . c . .
WMMOTIF - - - -  c e - - - -  e - -  - c c  c c - - - c c - c c - - c . .

Wind/U  . . . .  . e e . . .  e e e  . y c  . c c . c . . p c y y . . . .
wxWind  - - . .  p c . c c p  b - -  c c .  c . . c . . c c c c y . c . .
XVT     - - - -  y c c c c c  c c -  x c c  x c c x c c c c c c c - p . .
YACL    - - - -  - y c - - c  c c c  - c c  . c . c . . c . c c c . c . .

zApp    - - - -  . c c - - c  c c .  - y c  . - - - - . y . y y c . . . .
Zinc    y y y y  c y y y y y  y c .  - c c  . c c . p c c c c c c c i c c
=========================================================================
         D O S   A Win Mac O  Win32   Sun   I A O U V A S M H A S P L Q N
        +++++++  S +++ +++ S  +++++  +++++  S X V l M T C I P I G m i N E
        G T 1 3  C 3 3 6 P /  x A M  O S S  C P M t S & O P U X I i n X X
        f x 6 2  I . 2 8 P 2  8 X I  p n o    / S r   T   S X     d u   T
        x t x x  I 1 s k C    6 P P  e O l    U   i                 x    
                                  S  n S      x   x
y
indicates that support has been verified by a user report.
c
indicates that the hardware/OS is claimed to work in vendor literature.
e
indicates that this is the API emulated by the software.
b
indicates that the hardware/OS is in beta.
p
indicates that the hardware/OS is planned, but not yet in beta.
x
indicates that support for the hardware/OS is being PHASED OUT.
i
indicates that I've heard that the vendor has ported their libraries, but they are only available in-house.
.
indicates that whether this combination works is unknown.
-
indicates that the vendor doesn't support that hardware.
*
points you at footnote info.
Sun - Open:
SunOS OpenLook
Sun - SnOs:
SunOS Motif
Sun - Sol:
Sun Solaris Motif
AXP/Ux:
AXP Digital Unix
OVMS:
DEC AXP OpenVMS
AT&T:
AT&T System 3000
SCO:
SCO Unix/Xenix
SGI:
Silicon Graphics Irix
Pmid:
Pyramid
Footnotes, denoted by `*'
Tcl/Tk
There is ASCII support for Tcl/Tk, but it is limited. However, it is claimed that `most scripts will run' on it.

Table 4: SUPPORT FEATURES

        With     800                     FTP     Read           Support
Vendor  sale    number? BBS? Compuserv? server? USENET? Other  contracts
------- -----------------------------------------------------------------------
Alleg   .       yes     no   no         yes     yes     (w)    17%/yr (v)
Amulet  .       no      .    .          yes     .       (wb)   -
CLIM    (c)     (c)     (c)  (c)        (c)     (c)     (c)    (c)
DCLAP   none    no      no   no         yes     yes     .      -

Eiffel  .       no      no   no         yes     .       (w)    yes
Galaxy  none    yes     no   no         yes     yes     (wk)   $1,995/yr
Garnet  none    no      no   no         yes     yes     (wb)   no
Graph   none    no      no   no         yes     no      (w)    .

ILOG    30d     yes     no   yes        yes     yes     (wn)   15%/yr
JAM     .       ?       .    .          .       .       (w)    .         
Java    .       .       .    .          yes     yes     (w)    .
libWxm  .       ?       .    .          .       .       .      .

MAINWin 90d     yes     .    .          yes     .       (wh)   $2000/yr(e)
Menuet  .       ?       .    .          .       .       .      .
MetaCrd forever no      no   no         yes     yes     (bhw)  (i)
MEWEL   yes     no      yes  yes        yes     yes     (w)    $250/yr

MS-MFC  .       no      .    .          .       no      (w)    .
NuTCRAC 1 year  no      no   no         yes     yes     (w)    $500-$750/yr
OberonF .       no      no   no         yes     yes     .      yes
OI      .       ?       yes  .          .       yes     (w)    $1200-$2400/yr

OpenUI  90d     yes     soon no         yes     yes     (wh)   12%-30%/yr
Qt      1 year  no      no   no         yes     .       (w)    30%/yr
ScrMach 1 year  yes     no   no         no      yes     (hk)   20%/yr
StarVie .       yes     yes  yes        no      yes     (w)    -

SUIT    .       no      .    .          yes     .       (wd)   -
Tcl/Tk  (t)     no      no   no         yes     yes     (w)    .
TWIN    .       no      no   no         yes     .       (w)    (p)
V       no      no      no   no         yes     no      (w)    .

VisAge  .       yes     .    .          .       .       (w)    .
VisWork (f)     yes     yes  yes        (g)     .       .      $675/yr
Wind/U  .       no      no   no         yes     yes     (wn)   12%-20%/yr
WMMOTIF 30d     yes     yes  yes        yes     yes     (w)    20/yr

WNDX    30d     no      yes  .          soon    no      (hnw)  (p)
wxWind  .       no      no   no         .       yes     (w)    -
XVT     6 mon.  no      yes  yes        yes     (r)     (wb)   (call)
YACL    -       no      no   no         .       yes     .      -

zApp    forever yes     yes  yes        yes     yes     (w)    $395-$1995(a)
Zinc    forever no      yes  yes        yes     yes     (w)    $499/yr(j)
------- -----------------------------------------------------------------------
Vendor  With    800     BBS? Compuserv? FTP     Read    Other  Support
        sale    number?                 server? USENET?        contracts
(a)
$395 for Windows 3.1, $495 for Win32 (95 and NT) and OS/2, $1295 for Unix, or a complete package (all platforms) for $1995.
(b)
There's a mailing list.
(c)
CLIM is a multi-vendor product. See the individual vendor for information.
(d)
There is a SUIT mailing list. Send email to suit-users-request@uvacs.cs.Virginia.EDU for more information.
(e)
That's for one person. The second person is $700, and subsequent users are at $500.
(f)
Installation and temporary evaluation help plus one free general support question.
(g)
Gopher service.
(h)
Support (including distribution) by e-mail.
(i)
Phone support available on a `per incident' basis
(j)
This is for their higher-end support. Simple support still comes for free, but telephone and fax support stops after 60 days.
(k)
They support an email mailing list.
(n)
Newsletter.
(p)
Cost of technical support per year == purchase price of product.
(r)
Informally.
(t)
There are commercial releases, which offer support. Check out the Commerical Uses of Tcl/Tk FAQ - Part 2. http://www.cpu.com
(w)
WWW support.
(v)
Intersolv has `QuickStart' license plus service packages for extra bux, which can accelerate your startup.

Ross McKay
email:rosko@zeta.org.au
$RCSfile: pigui1.htm,v $; $Revision: 3.1 $; $Date: 1997/03/02 08:37:38 $