Informal Gemention Specification

This is a (very) informal specification for Gementions, an attempt to introduce a Webmentions-like protocol into Geminispace.

This is a living document, and is under heavy development. It can and will change without notice. The information here should NOT be assumed to be complete yet, or even anywhere close to fleshed out.

What are Gementions?

The intent is for a gemention to be similar to a Webmention: a like, comment, or some other piece of data that exists in response to something posted in Geminispace. Unlike webmentions, gementions will also support a more direct commenting system, based on client certs and (hopefully) some kind of you-are-human verification.

This means a gemention can come in two forms:

Client-to-Server (C2S) Gementions

The first phase of implementation will focus on C2S gementions, which is a fancy term for making blog comments over Gemini/Titan protocol. The intention is to lay down the foundations of the server-to-server part during this time.

Important items:

Incoming comments will be managed by a gemention server.

Server-to-Server (S2S) Gementions

Server-to-server gementions are the ultimate goal of this project. An S2S gemention acts more like a traditional Webmention, and will make use of the Titan protocol to exchange messages between two gemention-enabled capsules in order for comments, likes, etc to appear on the target capsule.

Important items:

Webmention Proxying

The gemention server will also provide a proxying facility to translate Webmentions into Gementions. For this to work, the capsule must have a corresponding HTTP/HTML page, and the HTTP and Gemini pages need to be able to verify that they belong to one another.

Verification Mechanisms

It is important to have verification mechanisms in place to limit spam and make sure gemention requests are legitimate. The main verification mechanism is that a given page must inform the user that it is Gemention-enabled.

It is proposed to allow two different methods:

S2S Verification

For server-to-server gementions, the publishing server can send a titan key to the receiving server, which itself can then ask for the gemention from the sending server by using the key. This is an easy way to prevent random or spoofed gementions from a given source server.

Gemention Server

All of the above will be facilitated by a Gemention server. A gemention server is a Gemini/Titan server that provides a standard set of functions and endpoints for Gementions to work. The goal of the project is to produce a prototype, which will hopefully eventually become a reference implementation.

Standard Endpoints

Given a domain of "example.com" and a Gemini URL (without the gemini:// prefix) of <target>:

Gementions are submitted to one of the Titan endpoints, depending on whether it's a user commencing directly or one capsule communicating to another. Gementions for a given target URL are displayed by accessing the gementions endpoint over Gemini protocol.

The target Gemini URL must have the receive endpoint links on it as a verification mechanism. Alternatively, the links can be listed in the gemention.txt file.

Examples

These examples assume a domain of example.com.

Submission of a comment:

titan://example.com/c2s/receive/example.com/gemlog/my-post.gmi

‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗‗

⤴️ [/section/gemini-webmentions] 🏠 Home