Finger-Protocol
⸺ by Charles Iliya Krempeaux
The finger-protocol is a simple, friendly, human-oriented & human-legible protocol, that has its origins in the early 1970s.
Although some of the usage of the finger-protocol was similar to a directory-service for humans — it evolved into one of the early Internet-based social networks.
(One should note that online social networks existed on other pre-Internet networks. So, while the finger-protocol wasn't the first online social network — it is important because of just how important the Internet became.)
It was not uncommon for people to use finger to publish:
- personal information,
- contact information,
- references to that person's presence on other parts of the Internet,
- a short biography,
- a journal,
- articles,
- jokes,
- (so called) ASCII art (which could contain non-ASCII characters),
- animations,
- and more.
Like with a lot of things from the early Internet — the finger-protocol is decentralized.
The finger-protocol was created and evolved over time, by the software developers who created the finger-client software, and the finger-server software (as well as the user who chose to use or not use a particular implementation). Later on — at least 6 years after the finger-protocol was first created, IETF RFC-742 was published, in an attempt to describe the pre-existing finger-protocol. I.e., IETF RFC-742 did not create a new protocol, but instead just tried to document and describe what was created by software developers outside of the IETF. 14 years later after RFC-742 was published, and at least 20 years after the finger-protocol first existed and was evolving — RFC-1288 was published in an attempt to remove some of (what some perceived as) the ambiguity of RFC-742, to make it easier for both people who would implement a finger-protocol client or server, and to provide some guidance. However RFC-1288 added restrictions to the finger-protocol that did NOT exist in RFC-742. In 1991 some of these restrictions may have seemed reasonable, however today (in the year 2022) some of the restrictions probably do not make as much sense (and should probably be reconsidered). This document is in part an attempt to reconsider one of these restrictions that RFC-1288 introduced but which didn't exist in RFC-742 — in particular, how to handle a switch other than the "/W" switch.
Historically people and even machines were identified by user names at a host name. For example:
cikrempeaux@reiver.link
Someone could request information from or about a user at a host using one of the historic finger terminal applications. On the command-line, a simple finger request could be performed with something like the following:
finger cikrempeaux@reiver.link
A finger-protocol server could return anything it wanted. But the spirit of the finger-protocol is that the output should be first, given what technologies are available at the time (and & second if at all).
Also, being a simple protocol, made creating a simple client often trivial for many. For example:
echo '/W cikrempeaux' | nc reiver.link 79
Small-Net
Nowadays (as the year 2022), the finger-protocol is considered a protocol.
Example
Here is a very simple example finger response, using a more vintage format:
Login: reiver Name: Charles Iliya Krempeaux Directory: /home/reiver Shell: /usr/bin/bash Last login Thu Dec 01 02:05:59 2022 UTC No Mail. Plan: _ ( ) H H _H_ .-'-.-'-. / \ | | | .-------'._ | / / '.' '. \ | \ \ @ @ / / | '---------' | _______| | .'-+-+-+| | '.-+-+-+| Hello world! | """""" | '-.__ __.-' """
Finger-Protocol Advantages
The finger-protocol has a number of advantages:
- the finger-protocol is a protocol (rather than just a programmer-legible or machine-legible protocol),
- the finger-protocol is simple enough for even a more junior software developer to be able to understand it,
- the finger-protocol and its default data-format are simple enough for a competent software developer to be able to create a (simple) working client as a weekend project,
- the finger-protocol is simple enough for a competent software developer to be able to create a (simple) working server as a weekend project,
- all of a (single) user's content is provided as a single download,
- a client could make a request from a server for a user who is not (necessarily) local to that server,
- key-value pairs are in a format that is , , and .
Finger-Protocol Disadvantges
The finger-protocol also has a number of disadvantages:
- when a client receives a response from a server, it does not know whether it received all the data or not, as, for example, the network connection could have been disconnected prematurely, but there is no way to detect this,
- there is no tamper detection,
- there is no way to determine whether the finger (.plan) file was actually from the user whose content was requested,
- there is no way to choose privacy,
- the entire finger (.plan) file must be download each time, even if the exact same finger (.plan) file was previously downloaded,
- identity is strictly tied to an Internet domain,
- there is no official way of segmenting the download (into sub-pages).
History
Here is some history of the finger-protocol —
On February 19th, 1990, Lester Donald Earnest was quoted (by Sean Colbath) on the group alt.folklore.computers saying:
Finger was named for the act of pointing. I recall that sometime after it became popular I received a message from a system administrator who thought that it should be renamed so that users would not have to use a "dirty" word. I gave his request all the consideration that it deserved. I created Finger around 1971 to meet a local need at the Stanford Artifical Intelligence Lab. People generally worked long hours there, often with unpredictable schedules. When you wanted to meet with some group, it was important to know who was there and when the others would likely reappear. It also was important to be able to locate potential volleyball players when you wanted to play, Chinese food freaks when you wanted to eat, and antisocial computer users when it appeared that something strange was happening on the system. The only tool then available for seeing who was running on our DEC-10 computer was a WHO program that showed IDs and terminal line numbers for people who were logged in. There was no information available on people who were not logged in. I frequently saw people running their fingers down the WHO display saying things like "There's Don and that's Pattie but I don't know when Tom was last seen." or "Who in hell is VVK and where does line 63 go?" I wrote Finger and developed the supporting database to provide this information in traditional human terms -- real names and places. Because I preferred to talk face to face rather than through the computer or telephone, I put in the feature that tells how long the terminal had been idle, so that I could assess the likelihood that I would find them there if I walked down the hall. The program was an instant hit. Some people asked for the Plan file feature so that they could explain their absence or how they could be reached at odd times, so I added it. I found it interesting that this feature evolved into a forum for social commentary and amusing observations. Finger was picked up by a number of other groups with DEC-10 computers that were connected to Arpanet -- software flowed in all directions around the net in those days. It later migrated to Un*x, probably via U.C. Berkeley. Somewhere along the line the idea arose to provide a network Finger service. I don't remember who suggested that but it seemed like a good idea at the time so I stuck it in. Some other anxious people wanted to be able to verify that their mail was delivered to specific addressees, so the Mail feature was also added. While I was somewhat surprised by the popularity of Finger, it has not been as successful as an earlier program that I invented -- the spelling checker. It too was created to fill a personal need that many others apparently share. We didn't think about commercial development and software protection in those days, but if we had we probably could have made something out of it. On the other hand, I enjoyed the comradery of those gentler times and have no regrets.