
WHAT IS WAFE

We have developed a package that implements a symbolic interface to
the Athena widgets (X11R5). A typical Wafe application consists in our
framework of two parts: the front-end (we call it Wafe for
Widget[Athena]front end) and an application program running typically
as separate process. The application program can be implemented in an
arbitrary programming language and talks to the front-end via stdio.
Since Wafe (the front-end) was developed using the extensible TCL
shell (cite John Ousterhout), an application program can dynamically
submit requests to the front-end to build up the graphical user
interface; the application can even down-load application specific
procedures into the front-end.

The distribution contains sample application programs in Perl, GAWK,
Prolog, TCL, and C talking to the same Wafe binary.  Most of the
following demo applications are implemented in Perl 4.0.19:

	- xwafeftp:  FTP front-end
	- xwafemail:  Mail user front-end with faces, using elm aliases
	- xwafenews:  NNTP client, using elm aliases

	- xdirtree:  tree directory browser
	- xprojektor:  white board program for the classroom
	- xbm:  bitmap and pixmap viewer
	- xwafemc:  multiple choice test answering program

	- xruptimes:  rwho monitor like xnetload
	- xnetstats:  front-end for xnetload -i <someintervall>
	- xvmstats:  front-end for vmstat -i <someintervall>
	- xwafeping:  pings several machines an show up-status

	- xwafecf:  a simple read only card-filer
	- xwafetel:  a simple read only Oracle front-end for looking up
		telephone numbers
	- xwafeora: a more elaborated Oracle front-end with updates 
		capable to model an entity type with distinct
                predicate defined subtypes, allowing multi valued attributes 
 		(it comes with sample applications "filing management"
	         and "paper base") doing command completion and other
		 funky stuff

	- xprimfakt.awk: gawk primfakt program using wafe
	- xprimfakt.prolog: prolog primfakt program using wafe
	- xprimfakt.perl: perl primfakt program using wafe
	- xprimfakt.c: c primfakt program using wafe
	- xprimfakt.tcl: TCL primfakt program using wafe
	- cprimfakt.c: native c implementation of primfakt

HOW DOES IT WORK

Suppose you have an application program named "app". If we install a
link like "ln -s wafe xapp" and execute "xapp ", the program "app" is
spawn as a subprocess of wafe and connects its stdio channels with the
front end.  Lines written from the application program to stdout are
read from Wafe. If the line starts with a certain character (such as
%) Wafe tries to interpret the remainder of the line as TCL command.
The standard TCL shell has been extended with new commands exploiting
Athena widget set and the XPM library to build up user interfaces with
the window system named X.

ADVANTAGES 

    -  application program can be written in wide range of programming
       languages
    -  relatively high level interface to widget applications
    -  single wafe binary for multiple applications
    -  better refresh behavior when application program is busy
    -  click ahead
    -  better separation between user interface and
        application program matters 
    -  no need to hack C code


REQUIREMENTS FOR APPLICATION PROGRAMS

In order to use Wafe, an application program must be able to write
**UNBUFFERED** to stdout (the application program must at least be able
to flush the buffer) and to read from stdio. The application program
determines the syntax in which Wafe talks back.


AVAILABILITY

Wafe was developed on DECstations 5000/200 under Ultrix 4.2 using
X11R5, and has been tested on a SparcStation 1+ under SunOS 4.1,
RS6000/320 under AIX and on a HP 9000/720 under hpux 8.05. Wafe can be
compiled under X11R5 and X11R4. We were also able to build wafe under
Interactive Unix using static libraries.


NECESSARY, BUT NOT INCLUDED 

Most application of the distribution are written in Perl. Perl 4.0 is
needed to run these applications. Two applications will need oraperl.
Only user with an Oracle license might find wafeora and wafetel
useful.
 

PRERELEASE

The current distribution is a prerelease (version 0.9). The final
version will be posted after we got some feedback/suggestions from the
network.


ACKNOWLEDGEMENT

The Wafe project would have been impossible without the availability
of software in source form such as 

	- X11R5 distribution from the MIT
	- TCL and TK (John Ousterhout)
	- Perl (Larry Wall)
	- XPM-Library (lehors@sophia.inria.fr)
	- dbug-Library (Fred Fish)
	- oraperl (Kevin Stock kstock@gouldfr.encore.fr)
	- ftp.pl package by: Alan R. Martello <al@ee.pitt.edu>
	- chat2.pl package by: Randall L. Schwartz <merlyn@iwarp.intel.com>.
	- nntp.pl package by: Randall S. Krebs

Only the most important packages are listed here.



DIRECTORY STRUCTURE

	.../wafe
		README
		COPYRIGHT
		INSTALLATION
		src/
			genc
			wafe.c
			Imakefile
			wafe.man
			wafedoc.tex
			...
		apps/
			Imakefile
			wafe.config
			wafeapp.man
			hardcopy/
				...
			mail/
				Imakefile
				...
			news/
				Imakefile
				...
			ftp/
				Imakefile
				...
			monitoring/
			...
		xpm-3.1/
			...
		tcl-6.2/
			...
		dbug/
			...


# Copyright (C) 1992 by Gustaf Neumann, Stefan Nusser
#
#     Wirtschaftsuniversitaet Wien, 
#     Abteilung fuer Wirtschaftsinformatik
#     Augasse 2-6, 
#     A-1090 Vienna, Austria
#     neumann@wu-wien.ac.at, nusser@wu-wien.ac.at
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appears in all copies and that both that
# copyright notice and this permission notice appear in all supporting
# documentation.  This software is provided "as is" without expressed or
# implied warranty.

Every user is permitted to create derivative work to this program.
However, all copies of the program and its derivative works must
contain the above copyright notice. We would like to ask every user to
supply a copy of any change, enhancement or derivative work to the
mailing address 

		wafe@wu-wien.ac.at

Thank you in advance.


Wafe 0.9 can be obtained via anonymous ftp from

	ftp.wu-wien.ac.at:pub/src/X11/wafe-0.9.tar.Z

(for people without name server: the ip address is 137.208.3.5)

