# Introduction to NCSA Mosaic for X 2.0

This document is intended to serve as an introduction to NCSA Mosaic for the X Window System version 2.0. It covers new features in version 2.0, and changes from version 1.2, that will affect most users of Mosaic.

For more information on any of the details in this document, please feel free to send mail to mosaic-x@ncsa.uiuc.edu (or, alternately, to the World Wide Web mailing list www-talk@info.cern.ch or the Usenet newsgroup comp.infosystems.www).

## Status Of Documentation For 2.0

We are currently writing real Mosaic 2.0 documentation; it isn't yet available, for which we apologize. In the meantime, this document should at least help current users of Mosaic 1.2 upgrade to 2.0 without too much pain.

## Potential Problems

This section is an up-front listing of how Mosaic 2.0 is different than Mosaic 1.2 in ways that may cause apparent trouble to existing 1.2 users.

- The Mosaic executable has been renamed `Mosaic`, and the new class name for Mosaic is, predictably, `Mosaic`. Existing Mosaic 1.2 X resources and application defaults files should be modified to match.

- The method by which you customize the viewers Mosaic uses for various datatypes (e.g. MPEG movies or PostScript documents) has completely changed.

  First, the multimedia X resources (e.g. `gifViewerCommand`) used by Mosaic 1.2 are totally ignored by Mosaic 2.0. (Trust me, this is really a good thing.)

  Second, you now have complete control over the types of data Mosaic can understand and what it does with each type, as well as the file extensions that correspond to each type (when communicating with a HTTP0 or FTP server).

  Third, Mosaic now uses the MIME typing mechanism for naming data types (e.g., the MIME type for a GIF image is `image/gif`). This provides a substantial amount of interoperability with the present and future of multimedia email on the Internet, but will require a little readjustment on the part of users who are used to simply calling GIF files "type GIF", etc.

  For more information on these issues, see:

  - Information on mapping MIME types to external viewers.
  - Information on mapping file extensions to MIME types.

- Mosaic 2.0 speaks the HTTP/1.0 protocol, while Mosaic 1.2 spoke the pre-HTTP/1.0 protocol commonly referred to as "HTTP0" or "HTTP/0.9".

  This means that Mosaic 2.0 sends more complex queries to HTTP servers than Mosaic 1.2 did. If you are running a fairly recent HTTP0 server (e.g. NCSA httpd 0.5), this should not be a problem -- the new protocol is backward compatible, and Mosaic will go to great lengths to make sure it interacts with the HTTP0 server correctly.

  However, some old HTTP servers (anything pre-1993) will break completely when sent a HTTP/1.0 query, and Mosaic 2.0 won't be able to make things work. Such servers are actually in violation of the final HTTP0 protocol specification and should at least be upgraded to conform to that specification, if not HTTP/1.0.

- HTTP/1.0 servers are by now (November 1993) fairly widespread, and many sites are using them without even realizing that they are HTTP/1.0 servers, because they also talk HTTP0 to clients (like Mosaic 1.2) that only talk HTTP0.

  It is important to realize that HTTP/1.0 mandates server-side typing of files. This means that the server must recognize, for example, that the file extension "`.gif`" means that the file is a GIF image (i.e., MIME type `image/gif`), and must communicate this information to the client within the HTTP/1.0 retrieval process. HTTP/1.0 clients like Mosaic 2.0 will not look at file extensions to determine file types when talking to HTTP/1.0 servers -- if the server gets the type wrong, the client will not look at the suffix to try to figure out the right type.

  This means that if all of a sudden a file that Mosaic 1.2 always handled as an HTML document is handled by Mosaic 2.0 as if it is a binary data file, and the file is being served off an HTTP/1.0 server, the server is (almost surely) at fault for not informing the client of the correct type.

  Related issue: Transparent uncompression is currently never done when talking to a HTTP/1.0 server. This will be fixed in a maintenance release. We do however discourage reliance on transparent uncompression in general, as clients on other platforms (e.g. NCSA Mosaic for the Mac & Windows) generally can't uncompress files compressed using the standard Unix methods (`compress` and `gzip`).

  (Note to the skeptical: server-side typing is actually a powerful feature of HTTP/1.0, despite any migration problems it may cause. Also note that Mosaic 2.0 will still do file extension typing when talking to HTTP0 servers, so you can always continue to run a HTTP0 server in conjunction with Mosaic 2.0 if you prefer client-side typing.)

