why is likes.fyi like this

Today I want to talk about the origins of the project and a bit about how it operates. If you want the tl;dr check out introducing likes.fyi. This post is going to go into some detail.

likes.fyi: Origins

I'm a person who enjoys a good piece of media and loves to share with others. For the past several years I've been building up a backlog of music videos, animation, games, websites, and more that I want to share with the world.

I've never found a great way to convert those lists into something that's easy to look at on the web. For a while I tried using Tumblr and it worked pretty well but I wanted something where I had more control. I built prototypes with Hugo and Zola backed by json, markdown, and yaml files. I didn't like how tedious it was to share a new bookmark. At best you had to run a tool and work through a wizard. At worst you had to write a config file.

atproto solves this by giving every user an internet-facing database that they can use to store whatever they want. That means it's always1 available for both reads and write over the web. There's no need to store any state locally, it can all live in the user's PDS.

atproto has a lot of interesting ideas but I think this is the big one for me. Of course, this is not the only solution to the problem. There are plenty of good databases available over HTTP. But atproto brings along some benefits that I really like. So let's talk about

Why The AT Protocol?2

There are three things about atproto that I'm interested in for this project:

open, user-controlled data – user data is stored in public on the protocol under the user's control. Each atproto app is only one way to work with that data. Others can use the same data to build on top of what's already there or build something entirely new

structure and validation – lexicons provide a way to describe the structure of your data and to validate user records. This saves time during development and enables interoperability with other atproto apps

the social graph – since most people come to atproto via the Bluesky ecosystem, they usually have a social network already established on the protocol. Other applications (like likes.fyi) can take advantage of that graph for their own social features

I think these enable a lot of really interesting possibilities for link sharing and discovery. I'm excited to explore atproto and see what new ideas come up as I dig in.

Project Goals

My first goal is to learn more about atproto and explore what's possible when you're building on top of it. That's the main reason I'm doing any of this, but it would be cool to make something useful too.

To that end, my second goal is to create a tool that anyone can use to share the stuff they like with the world. I'll be satisfied if that's as far as I get, but there's plenty more to be done after that.

And my final, constant goal is to make likes.fyi delightful. If it was fun to make it should be fun to use.

When making decisions in this project, I try to keep the following in mind:

respect the user and their data and prioritize user consent

it should be fun, easy, or ideally both

design for a broad range of user experience levels

design for customization and extensibility

build in the open...

thoroughly document and publish our work

open source as much as possible

...for the atproto community

use standardized or community lexicons

create integrations for existing ecosystems

pull requests before workarounds or duplication

I'm sure I'll end up talking about these principles in detail later as they come up.

Future Plans

ATmosphere Ecosystem Interop

There are already several bookmarking tools on the ATmosphere including kipclip and monomarks. likes.fyi can take advantage of this data to (e.g.) streamline the process of sharing your existing bookmarks. It may also enable other features as yet uncontemplated!

Social Features

There are a lot of interesting possibilities when you've got access to a built-in social graph. You could see what links are popular among your mutuals, or find new people to follow based on similarities in what links you share. You could visualize the spread of a single link through the network as it is shared and reshared and crosses from one community to another. There are tons of possibilities to be explored.

Generic Backends

I'm building the initial version on atproto because I want to explore what you can do with a huge social graph and open data. There's no technical reason why it has to be stored on atproto, so in the future I'd like to support other backends.

Your Idea Here...?

If you're excited about what you could do with a graph of social sharing I'd love to talk about how likes.fyi can help realize your vision. Find me on bsky at @bleything.net.

What's Next?

I'm currently in the process of building a proof of concept demo that covers the core features of saving a bookmark and publishing it on a website. There should be a dev diary all about that coming soon™. Stay tuned here or on bsky at @likes.fyi.

modulo client connectivity and service reliability ofc

🎶 Bill Wurtz style chord the notation for which would make a decent password 🎶