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