[tech] Proposed reversed Gemini for uploads to servers - Feedback wanted

benthor benthor at posteo.de
Wed Dec 30 00:29:12 GMT 2020


Hi all,

I may have come up with a practical way to upload content to 
Gemini servers in-band, that is, speaking only valid Gemini 
(mostly) within the Gemini protocol specification.

The proposed mechanism allows a Gemini client to temporarily act 
as a Gemini server, with the Gemini server briefly playing the 
part of a Gemini client. Entirely within an otherwise standard 
Gemini transaction, a server and client can agree to swap roles, 
with the server then waiting for any content that the client may 
send (i.e., "upload") to the server.

Being in a sense, "reversed Gemini", I've decided to call this 
mechanism "Inimeg"[1].

Inimeg strictly follows the Gemini spec and only extends it in 
three respects:

* The "inimeg://" URL scheme, used by a Gemini client for an 
  Inimeg "upload" request
* The 7X range of status code, sent by a Gemini server in response 
  to an Inimeg request
* The Inimeg transaction, a Gemini transaction with partial role 
  reversal

I was careful not break or be in conflict with solarpunk's 
excellent Gemini spec. A heavily inspired "speculative 
specification" for Inimeg can be found at [2].

Do not hesitate to try out Inimeg in the open Playground, as 
mentioned in [1]. Much less work has gone into the crude server 
implementation[3] than the spec but it should serve to demonstrate 
the general idea. (Note that the same server process that hosts 
the spec [2] also hosts the playground, so please don't be too 
unfriendly with it. It should hold up to casual experimentation 
though.)

So. What do you think?

benthor

[1]: gemini://inimeg.space/
[2]: gemini://inimeg.space/specification.gmi
[3]: https://git.sr.ht/~benthor/lunokhod

(gemini://inimeg.space only speaks TLS 1.3 at the moment, I humbly 
apologize to the folks who are stuck with TLS 1.2)



More information about the Gemini mailing list