- Mosaic 2.0 does not have the hardcoded `Documents` and `Manuals` menus that were in Mosaic 1.2. They were removed for a number of reasons too boring to go into here. If, however, you find yourself "lost in cyberspace" because of the loss of those hardcoded menus, choose the "Internet Starting Points" entry in Mosaic 2.0's `Navigate` menu -- Mosaic will fetch a document from NCSA that contains the contents of Mosaic 1.2's hardcoded menus in HTML form.

  Also see the new "Internet Resources Meta-Index", also under Mosaic 2.0's `Navigate` menu, for an alternate set of Internet starting points perhaps more suitable to the task of locating any specific piece of information on the network.

## New Features In Mosaic 2.0

OK, this is the fun part. What will Mosaic 2.0 do for you?

- Completely interruptible I/O. At any point in a data transfer process (hostname lookups and certain stages of direct WAIS queries excepted), you can click on the icon in the upper right corner of the window to stop the current network action.

- Fill-out forms. As per the current HTML+ spec, documents can specify interactive fill-out forms -- with input elements including text entry areas, toggle buttons, selection lists, popup menus, etc. -- and Mosaic will instantiate such fill-out forms as sets of Motif widgets embedded inside the documents.

  This provides a way to provide arbitrarily sophisticated front-end interfaces to databases and search engines, as well as other network services -- e.g., ordering pizzas.

  See details on fill-out forms.

- Authentication. Thanks to Ari Luotonen at CERN, Mosaic can now communicate properly with HTTP/1.0 servers that demand user authentication before accessing information -- the user is presented with an opportunity to enter a username and password to authenticate herself to the remote server.

  Currently, the "`BASIC`" authentication scheme is supported, which provides for encoded (not cleartext, but not encrypted) transmission of password data across the network. This provides a level of security at least as secure as, e.g., `telnet`.

  Once a user is authenticated on a particular server, Mosaic is smart about caching and reusing the authentication information in subsequent transactions with the same server in the same session -- the user will be informed at any time the cached authentication fails and will be provided with the opportunity to enter a new username and password again.

  See the CERN authentication overview for more information.

- Direct WAIS access. Mosaic can now talk directly to WAIS servers without needing to go through an intermediate gateway. This also means:

  - Mosaic can cleanly retrieve and properly handle binary data (images, audio, video, etc.) as well as HTML documents from WAIS servers. Mosaic 2.0's normal customization mechanisms can be used to customize what happens when various types of binary data are accessed from WAIS servers.
  - Mosaic natively supports freeWAIS's ability to tie together multiple data files with different formats under a single umbrella (e.g. as a result of a query across text, the user may be presented with her choice of text, image, or audio).

  Examples of direct WAIS access:

  - Direct access to CNIDR WAIS directory of servers.
  - Direct access to InterNIC RFC WAIS server.
  - A search on the term "MIME" in the InterNIC RFC WAIS server.
  - RFC 1437 from the InterNIC RFC WAIS server.

- Full format/viewer/extension customizability, including the ability to allow local shell scripts to be launched from hyperlinks.

  For more information, see:

  - Information on mapping MIME types to external viewers.
  - Information on mapping file extensions to MIME types.
  - Information on allowing shell scripts to be executed via hyperlinks.

- Native viewing of HDF and netCDF scientific data files. Here are some examples:

  - An HDF file of a galactic jet.
  - A complex HDF file containing lots of different data elements, including hyperlinks within annotations.
  - A netCDF file.
  - An image of NCSA Director Larry Smarr.
  - A huge (5+ megabytes) HDF file of satellite weather image and associated metadata.

  Note: since it is possible for Mosaic 2.0 to be compiled without native HDF/netCDF viewing support, your particular copy may not be able to view the above examples.

