{"id":13719630,"url":"https://github.com/reiver/finger-request-switch","last_synced_at":"2026-02-03T15:32:37.256Z","repository":{"id":64024802,"uuid":"572678422","full_name":"reiver/finger-request-switch","owner":"reiver","description":"An updated specification for a finger-protocol request","archived":false,"fork":false,"pushed_at":"2022-11-30T20:56:12.000Z","size":15,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-22T08:48:17.966Z","etag":null,"topics":["finger","finger-protocol","small-internet","smallnet","smallweb","smol-internet","smolnet","smolweb"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reiver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-30T19:46:53.000Z","updated_at":"2025-02-09T00:39:44.000Z","dependencies_parsed_at":"2023-01-14T19:15:18.209Z","dependency_job_id":null,"html_url":"https://github.com/reiver/finger-request-switch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/reiver/finger-request-switch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiver%2Ffinger-request-switch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiver%2Ffinger-request-switch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiver%2Ffinger-request-switch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiver%2Ffinger-request-switch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reiver","download_url":"https://codeload.github.com/reiver/finger-request-switch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reiver%2Ffinger-request-switch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29047901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:19:55.533Z","status":"ssl_error","status_checked_at":"2026-02-03T15:13:09.723Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finger","finger-protocol","small-internet","smallnet","smallweb","smol-internet","smolnet","smolweb"],"created_at":"2024-08-03T01:00:53.153Z","updated_at":"2026-02-03T15:32:37.235Z","avatar_url":"https://github.com/reiver.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Finger Request Switch\nby [Charles Iliya Krempeaux](http://changelog.ca/)\n\n## Preamble\n\nThe **finger-protocol** is a simple, friendly, human-oriented \u0026 human-legible protocol, that has its origins in the early 1970s.\n\nAlthough 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.\nIt was not uncommon for people to publish personal information, contact information, referencs to that person's presence on other parts of the Internet, a short biography, a journal, articles, jokes, (so called) ASCII art, and more, via the **finger-protocol**.\n\nOne should note that online social networks existed on other pre-Internet networks.\nSo, while the **finger-protocol** wasn't the first online social network — it is important because of just how important the Internet became.\n\nThe **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).\nLater 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**.\nI.e., IETF RDC-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.\n14 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.\nHowever RFC-1288 added restrictions to the **finger-protocol** that did NOT exist in RFC-742.\nIn 1991 some of these restrictions may have seemed reasonable, however today (in 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.\n\n## Introduction\n\nThis document is an updated specification for a **finger-protocol** request\n\n## Finger-Query Specification\n\nUsing the same style of notation as IETF RFC-1288, here is an updated specification for a **finger-query**:\n```\n        {Q1}    ::= [{W}|{W}{S}{U}]{C}\n\n        {Q2}    ::= [{W}{S}][{U}]{H}{C}\n\n        {U}     ::= username\n\n        {H}     ::= @hostname | @hostname{H}\n\n        {W}     ::= /switchname\n\n        {S}     ::= \u003cSP\u003e | \u003cSP\u003e{S}\n\n        {C}     ::= \u003cCRLF\u003e\n```\n\n## What Changed\n\nThe change is the definition of `{W}`.\n\nIn IETF RFC-1288 it was:\n```\n        {W}     ::= /W\n```\n\nIn this document, it has been updated to:\n```\n        {W}     ::= /switchname\n```\n\nWhat this means is that — instead of the **finger-protocol** just having this switch:\n```\n/W\n```\n\nThe **finger-protocol**  can have any of these types of switches too:\n```\n/PUSH\n/PULL\n/LIST\n/PICK\n/banana\n/path/to/something.ext\n/once\n/once/twice\n/once/twice/thrice\n/once/twice/thrice/fource\n```\n\n## Parsing\n\nGiven a **finger-request** —\n\nFor example —\n```\n\"/PULL dariush@changelog.ca\\r\\n\"\n```\n\nOne can tell if a **finger-request** has a **switch** by looking at the first character of the finger-request.\n\nIf it is a `\"/\"` character (i.e., a solidus character), then the **finger-request** has a **switch**.\nElse if it isn't a `\"/\"` character (i.e., a `solidus` character), then the **finger-request** doesn't have a **switch**.\n\nAll the characters following the `\"/\" character` (i.e., the `solidus` character) up to, but not including a `space` character or (if there is not `space` character) a terminaling \"\\r\\n\" (i.e., `\u003cCRLF\u003e`), is part of the `switchname`.\n\nSo, for example, with out example **finger-request** —\n```\n\"/PULL dariush@changelog.ca\\r\\n\"     \n```\n\nThe `switchname` is `\"PULL\".`\n\n## Examples\n\nHere are a number of example **finger-requests** where we specify what the `switchname` is\n\n```\n/PUSH\n# switchname = \"PUSH\"\n\n/PULL\n# switchname = \"PULL\"\n\n/LIST\n# switchname = \"LIST\"\n\n/PICK\n# switchname = \"PICK\"\n\n/banana\n# switchname = \"banana\"\n\n/path/to/something.ext\n# switchname = \"path/to/something.ext\"\n\n/once\n# switchname = \"once\"\n\n/once/twice\n# switchname = \"once/twice\"\n\n/once/twice/thrice\n# switchname = \"once/twice/thrice\"\n\n/once/twice/thrice/fource\n# switchname = \"once/twice/thrice/fource\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freiver%2Ffinger-request-switch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freiver%2Ffinger-request-switch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freiver%2Ffinger-request-switch/lists"}