server, switch, network, router, the internet, technology, connection, data, cable, ethernet, web, digital, connections, equipment, server, server, server, server, server, router, router, router, router, ethernet, ethernet, ethernet. What the decentralized networks data covers
Photo by dmitrochenkooleg on Pixabay

Maintenance

Part of What actually changes about leaving a decentralized network?

What the decentralized networks data covers

Decentralized networks data: why server figures never add up to a network, what is worth observing instead, and how to store it so it stays usable.

Every number you can get about a federated network is a number about one server. That is the basic unit of decentralized networks data: add the figures up and you have not measured the network, because the parts overlap, disagree about what they are counting, and were counted at different moments by software that defines the terms differently.

That is not a reason to keep no data. It is a reason to be exact about what each figure describes. This page is about which quantities in a federated network are real, which are local, which are double counted, and how to store the difference so a later reader is not misled by your own file.

What to take away

  • A server reports about itself. Nothing reports about the network, and summing server figures produces a number with no referent.
  • The same account appears in many servers' records, so any total is inflated by an unknown amount that cannot be removed from outside.
  • Store every figure with the server, the software, the version, and the moment. A figure without those four is not recoverable later.

What a server can honestly tell you about itself

Federated platforms include Mastodon, Pleroma, Misskey, Lemmy, PeerTube, GoToSocial, and Friendica. Many expose server metadata through NodeInfo, a machine-readable standard discovered at /.well-known/nodeinfo; its discovery document points to a schema endpoint, often /nodeinfo/2.0. Support and fields vary by software and version.

NodeInfo 2.0 uses software.name and software.version for implementation identity, openRegistrations for registration status, and usage.users.total, usage.users.activeMonth, and usage.localPosts for reported counts. The schema defines activeMonth as users active in the last 30 days; localPosts means posts made by users of that server, not a universal count of all copies stored there.

Mastodon's /api/v1/instance response includes stats.user_count, stats.status_count, and stats.domain_count; /api/v2/instance exposes usage.users.active_month. The monthly field is not a weekly count, and should not be treated as an identical activity window across software.

A directory record can use mastodon.social as the server identity: store its hostname alongside software name and version, each reported field and source endpoint, and the observation date. This illustrates a record structure, not a live count or a claim that the domain's current settings were checked.

Server Figures and Their Traps

Figure

Local accounts
Registrations ever
Active accounts
Meet activity test
Posts stored
Local and received
Known servers
Heard from
Blocked/limited
Policy decisions

What it is about

Local accounts
Includes abandoned, never-used
Active accounts
Test changes between versions
Posts stored
Mostly other servers' posts
Known servers
Includes long-dead ones
Blocked/limited
Only if operator publishes

The trap

Local accounts
Active accounts
Posts stored
Known servers
Blocked/limited

Read count fields by their exact names and implementation. NodeInfo's usage.users.total, usage.users.activeMonth, and usage.localPosts do not all measure the same thing; Mastodon's stats.user_count and stats.status_count are separate API fields. A value is not audited, and definitions can vary by implementation and change between releases.

NodeInfo defines activeMonth as activity during the last 30 days; Mastodon's API uses the field name active_month for monthly activity. Keep the field name, software, version, and observation date rather than converting either into a generic MAU or WAU label.

FigureWhat it is aboutThe trap
Local accountsRegistrations on this server, everIncludes abandoned and never-used accounts, and only grows
Active accountsLocal accounts meeting an activity testThe test is the software's, and it changes between versions
Posts storedEverything held, local and receivedMostly other servers' posts; not a measure of this server's activity
Known serversOther servers this one has heard fromIncludes long-dead ones; grows and never shrinks in most software
Blocked or limited serversThis server's own policy decisionsOnly where the operator publishes it, which many do not

The last row is the only one on that table with a stable meaning, and it is a policy fact rather than a measurement.

Why the totals do not add up

Three separate problems make the sum of server figures meaningless, and they push in different directions.

Why Totals Do Not Add Up

  1. Copies counted repeatedly across servers
  2. One person may hold several accounts
  3. Sampled servers are not random
  4. Sum of server figures is meaningless

