\documentstyle[doublespace, fullpage]{article}
\begin{document}

\section{What Willow and Wilco are}

Collecting documents into a central location makes research more
convenient because travel between research sites becomes unnecessary,
or at least less frequent.  However, it is still incredibly time
consuming to search a large collection of documents if they are not
sorted and categorized.  For this reason, people have been using and
refining organizational schemes for documents for as long as they have
been accumulating documents.

Originally, the librarian knew how to find anything in the library,
either remembering where everything was or knowing how to search the
library organizational records.  Recently people have started wanting
to be able to find things on their own without asking the librarian
for help.  The problem with this is that library records were geared
toward people who knew how the library and the records were organized,
who knew what they were doing and what they were looking for when they
searched.  The patrons need an easy method of searching that can be
used by people who do not know how the library and its records are
organized.

This dichotomy becomes quite clear when developing a program to search
library databases.  Librarians want to be able to take the most direct
possible route to what they seek.  Patrons want intuitive commands and
simple options.

Another problem when making it possible for people to do online
library searches is that every library has its own database format and
interface.  No one wants to learn to use a different program for every
library she needs to search.  It is impractical to require all
libraries to have the same user interface because different types of
information need to be available for different types of documents.
Also, people designing and implementing databases should not be
restricted to old interfaces that may not be appropriate to the
situation or that were chosen poorly.

Willow is an attempt to implement the ideal of having a single point
and click user interface which is useful for both librarians and
patrons that provides a consistent way for users to interact with many
different database search engines.  Willow uses different drivers for
different databases, providing compatibility with different libraries.
Also, Willow allows searches based on different criteria for different
databases, letting the user make the most efficient and convenient
possible use of each database.  Possible criteria include title words,
exact title, author words, keywords, and words in the abstract.  Once
a search has been successfully completed, Willow can display a
summary or the full text of the resulting journal articles, and even
save the results through methods including ftp and email.

Willow is a bibliographic database search program with a graphical
interface that uses Motif.  Its text-based counterpart is called
Wilco.  Wilco provides the same basic functionality, but can be used
by clients that do not have X.

\section{What I have done}

Willow and Wilco were originally written for Decstations.  Some gross
hacks were put into place to make Willow build on Suns running Solaris
and on RS6000s.  I rebuilt Willow for Decs, Suns, and RS6000s using
Motif 1.2 and x11r5.  Then I built Willow for Sgis, merged the changes
that required back into the source tree, and neatened up the gross
hacks.  The changes I had to make included surrounding several
function prototypes with \#ifndef SYSV to avoid redeclaration errors
while compiling, and changing the Config file so Imake would not
create Makefiles that called ranlib on platforms on platforms other
than Dec.  (Dec is the only relevant Athena platform that has ranlib.)
Additionally, I prepared releases of Willow for Suns, RS6000s, and
Sgis.

The original version of one of the Willow source files, helpshell.c,
uses gunzip to decompress help files.  At MIT, we cannot be sure that
users will have gunzip available (they might not have the right locker
attached), so a local hack to decompress help files was inserted into
the code some time ago.  There was a bug in said local hack, though,
which caused Willow to core dump if compressed files were retrieved
via http.  I created several possible patches for this bug, meeting
various possible requirements.

\section{What I am still doing}

Willow's default startup behavior is to display a database-independent
initial screen from which the user can use a menu to choose a database
to which to connect.  Wilco, on the other hand, connects to the
Medline database by default if the user does not specify a database on
the command line.  The Willow default behavior is preferable, and I
have been trying to learn enough about the Wilco code to alter it to
behave the way Willow does.

\section{What still needs to be done}

If I am unable to correct Wilco's default behavior, someone else will
need to do it.  Two major bugs that I know about still exist.  First,
Willow compiled with Motif 1.2 core dumps if you attempt to cut and
paste if /usr/lib/X11/nls does not exist.  Second, when Wilco cannot
find the driver it wants to use to connect to a database, it gives an
incredibly unhelpful error message.

\end{document}
