Skip to main content


For the last several months I've been working on making a federated app.

I just finished migrating it to use the latest iteration of our new #leafprotocol data format on top of the #willowprotocol and so far it's going really well.

In this post I share some of the concepts and rational behind the Leaf Protocol:

https://zicklag.katharos.group/blog/introducing-leaf-protocol/

#fediverse #protocol #iroh

This entry was edited (2 weeks ago)
in reply to Zicklag

"One of the problems with this is that your server only knows about things that have been sent to one of its inboxes."

This is untrue. Any AP server can request data from any other server to stay in synch. Literally every AP object comes with an URL to fetch its full information.

in reply to Evan Prodromou

"they’re not necessarily able to transfer or migrate a users data, creating a level of lock-in despite the open protocol."

You should see LOLA.

https://swicg.github.io/activitypub-data-portability/lola

in reply to Evan Prodromou

ActivityPub is very extensible. You can make all kinds of interesting patterns on top of it.
This entry was edited (1 week ago)
in reply to Evan Prodromou

I don't disagree that you can make all kinds of interesting patterns on top of AP. AP is extremely flexible, but also requires unofficial draft extensions like LOLA to satisfy my use-case.

To make ActivityPub feasibly accomplish my goals would take more work than making my own simple solution.

And in the end I would have an increasingly complicated half-compatible version of ActivityPub, instead of a simpler protocol that does exactly what I need.

🧵

This entry was edited (2 weeks ago)
in reply to Zicklag

@evan As far as the risks as a product designer, there is a risk in every direction, but the simplest solution is usually the easiest to change and adapt to future needs / obstacles.

As far as wasting others' time, it can't waste the time of anybody who doesn't choose to invest their own time in it.

Every person's time is their own to invest. If Leaf isn't worth it that's up to them.

I'm simply betting my own time and effort that this will be the most effective road for me to build my app.

This entry was edited (2 weeks ago)
in reply to Zicklag

Protocols aren't products; they require collaboration with other implementers. You have a better chance of that if you build on top of AP.
in reply to Evan Prodromou

@evan I actually am making a product called Weird: https://weird.one.

I need others to be able to run federated Weird instances. That requires a standardized protocol between those instances.

But the protocol is secondary. My priority is the product.

If the protocol turns out useful elsewhere, and other people want to use it and collaborate, that's a great bonus. 🥳

in reply to Zicklag

Well, I hope you figure out the right thing to do eventually. ActivityPub is an open standard and you can always come back and use it.
in reply to Evan Prodromou

@evan I'd be more inclined to agree with you if it were clear that AP is improving in the most important ways. From my vantage point it has ossified quite a bit. Critical features aren't even being implemented by the major apps, let alone standardized. AP is a solid foundation but it needs to continue to evolve.
in reply to &ers

@anders I think it's improving quite a bit. We're building in end-to-end encryption and data portability. I agree that more implementations need to support the ActivityPub API and bring-your-own-domain.
@&ers
in reply to Evan Prodromou

@evan Those are awesome features, but how much value do they have if users don't have the mobility to leave Mastodon for a provider that implements them? The fact that identity portability isn't seen as the most important issue by far gives me pause when considering building on AP. And I say this as someone who is actively developing AP software. I'm just hedging my bets by supporting other protocols as well (primarily IndieWeb atm).
in reply to &ers

@anders That's a good hedge. The IndieWeb stack is a good one to work with.
@&ers
in reply to Evan Prodromou

Evan, I love you, but telling someone that their effort or focus of interest is a waste of time, and that they should build on your thing instead, is not exactly a good strategy on getting those people to build on your thing.

It’s not a good look.

Whether or not this person’s efforts go somewhere is besides the point. They cared enough to think about what they perceived to be problems, and actually built something. That exploration in and of itself is invaluable, and if they keep at it, it’s bound to bear fruit in a number of different ways. Maybe some of their good insights might even translate to ActivityPub work. 🙂

in reply to Sean Tilley

@deadsuperhero

It's not *my* thing! It's the open social networking standard, developed and recommended by a recognized standards organization, with ~100 implementations and ~30,000 installed servers.

There's nothing wrong with building a homegrown protocol and a software server to use it.

@zicklag have fun with weird.one.

in reply to Evan Prodromou

@deadsuperhero I have really strong feelings about people having access to distributed social networks. You can read my blog post on the subject here:

https://evanp.me/2023/10/06/activitypub-the-socialcg-and-the-social-web/

in reply to Evan Prodromou

@deadsuperhero You may also have seen my thread on the topic here:

https://prodromou.pub/@evan/110045336289311841

in reply to Evan Prodromou

@deadsuperhero I know you don't share these opinions, Sean. I think you want a successful, distributed social network like I do, but we disagree on the role that protocol proliferation can play. I'm sorry for that, but I think we're still allies and friends.
in reply to Evan Prodromou

@deadsuperhero and thanks for telling me. I appreciate the heads-up when I am not making people feel good.
in reply to Evan Prodromou

The fact remains that things like counts and, more importantly, post replies are not viewed identically across multiple homeservers, due to the event driven nature.

There is also the fact that you don't see any post by default if you don't follow somebody and they aren't on your server. This is particularly noticeable with single-user ActivityPub instances:

https://jvns.ca/blog/2023/08/11/some-notes-on-mastodon/#downsides-to-being-on-a-single-person-server

This entry was edited (2 weeks ago)
in reply to Zicklag

That's an implementation problem; the counts are available from the remote server.

I highly recommend reading my upcoming book "ActivityPub: Programming for Social Web" from O'Reilly Media, coming out later this month. You can read a free pre-release version here:

https://www.oreilly.com/library/view/activitypub/9781098162733/

in reply to Evan Prodromou

@evan when you say the counts are available from the "remote server," do you mean the server on which the original post is located?
in reply to Evan Prodromou

@joshshaked the `replies` collection holds all the replies to the post, except those that weren't sent to the OP. `Collection` type objects have a `totalItems` property.