This talk from FSCK 2025 introduces Bluesky, a decentralized social network, and focuses on its capability for user-created custom content feeds. The speaker, redsolver, details their open-source tool, Skyfeed, designed to make building these feeds accessible. Skyfeed offers a visual editor for assembling feeds from various inputs (full network, user lists, other feeds) and applying filters (regex, likes, custom code), and also supports publishing the feed's definition openly. The presentation covers the AT Protocol underpinning Bluesky (PDS, Relays, Appview), its open real-time data stream (Jetstream), and the motivation for user-controlled algorithms as an alternative to opaque, commercially-driven social media feeds. Technical aspects of Skyfeed's infrastructure, including its Rust-based core engine, caching strategies, and plans for a dedicated feed definition language and sustainable funding, are also discussed.
Building Open Bluesky Feeds with Skyfeed
0:14 Introduction to Decentralized Social Networks: The speaker advocates for decentralized social networks to combat issues like platform lock-in, data loss, and lack of control over user data common in centralized platforms.
1:11 Bluesky Overview: Bluesky is presented as a microblogging platform built on the new AT Protocol, designed for decentralization by making system components easily swappable (e.g., changing handles/domains without losing identity or data). It currently boasts 3.5 million users, with strong growth in the US.
Personal Data Servers (PDS): Each user has a PDS responsible for hosting their data (posts, likes). PDS instances are designed to be light and easy to host, and users can retain control of their keys.
Relays: These consume real-time data streams from all PDSes, aggregating them into a single, publicly consumable stream. Relays are more resource-intensive but a second independent implementation has recently emerged.
Appview: The most complex layer, it consumes the Relay stream, aggregates data into a database, and provides an API for client applications (like the official Bluesky app) to display content and build views (e.g., reply trees, user posts). Efforts are underway by the community to develop independent Appview implementations.
7:52 Open Data & Jetstream: All data on Bluesky (posts, likes, blocks) is fundamentally public and broadcast in real-time. Jetstream is a service that simplifies the consumption of this raw data stream by providing a more user-friendly, JSON-based WebSocket stream of events.
12:26 The Case for User-Controlled Algorithms: The speaker argues that while traditional social media algorithms often serve commercial interests (maximizing engagement, showing ads) and lack transparency, algorithms themselves can be powerful tools for content discovery and personalizing feeds if users have control over their functionality.
14:07 Bluesky Custom Feeds: A core feature of Bluesky is the ability for any user to create and publish custom content feeds. These feeds are defined by a standard Bluesky record containing metadata and a DID (Decentralized Identifier) that points to a domain hosting the feed generation logic.
17:52 Skyfeed - A Tool for Building Feeds: The speaker developed Skyfeed, an open-source tool that originated from their custom Bluesky client. Skyfeed offers a visual editor, making it accessible for non-programmers to create and iterate on complex custom feeds quickly.
22:04 Skyfeed Visual Feed Builder: Users construct feeds by chaining various blocks: input sources (e.g., the entire network, specific user lists, or other feeds), filters (e.g., regular expressions for keywords, minimum like counts, removing duplicates), and sorting methods (e.g., by popularity, random order). The interface shows the number of posts and processing time at each step.
23:48 Open Feed Definitions & Stateless Infrastructure: A key aspect of Skyfeed is the transparent publishing of feed definitions within the feed record itself. This allows anyone to inspect how a feed works. Skyfeed's infrastructure is stateless, meaning it doesn't store user data and processes feed requests based on these publicly available definitions.
Caching Layer: An aggressive caching layer, utilizing DragonflyDB, is crucial for performance, serving frequently requested feeds quickly (currently refreshing every 1-5 minutes).
Core Engine: The main query engine, migrated from Dart to Rust, efficiently processes uncached feed requests using advanced data structures like Roaring Bitmaps. The engine is open-source under the AGPL license.
31:02 Advanced Skyfeed Features: The live demo showcased filtering network-wide posts by regex (e.g., for "Apfelsaft" or "Hello World" posts), inputting from various sources (other feeds, user lists, moderation services), filtering by embeds, and an experimental custom code block for advanced logic (e.g., remove if like_count < 1000). Personalized feeds (e.g., "Mutuals" or a user's most popular posts) are also possible, though they are computationally intensive and currently require manual approval.
41:34 Future Developments for Skyfeed: Plans include developing a more expressive, dedicated language for defining feeds (beyond the visual blocks/JSON), integrating with community detection algorithms (like Skygraph) to create cluster-based feeds, and leveraging the rhai scripting engine for custom scoring functions.
44:11 Statistics & Funding: Bluesky hosts approximately 100,000 custom feeds, with 86,000 currently hosted on Skyfeed due to its efficient caching. The project is primarily funded by GitHub Sponsors, but the speaker is exploring additional sustainable funding models, such as enabling others to self-host Skyfeed engines or implementing donation-based access for resource-intensive features.