fedify Main Island

The Nodeinfo Notice Board

ja· en· ko
If you're new hereA self-introduction placard that posts what software this server runs and how many people live here.

You post your server's self-introduction in a form the whole universe can read. What software it runs, how many people live here—your island shows up on fedi statistics sites thanks to this notice board. Raising it and reading it are each one function.

The reader's etiquette is what's worth seeing here. Other people's notices are often malformed, so a chain of defensive parsers quietly turns a broken placard into null. It's built to let another island's circumstances pass without blame.

Highlights

  • A corner within the Main Hall (packages/fedify/src/nodeinfo, about 2,000 lines). Three sheets: client.ts / handler.ts / types.ts.
  • Protocol is a union of string literals—not just activitypub, but names from older universes too: diaspora, ostatus, xmpp.

A passage from the sutra

export function parseProtocol(data: unknown): Protocol | null {
  // cSpell: disable
  if (
    data === "activitypub" || data === "buddycloud" || data === "dfrn" ||
    data === "diaspora" || data === "libertree" || data === "ostatus" ||
    data === "pumpio" || data === "tent" || data === "xmpp" ||
    data === "zot"
  ) {
    // cSpell: enable
    return data;
  }
  return null;
}
packages/fedify/src/nodeinfo/client.ts L306-L318— The names of older universes still remain in the ledger

Floor plan

packages/fedify/src/nodeinfo/client.ts
getNodeInfo() and the chain of forgiving parse* functions
packages/fedify/src/nodeinfo/handler.ts
The side that raises the notice (handleNodeInfo/handleNodeInfoJrd)
packages/fedify/src/nodeinfo/types.ts
The NodeInfo/Software/Protocol types

Neighboring rooms

Outside links