<-- back to the mailing list

approachabe & frugal & composable

solderpunk solderpunk at SDF.ORG

Tue Jun 2 21:00:42 BST 2020

- - - - - - - - - - - - - - - - - - - 

On Tue, Jun 02, 2020 at 09:09:47PM +0200, Petite Abeille wrote:

Either a client understands an URI scheme, say http/https, and knows what to do with it (e.g. turn it into an interactive hyperlink of sort, pretty print it somehow, etc), or it doesn't, in which case just display it 'as is'.
In short, only decorate scheme you know, leave the rest alone, and render it as static text.
Never hide anything.
Put another way, text/gemini is fundamentally text. Nothing more, nothing less. And that's good enough for a minimal client.
More advance clients could choose to render links to the best of their abilities, say gemini:// links are turned into navigational aids of sort.
And that is that. This sounds "short and sweet" and simple, but this basically makesGemini infinitely extensible. Link lines stop having anything to dowith the concept of "links", and become vehicles for anything thatsomebody wants to come up with a URI scheme for, which is a large andtotally open category which will grow over time and may come to includevery scary things (for the love of God, there was an IETF draft for ajavascript: scheme! [1]). Giving clients the power to recognise any oldscheme which comes along is guaranteed to induce a repeat of theevolution of the web. Basically we can now think of the line:

=

scheme:restofuri Human friendly label

as equivalent to something like:

<scheme arg1="restofuri" arg2="Human friendly label"/

text/gemini would be fully as extensible as HTML where client authorscan just invent new tags like <blink> and <marquee>. It's exactly whatnobody here wants.

I am *so angry* that there isn't a construct in the internetarchitecture which is *nothing more* than a convenient way to conciselyspecify an application protocol, a hostname or IP address, a port, anda path. This is such an obviously useful thing to have. It's whatalmost everybody *thinks* a URL is, but it turns out that's wrong. Whowould have thought that Gopher's clunky and archaic notation of:

path<TAB>hostname<TAB>port<TAB>

literally has not been improved on in ~30 years?

At this point I am honestly considering speccing that =

lines may*only* use URLs whose scheme corresponds to an application protocol.Permitting *any* RFC-compliant URL is just way, way too open-ended anddefeats the point of so much careful efforts elsewhere in the protocol.

Cheers,Solderpunk