The finger system has two components: a server daemon and a client application. The server daemon runs on all computer systems which can be "finger'ed" (currently limited to the UNIX operating system or a close derivative.) The client application is the one with which the user interacts. Metafinger is comprised of several finger clients. Although they will work in conjunction with all finger servers, a server which is designed for use with Metafinger was also defined.
Since the GNU finger server already supported the concept of a site, it was chosen for use as the server. A few minor changes (listed below) were required, but it is essentially unmodified.
The client, on the other hand, was completely redesigned. The functionality of the traditional finger client, with one major modification, was moved into a core library, shared by a different client application for each user interface. These client applications - Metafinger for UNIX command line interface and HTTP-Metafinger for the WWW interface - also share filtering and presentation modules.
There was one major change to the finger client required before the filtering and presentation sections (which provide the features described previously) could be implemented. Finger clients traditionally perform no operations on the data returned by a finger server. They merely print each character received on the output device being used. Metafinger, in order to filter the data, must interpret the finger data being returned by the server.
Although I considered fully automatic parsing of the finger data, I settled on building knowledge about a limited number of finger server types into the client. It uses the header line to identify the server supplying the data, then parses subsequent lines based on its knowledge of that server's output format. At this point, "teaching" Metafinger about a new server requires a recompilation.
If several different servers are specified in the list of users
provided at the user interface, the data returned, after being
interpreted and filtered, is merged into a single database before
being passed to the presentation section for display.
The GNU finger server (v1.37) was used, due to its handling of
multiple machines as a site. Aside from normal site configurations,
it was modified to remove some of it's "advanced" features :
The "what" field, which indicated the application currently being
run by a user, was removed for two reasons. The first was privacy
concerns. It is unclear that all users want this information
available freely to anyone on the Net. The second reason is the
information output by the server for each user login is limited to 80
characters. Other local research required that the login time
(normally not present in the GNU finger server output) be reinstated,
and I needed the column space.
In an attempt to reduce the volume of information provided by a
site with even a small number of computers, the GNU finger server only
reported a single user login per machine. Again, this caused problems
as some local users relied on obtaining all the information.
Instead, it is now performed by the finger client based on user preference.
Server Changes
Removal of the "what" field
Removal of server filtering
Meta Finger Top Level
wad@media.mit.edu