- URL redirection. This means that a server can return, instead of a document, a pointer to a document anywhere on the Internet. When this happens, Mosaic will transparently attempt to fetch the new document.

  Among other things, this enables clean graphical distributed information space mapping -- a single image map can have hotspots corresponding to information resources scattered throughout various information servers across the Internet, and the user can jump to any of those resources with a single mouse click.

  For an example of URL redirection in conjunction with image mapping, see the experimental Internet Resources Metamap.

- Inlined image caching, including customizability of the amount of memory Mosaic will use to cache inlined images (default is 2048 kilobytes).

  Use the command line flag `-ics` or the X resource `imageCacheSize` to set the size of the image cache in kilobytes.

- Delayed image loading, for users with slow network connections. Use the `-dil` command line option or set the `delayImageLoads` X resource to True to enable delayed image loading by default; it can be controlled on a per-window basis from Mosaic's `Options` menu.

- HTTP/1.0 support. In addition to enabling things like fill-out forms support, redirection, and authentication, this means that Mosaic can talk with the new breed of sophisticated HTTP/1.0 servers being deployed on the network to the fullest extent of their -- and Mosaic's -- ability.

  See also the CERN HTTP/1.0 spec.

- Better hypermedia document display capabilities:

  - Documents can be arbitrarily long now.
  - Normal document text is formatted to the width of the visible window, not the width of the widest element (e.g. sections of preformatted text) in the document.
  - Support for `<BR>` (line break) and `<HR>` (horizontal rule) tags.
  - Sophisticated support for inlining Motif widgets into documents, which enables the fill-out forms support described above.
  - Performance speedups.

- URL canonicalization -- a fancy way of saying that Mosaic strips redundant or useless information (like capital letters in hostnames, ":80" in HTTP queries and ":70" in Gopher queries, and trailing dots in hostnames) out of all URLs it accesses. This makes the global history tracking much more consistent by improving the odds that two slightly different URLs that point to the same document are recognized as identical by Mosaic.

- Improved system resource management -- many memory and socket leaks were fixed. Due to these fixes and the inlined image caching mentioned above, Mosaic should not be terribly hard on your system even if you use it for a long time now.

- Better PostScript output, including output of color inlined images.

- Cute little icons in Gopher and FTP interfaces.

- Enhanced remote control features, including ability to scroll through documents from shell scripts and cleanly fire off external viewers (e.g. images and audio).

- Mouse tracking -- see the URL for the hyperlink under the pointer.

- Menu item `File->Refresh Current` provides a convenient way to restore proper inlined image colors in a given window if the colors have been previously stolen for another window's inlined images -- keyboard accelerator (with pointer inside the scrolled document viewing window) is Capital-`R`.

- Configurable `Documents` menu, for local site configuration.

- Full compile-time customizability of home page, docs directory, and all other hardcoded URLs for sites without direct Internet access.

- Lots and lots of bug fixes and minor functionality and performance improvements.

## More Information

You may wish to look over an exhaustive list of technical changes that took place during the development of Mosaic version 2.0.

To take full advantage of Mosaic 2.0's capabilities, you should run a very smart HTTP/1.0 server. We recommend NCSA httpd. If you prefer a Perl-based server, try Plexus. Other options are CERN httpd and GN.

Experimental tutorials on various Mosaic-related topics are now available. Comments welcome (send 'em to marca@ncsa.uiuc.edu).

- Tutorial on using Mosaic and WAIS together (including information on using WAIS as a back-end search engine for HTTP servers).
- Tutorial on user authentication with NCSA httpd 1.0a5 and Mosaic 2.0.
- Tutorial on making graphical information maps using NCSA httpd 1.0a5 and Mosaic 2.0.
- Tutorial on form creation/submission with examples of form servers that send mail based on submissions.