An outsider's view of the `gemini://` protocol

Ciprian Dorin Craciun ciprian.craciun at gmail.com
Mon Mar 2 13:40:06 GMT 2020


On Mon, Mar 2, 2020 at 3:39 AM Sean Conner <sean at conman.org> wrote:
> > So, if we really want to keep things simple why not change this into:
> >
> > * (we only use one digit to denote success or failure);
> > * `0` (i.e. like in UNIX) means success, here is your document;
> > * `1` (i.e. again like in UNIX) means "undefined failure", the client
> > MUST display the meta field to the user as plain text;  (please note
> > that this "soft"-forbids the client and server to implement any clever
> > "extensions";)
>
>   I still like numeric values as they are language agnostic.  I mean, what
> If I get back:
>
>         Bhí teip ann an clár a chur i bhfeidhm
>
> Would you even know what language to translate from?


If a client would receive such a status it would reply to the user:
"server error: invalid protocol".  Why?  Because I'm not advocating
for "any sequence of ASCII characters", but a predefined (thus limited
and known) list of tokens that are accepted.


More clearly, there are two separate issues:
* the syntax -- one digit, vs two digits, vs any number of digits, vs
ASCII tokens, etc. -- i.e. the serialization of an error condition;
* the semantic -- be it `2`, `200`, `success` -- i.e. how many
different "response" classes do we want to specify;




> > * `2` not found / gone;  (i.e. the server is working fine, but what
> > you are searching for does not exist at the moment;  perhaps it
> > existed in the past, perhaps later it will exist;)
>
>   There is a distinction between "gone" and "not found".  "Gone" means "it
> was once here, but has since been removed, please stop referencing this
> resource" (i.e. "remove it from your bookmarks file"), while "not found"
> means just that---it's not here.
>
>   I mentioned to solderpunk that I wish gopher had a "gone" message (along
> with redirect, which I'll get to below), since there is a good reason to
> mark something as "gone" and not just "not found".


I understand the "philosophical" distinction between "gone" and "not
found";  but how often have you encountered a web server that properly
responds with "gone"?  Or, given that many `gemini://` servers will be
static servers using the file-system, how would one "know" if a
selector refers to a "gone" file?




> > * `3` redirect;  neither temporary nor permanent; (because in fact
> > there isn't a clear definition and usage of temporary vs permanent;)
>
>   A valid reason for a temorary redirect might be to redirect users to the
> most current resource available, say, a specification.  A base link like:
>
> [...]
>
> One can always link directly to a specific version, but the current will
> *always* be found at a known location.
>
>   The actions are the same, but the semantics are different.


I think that if one would apply a case-by-case analysis, one could
find better solutions.

For example in your documentation case, how about instead of
redirecting we present an `text/gemini` resource that provides a short
summary, a link to the current version, and a list of links to
previous versions.

I would say it makes more sense because:
* the user isn't surprised anymore by the redirect, and is aware that
there are multiple versions;
* in order for older versions to be indexed by a crawler, we always
need such a "links page", thus why not make proper use of it;

Ciprian.


More information about the Gemini mailing list