Gemini Mention

So, what is ``Gemini Mention?''

Gemini mention is a simple protocol to notify a URL when it's being linked, and for pages to request such notifications. It is based upoon Webmentions, but with modifications to work within the Gemini community.

Webmention

Conformance

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", " SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119.

RFC-2119 Key words for use in RFCs to Indicate Requirement Levels

Discovery of a Gemini endpoint

To specify the location of a Gemini mention endpoint, a Gemini page MUST have a link pointing to it. This link MUST contain a query string of "gemini-mention" to make it easy for a client to location the endpoint.

=> gemini://example.com/cgi-bin/gm.cgi?gemini-mention Are you talking to me?

The query string "gemini-mention" is not used further in the protocol---it only serves to mark the endpoint itself. An implementation SHOULD support queries to the endpoint with the query string "gemini-mention" by sending a description of the protocol (like this text), or redirect to a page of text. A client SHOULD NOT send the Gemini mention endpoint the query "gemini-mention".

If a Gemini page does not contain a Gemini mention endpoint, a client SHOULD NOT send a Gemini mention about that page to the server. A client SHOULD only send Gemini mentions to pages with the Gemini mention endpoint specified in the page.

Rational

An issue with Gemini is that there are no headers in the reply to send this link, nor are is there a way to embed the link within the document with the required semantics as one can do via HTTP or HTML:

GET /the-post HTTP/1.1
Host: example.com
Link: <https://example.com/cgi-bin/wm.cgi>

<html>
<head>
  ...
  <link rel="webmention" href="https://example.com/cgi-bin/wm.cgi">
  ... 
</head>

<body>
  ...
  <a rel="webmention" href="https://example.com/cgi-bin/wm.cgi">
  ...
</body>
</html>

Requiring a known path for the Gemini mention might restrict who can participate in receiving Gemini mentions, or require major changes to a particular server implementation. Also, requiring specific text as the description would restrict it to English speakers. That leaves the only solution to be a particular query string to mark the Gemini mention endpoint to use.

The Protocol

Gemini mentions are sent from a source URI to a target URI to inform the target URI that the source URI has linked to it (all links are for example only):