When a metric counts posts stored on each server, a public post delivered to servers with followers can appear in more than one local store. Summing that kind of storage count therefore counts copies, with the multiplier depending on how widely the author is followed; do not assume a field such as NodeInfo's usage.localPosts measures these remote copies.

For example, if a post from an account on mastodon.social is delivered to mastodon.online because a local account follows it, a metric that counts locally stored copies can include the same post on both servers. Adding those observations counts two copies of one post; this is an illustration, not a measured multiplier.

One person may hold several accounts on several servers. Deduplicating them would require deciding that two accounts on two servers are the same person, which is a record linkage problem with no available key. From outside there is no way to do it, and from inside no single party can see both records. Any account total is therefore an upper bound of unknown looseness.

The set of servers you sampled is not random. You can only collect from servers you know about, and you know about them through some path that favors the large, the long-lived, and the ones that publish. That is sampling bias built into the collection method itself, and it cannot be corrected by collecting harder.

Together these mean the honest answer to "how big is this network" is that nobody knows, including everybody inside it. Say that rather than producing a figure with a footnote nobody will read.

What is worth collecting instead

Structural and policy facts, per server, dated. They are stable enough to be worth the effort and they answer questions readers actually have.

  • Software and version.Two fields, one fetch, and the single most informative pair available. Version tells you what the server can do and whether the operator is keeping up.
  • Registration state.Open, application, invitation, closed. Changes often; decides whether a reader can act on the entry at all.
  • Federation policy publication.Whether the operator publishes what they block or limit, and where. A yes or no plus a link.
  • Continuity statement.Whether anything is stated about notice, backups, or shutdown. Almost always absent, and the absence is the finding.
  • Reachability.Whether the server responded, on a date. A simple observation that becomes a health series the moment you have three of them.
  • Anonymous visibility.Whether a logged-out visitor can read a public post. Decides whether the server's material is on the open web at all.

None of these is a count. All of them can be re-observed identically next quarter, which is what makes a series out of them.

Storing it so it stays usable

One row per observation, never one row per server. A server is a sequence of observations. Collapsing that sequence into a current-state row throws away the only thing that makes the file better than a screenshot.

When correcting a directory entry, preserve the earlier value, observation date, and source method. Add the correction as a new observation rather than overwriting the history.

Each row carries the server, field, and value. It also carries the software and version at the time, the date, and the source method. The last item matters more here than elsewhere.

A value read from a server's own description is the operator's claim, and a value observed by loading a page is a measurement. Mixing them in one column destroys that distinction, and the three-tier separation between observed, published, and unknowable transfers directly.

Add one field the other categories do not need: the vantage point. Some behavior depends on where you fetched from and whether you were logged in. Two observations that disagree may both be right and differ only in vantage.

Reporting without implying a total

When you publish anything derived from this file, the wording carries the whole burden.

Write "of the servers in this catalog" rather than "of the network." Give the count of servers observed and the date range of the observations. Where a proportion is quoted, quote the denominator in the same sentence, and refuse the aggregate a reader will ask for.

There is no honest network-wide account total, and an estimate with error bars would suggest a method that does not exist.

What you can say is comparative and internal to your own set, if every entry was observed the same way in the same window. That small, true claim is more than most published figures about these networks can support.

For the broader architecture, decentralized networks explains how decisions and measurement are distributed until no single server has a whole view.

Common questions

Third-party sites publish network-wide totals. Are they wrong?

Examples of third-party directories or instance catalogs include FediDB, Fediverse Observer, instances.social, The Federation, and joinmastodon.org's server list. Their coverage and methods differ, so treat their totals as snapshots of known servers and self-reported fields, not a complete census or an audited network-wide measurement.

Can I at least count servers?

You can count servers you have observed responding, on a date, which is a real number about your own collection. A total number of servers in existence is not obtainable, because a server nobody has heard from is indistinguishable from one that does not exist.

How often should the observations run?

Quarterly for the structural fields and monthly for reachability, because reachability is the one that changes without warning and the one a reader is most harmed by getting wrong. Anything faster produces rows that differ only in their timestamps.

A server stopped responding. Do I delete the entry?

No: mark it unreachable with the date, keep observation history, and leave the entry visible.

Keep the entry's network and mechanism classification visible; classification by mechanism can help readers identify what the server was for, even after it stops responding.

More in Maintenance

Latest from Records Desk