Ibiyemi Abiodun
« main pageDitto (v2)
Totally customizable social media as a serviceApril 2023 to August 2023
Check out a copy of Ditto’s home page on the Internet Archive.
Ditto (v2) was my second try at entrepreneurship after I graduated from university. With the help of a cofounder, I built a product that lets people easily manage a custom social media site on the internet. I’m talking about custom themes, custom community rules, custom recommendation algorithms, custom domains. All of the services running on Ditto shared data with each other and with other ActivityPub-compatible sites like Mastodon.
That wasn’t what Ditto referred to when we started. Back then, it was a search engine that harnessed the power of large language models and web scraping to provide a more complete picture of what’s going on on the web. Read all about it here.
The engineering
For Ditto v2, I built two services: fed
and bigfed
.
fed
Each Ditto Space corresponded to one instance of fed
, which was responsible
for providing an API for the mobile app and website and managing users, posts,
and permissions.
fed
was designed so that it could run in as a server or as an AWS Lambda
function in anticipation of the load we would experience upon scaling to
thousands of sites (only a fraction of which would be super active at any given
time).
In addition to serving as the backend for Ditto, fed
was also the source of
truth for federation. Federation refers to servers exchanging data with each
other to create a distributed network of information. In this case, the posts of
Ditto users were being federated between Ditto Spaces and to remote servers.
bigfed
There was only one instance of bigfed
. This was an ActivityPub relay that
collected activity from relays and fed
instances,
annotating each post with key words and vector embeddings before dumping them
into an Elasticsearch index so that they could be discovered by a recommender
algorithm.
The mobile app
Ditto was mobile-first, and so it needed an app. I wrote this app in React
Native. It communicated directly with fed
instances, and users could easily
switch which fed
instance they were on (much like switching between subreddits
in the Reddit app).
The business
Ultimately, Ditto didn’t end up working out. Let’s call it bad luck. But hey, at least I saved the landing page on the Internet Archive before my former business partner took the site down.