|
||
---|---|---|
.. | ||
README.md |
An estimate of investments in the Fediverse
Introduction
To provide an estimate of the investments made into the Fediverse, defined1 as a decentralized interoperable network of social media sites, apps, and services built on the ActivityPub protocol, is a daunting task, owing due to:
- a lack of research (in our experience) on this topic thus far;
- the vast number of services part of the Fediverse2;
- the Fediverse's decentralised nature;
- involvement of voluntary contributions;
- the third-party nature of some of the integrations.
Nonetheless, we have taken upon ourselves the task to provide a first glimpse on this subject. Given the Fediverse's interoperability empowers users, a better overview on the resources in this technology helps clarify its momentum for key decision-makers interested in adopting, investing in and interfacing with this technology. We further hope our work will contribute and ignite more serious research into this topic.
In this document we describe our assessment of the investments made in the Fediverse. We start with describing our methodology for gathering data on the Fediverse and share information on the services, platforms and software applications we have deemed relevant to include.
Methodology
In order to better scope our research, we will address the mentioned challenges by:
- given the lack of research on this topic so far, gathering missing data by contacting representatives of the respective projects;
- to account for the vast number of services part of the Fediverse, focusing on the major services3 part of the Fediverse, in this case the software with at least 10,000 active monthly users as per Fediverse Observer2, in total accounting for over 95% of the active users across Fediverse services, i.e.:
- Threads
- Mastodon
- Pixelfed
- NodeBB
- Lemmy
- Peertube
- Loops
- Wordpress
- WriteFreely
- to account for the Fediverse's decentralised nature, extrapolating for each service to their overall number of (visible4) instances from their flagship instances;
- to account for the involvement of voluntary contributions, separately citing internal versus overall contributors active on the projects, and extrapolating from the former to estimate the latter;
- to account for the third-party nature of some of the integrations, explicitly distinguishing these in our overview.
NodeInfo
Fediversity instances tend to expose data using the NodeInfo protocol (https://nodeinfo.diaspora.software/). Data exposed this way is gathered in https://fediverse.observer/, which we use as our source for metrics:
- estimated number of installations
- estimated number of users
- estimated number of monthly active users
Human resources
Moderators
On users with moderation privileges ActivityPub unfortunately exposes no structured data yet, although this is an outstanding feature request5.
In addition, for some single-tenant platforms such as WriteFreely, moderation does not apply. Platforms that support user sign-ups, such as Mastodon, may similarly disable user sign-up, in which case moderation similarly is not relevant.
Developers
The amount of active developers we estimate as users:
- as identified by unique emails
- who are not bots, as measured by whether their name contains 'bot',
- who contributed at least 5 commits to the default Git branch at the main forge/fork
- over the past year.
We obtain this metric by running a Nushell query6 on the project's respective Git repositories.
Based on project estimations on internal engineers involved measured in FTE, we further estimate the total amount of development involved by extrapolating from these FTE figures to include external contributors based on their relative number of commits --- thereby for the purpose of this estimate presuming similar time and effort required for external versus internal commits.
System administrators
Used system resources
CPU
- minimum/average/peak percentage of (number of) CPU cores used?
- CPU model used
storage
in e.g. GB currently used by the instance
networking
in e.g. min/max/average MiB/s in/out of the instance, along with physical caps potentially limiting these
Capital
A closer look at the Fediverse platforms
Project | Installations | monthly active users |
---|---|---|
mastodon | 8033 | 736878 |
pixelfed | 501 | 126065 |
nodebb | 43 | 52399 |
lemmy | 407 | 41341 |
peertube | 962 | 25804 |
loops | 1 | 26548 |
wordpress | 2863 | 11510 |
writefreely | 492 | 11188 |
Estimating investments in the Fediverse
Notes
References
- https://en.wikipedia.org/wiki/Fediverse
- https://fedidb.org/
- https://mastodon-analytics.com/
- https://www.thinkimpact.com/mastodon-statistics/
- https://fediverse.observer/
- https://the-federation.info/
- https://fediverse.party
- https://socialhub.activitypub.rocks/t/fep-f1d5-nodeinfo-in-fediverse-software/1190
- https://codeberg.org/fediverse
- https://hachyderm.io/@esk/113793277371908181
Changes
Older versions of this directory lived here: 0006758ab7/Fediverse-investments-an-estimation.md
-
Kissane, E., & Kazemi, D. (2024, September 4). Findings Report: Governance on Fediverse Microblogging Servers. https://fediverse-governance.github.io/#brief-glossary ↩︎
-
Note that this focus would exclude work on protocols such as W3C's work on the ActivityPub protocol, as well as on non-core repositories, and ancilliary software whose development is run by others than by the lead developers of the mentioned services, such as bridges, cross-posters, third-party clients, browser extensions, instance indices, etc. ↩︎
-
Visibility, for our purposes meaning exposing metadata using the NodeInfo protocol, for Mastodon, the Fediverse service with the highest amount of active users, notably excludes an instance with more active users than its biggest visible instance https://mastodon.social/, namely Donald Trump's Truth Social. ↩︎
-
This feature requested may be tracked at: https://github.com/swicg/activitypub-trust-and-safety/issues/25 ↩︎
-
The used query here is:
git log --pretty=%h»¦«%s»¦«%aN»¦«%aE»¦«%aD | lines | split column "»¦«" commit subject name email date | upsert date {|d| $d.date | into datetime} | where ($it.date > ((date now) - 365day)) | where not ($it.name has 'bot') | group-by name | transpose | upsert column1 {|c| $c.column1 | length} | sort-by column1 | rename name commits | where ($it.commits >= 5) | reverse | length
↩︎