approachabe & frugal & composable
petite.abeille at gmail.com
Tue Jun 2 02:14:39 BST 2020
As it stands, Gemini  -and especially Mercury - is refreshingly approachable and frugal.
A -very minimal- one-liner Gemini client:
# openssl s_client -quiet -crlf -connect gemini.conman.org:1965 <<< gemini://gemini.conman.org/ 2>/dev/null
Welcome to Conman Laboraties Gemini Server!
And that is that. The whole Gemini protocol in 3 lines.
But what 3 lines!
A request is a single line containing a fully specified URL.
A successful response is a single line containing the numeric response code, a space, and a content-type.
The canonical content, text/gemini, consists of two core line types: text and link.
All UTF-8 encoded. Over TLS.
And that is that.
Quite spartan at first glance.
But also, possibly, quite universal.
Fancy jumping the shark over Zawinski's law  from the onset?
Combine RFC5092  for the request and RFC2045  for the response:
Fancy supporting multiple protocols at once?
Look at conman's nifty sigil script , which supports HTTP, GEMINI, and GOPHER for good measure. From one CGI script.
In other words, because a Gemini request is a full-fledged URL, it can support any number of protocols, as long as such protocol can be expressed as an URL .
Ditto for the response, which can be any media type  a Gemini server cares to generate.
In short, a Gemini URL request combined with a Gemini media type response is quite universal indeed.
Ditto for the rather unassuming text/gemini content type.
While at its core it only sports 2 line types, the presence of the link line, which is an URL, open the door to infinite composition.
Fancy an atom feed? Add a feed URI  in your text/gemini:
Would you like to anchor your text/gemini in a point in time? Perhaps the tag URI can help:
Indicate a location? A geo URI may help:
etc, etc, the possibilities are endless.
Quite a lot of firepower for a two lines protocol, with a two line content type :)
 https://portal.mozz.us/gemini/gemini.circumlunar.space/docs/spec-spec.txt <https://portal.mozz.us/gemini/gemini.circumlunar.space/docs/spec-spec.txt>
 https://portal.mozz.us/gemini/gemini.circumlunar.space/users/solderpunk/cornedbeef/the-mercury-protocol.gmi <https://portal.mozz.us/gemini/gemini.circumlunar.space/users/solderpunk/cornedbeef/the-mercury-protocol.gmi>
 https://en.wikipedia.org/wiki/Jamie_Zawinski <https://en.wikipedia.org/wiki/Jamie_Zawinski>
 https://tools.ietf.org/html/rfc5092 <https://tools.ietf.org/html/rfc5092>
 https://tools.ietf.org/html/rfc2045 <https://tools.ietf.org/html/rfc2045>
 https://portal.mozz.us/gemini/gemini.conman.org/sigil-cgi.lua <https://portal.mozz.us/gemini/gemini.conman.org/sigil-cgi.lua>
 https://en.wikipedia.org/wiki/List_of_URI_schemes <https://en.wikipedia.org/wiki/List_of_URI_schemes>
 https://en.wikipedia.org/wiki/Media_type <https://en.wikipedia.org/wiki/Media_type>
 https://en.wikipedia.org/wiki/Feed_URI_scheme <https://en.wikipedia.org/wiki/Feed_URI_scheme>
 https://en.wikipedia.org/wiki/Tag_URI_scheme <https://en.wikipedia.org/wiki/Tag_URI_scheme>
 https://en.wikipedia.org/wiki/Geo_URI_scheme <https://en.wikipedia.org/wiki/Geo_URI_scheme>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Gemini