Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/reiver/fediverse-protocol-following

fediverse protocol: following
https://github.com/reiver/fediverse-protocol-following

activitypub activitypub-protocol dns-srv dns-srv-records host-meta webfinger

Last synced: 6 days ago
JSON representation

fediverse protocol: following

Awesome Lists containing this project

README

        

# Fediverse Protocol: following

This document gives an overview the process used to follow someone (or something) on the Fediverse.

What it describes is the idealized process.

When a particular Fediverse software does _not_ implement a step described in this document, it is mentioned.

## Table of Contents
* Step 0: Actor
* Step 1: DNS SRV
* Step 2: Web Host Metadata
* Step 3: WebFinger
* Step 4:

## Step 0: Actor

People on the Fediverse are identified with identifiers that look like these:

* `@[email protected]`
* `@[email protected]`
* `@[email protected]`

There are 2 parts of these identifiers —

1. actor name, and
2. host.

Let's take a look at an example to help make this clearer:

```
@[email protected]
\--+--/ \-----+----/
| |
actor name host
```
In this example —

* the **actor name** is `dariush`, and
* the **host** is `changelog.ca`

Let's look at another example:

```
@[email protected]
\--+--/ \----+----/
| |
actor name host
```
In this example —

* the **actor name** is `joeblow`, and
* the **host** is `example.com`

Here are a number of other examples:

| Actor | Actor Name | Host |
|---------------------------------------|------------|------------------------------|
| `@[email protected]` | `joeblow` | `example.com` |
| `@[email protected]` | `janedoe` | `apple.banana.cherry.social` |
| `@[email protected]` | `dariush` | `changelog.ca` |
| `@[email protected]` | `malekeh` | `social.example.net` |
| `[email protected]` | `tom` | `apple.aaa` |
| `[email protected]` | `dick` | `banana.bbb` |
| `[email protected]` | `harry` | `cherry.ccc` |

Now on to the next step....

# Step 1: DNS SRV

The next step to follow someone on the Fediverse is —

Do a DNS SRV look-up on the **host** (you inferred in the previous), with **protocol** = `"tcp"` and **service** = `"webfinger",` to discover if the **WebFinger** is on this **host** or another **host**.

So, for example, if your actor identifier was:

> `@[email protected]`

Then that means that the **actor name** and **host** is as follows:

| Actor | Actor Name | Host |
|---------------------------------------|------------|------------------------------|
| `@[email protected]` | `joeblow` | `example.com` |

So then, a DNS SRV look-up on **host** = `example.com` with **protocol** = `"tcp"` and **service** = `"webfinger"` means we look-up `_webfinger._tcp.example.com.`

If something comes up, then that is the new value for **host** in the next step.
If nothing came up, then keep the same value for **host** in the next step.

# Step 2: Web Host Metadata