Featherweight text protocols
----------------------------

Alex Schroeder recently wrote a server[1] and client[2] for a very
simple text-only protocol which he described as being "basically
Gopher without the menus".  This inspired me to offer, on Mastodon,
the following impromptu ultra-minimalist protocol specification:

1. All connections are TLS secured
2. Requests are a UTF-8 encoded selector and a CLRF, nothing more
3. Responses are guaranteed UTF-8 encoded text
4. No further structure of response is guaranteed
5. Clients should be able to extract any URLs from anywhere in the
   text and construct a menu, with interface of their own choosing.

Alex's system doesn't actually quite meet this criteria, but it's very
close.  I have started thinking of protocols like the above as
"featherweight" protocols.  If you ignore the TLS part, the above is
actually a *subset* of standard gopher!

I imagine the above featherlight spec might be popular with ratfactor,
who recently wrote[3] that:

* Faced with gopher's confusing and unreliable approach of allowing a
  server to deliver absolutely anything while offering almost no way
  to provide information as to what's being served, they would prefer
  to make things more simple and less flexible by just limiting things
  to UTF-8, rather than make things more complex and more powerful by
  adding MIME types.  That's every bit as valid a response to the
  problem.
* They were tempted to suggest a system where links be presented as
  raw URLs with any friendly text for the user.

I always really enjoy pushing the limits of minimalism, and I think
ideas like these do precisely that.  I actually expect that with a bit
of work, systems like these could be made fairly comfortable.  While
they are less capable than gopher, they could support the vast
majority of a typical gopher enthusiast's daily use, like reading
phlogs.  Imagine, gopher menus as bloat!

Ultimately, a featherweight protocol isn't the direction I want to
take Project Gemini in, but don't take that as a disparagement of the
idea.  I think they're really nifty, and I'm definitely interested to
read more ideas or experiments along these lines.  Some featherweight
clients might make very usable "emergency clients" for a lot of Gemini
content!

[1] gopher://alexschroeder.ch:70/02019-06-18_A_Simple_Text_Server
[2] gopher://alexschroeder.ch:70/02019-06-19_A_Simple_Text_Client
[3] gopher://sdf.org:70/0/users/ratfactor/phlog/2019-06-18-protocol-pondering-x-solderpunk