@evan@cosocial.ca cover

He/him. Board member at CoSocial.ca.

Research Director, Social Web Foundation.

Author of "ActivityPub: Programming for the Social Web" from O'Reilly Media.

Founder of Wikitravel, StatusNet, identi.ca, Fuzzy.ai.

Creator of pump.io. Co-creator of GNU social.

Former co-chair of the Social Web Working Group at W3C. Co-author of Activity Streams 2.0. Co-author of ActivityPub. Co-author of OStatus.

Grad student in CS at Georgia Tech.

Greek, Arab, Palestinian, American, Canadian, Montréalais.

This profile is from a federated server and may be incomplete. View on remote instance

@smallcircles@social.coop avatar smallcircles Bot , to random

Hello @evan and @bifurcation .. a question.

For inclusion of information resources on the delightful-fediverse-development curated list there is this (now expired) draft exploring / versus AP. I find this draft to be well-written and informative, and thus the draft possibly a candidate for inclusion for people as additional background reading to the work on MLS. Unless there are so many changes since the creation of the draft that it may raise confusion, and should not be included. What is your opinion here?

https://ietf-wg-mimi.github.io/mimi-arch/draft-ietf-mimi-arch.html

evan ,
@evan@cosocial.ca avatar

@smallcircles @bifurcation I think MIMI is a different application of MLS. I'm sure it's fine as additional reading but the content model and underlying transport are different.

@evan@cosocial.ca avatar evan , to random

Look, I don't have any evidence, but I need you to believe that I had dinner with @cyberlyra tonight and we had such a good conversation that we forgot to take a selfie.

@evan@cosocial.ca avatar evan , to random

How much time per month should an unpaid volunteer maintainer dedicate to an Open Source project?

evan OP ,
@evan@cosocial.ca avatar

@aeva thank you so much for this answer! It really means a lot to me.

evan OP ,
@evan@cosocial.ca avatar

@aeva I think there's an interesting part of your answer. There's a minimum amount of time just to deal with dependency changes, triage bugs and hopefully fix some. But doing that minimum is probably not sustainable -- it probably means you're losing interest in the project. Having a little more time for new features, refactors, and so on is probably better for the long term.

evan OP ,
@evan@cosocial.ca avatar

@hober @aeva if it's zero for long enough, the software is unmaintained. They are no longer a maintainer in any meaningful sense, even if they still have write access to the git repo.

evan OP ,
@evan@cosocial.ca avatar

@aeva @hober so rare, though.

@steve@social.technoetic.com avatar steve , to random

I'm curious what other devs think about this. If an actor posts an C2S Create/Note to the outbox, what would you think if the object created by the server was a different type (e.g., Article)?

evan ,
@evan@cosocial.ca avatar

@steve This is really interesting.

I see a few cases. One is an ActivityPub API façade for an existing CMS, like Drupal or WordPress. The underlying system only stores Articles, so it tries to fit any input into that format. It might also take a Create/Image and return an Article with an embedded image, say.

@evan@cosocial.ca avatar evan , to random

When did you last experience a Shakespeare piece?

@evan@cosocial.ca avatar evan , to random

If Alice makes a followers-only post, and Bob replies to it, to whom should Bob's reply be visible?

evan OP ,
@evan@cosocial.ca avatar

@luana what if there was a clear label on who it was going to? "Same audience" or something similar?

evan OP ,
@evan@cosocial.ca avatar

Hey, all. So, I appreciate the responses. I'll break down the options here.

evan OP ,
@evan@cosocial.ca avatar

"Alice's followers" is the way most social networks work with private X, Facebook, Instagram. It lets Alice ask questions or share private info with people she trusts and cares about, and lets them discuss amongst themselves. It is really the best way to use social networks.

evan OP ,
@evan@cosocial.ca avatar

"Bob's followers" is the literalist version, with the worst possible dynamics. "You should reply to a followers-only post with a followers-only post" retains the same UI choice while completely changing the audience. Bob's followers who don't follow Alice won't understand the context of his post, and won't be able to read Alice's post.

evan OP ,
@evan@cosocial.ca avatar

"Both" at least makes the full conversation visible to all A's followers, but it has most of the same problems as sharing with B's followers. It sends them a part of a conversation without context, but also violates A's privacy.

evan OP ,
@evan@cosocial.ca avatar

For "Other", a lot of people replied with "the intersection of A's followers and B's followers". This makes replies to replies to replies less and less visible to participants, until practically no one can see what's being said. It's terrible for conversations.

evan OP ,
@evan@cosocial.ca avatar

Some repliers insisted that it should be whatever Bob wants, which is trivial. It sidesteps the issue and doesn't address the question at its own level.

I asked, what should be the outcome? Not, who should decide?

What options should Bob have to choose from? What should be the default? What should he choose?

evan OP ,
@evan@cosocial.ca avatar

Anyway, I agree with the vast majority that the reply should be to Alice's followers. I think the rule of thumb for replies is that they should address about the same audience as the original post, or optionally a subset of that audience. Expanding the audience confuses readers and violates privacy expectations.

evan OP ,
@evan@cosocial.ca avatar

Thanks to everyone who responded or replied, even if I didn't like your answers.

evan OP ,
@evan@cosocial.ca avatar

Oh, one thing that is worth noting: a lot of people insisted on Bob's absolute prerogative to reply with any kind of visibility he wants: public, his followers, whatever.

This is technically true, but Alice also has some agency here. Her server maintains a collection of replies that can be used to read all the replies. There's also another collection for the full thread.

Her server can omit replies that violate her expectations. This limits Bob's reach somewhat.

evan OP ,
@evan@cosocial.ca avatar

Other servers can and should use Alice's replies collection to see which replies she has consented to. They can and should obscure or hide altogether replies that aren't in that collection.

evan OP ,
@evan@cosocial.ca avatar

Mastodon doesn't do either of these things, by the way. It doesn't let you reply to Alice's followers, and it doesn't use the replies collection for showing and hiding replies. It's too bad; these are really valuable features of ActivityPub.

evan OP ,
@evan@cosocial.ca avatar

@Yuvalne @luana nobody is asking to change what "followers only" means.

evan OP ,
@evan@cosocial.ca avatar

@Yuvalne @luana I think so, too, but making replies that have a broader audience than the original post is hostile and should be used with caution.

evan OP ,
@evan@cosocial.ca avatar
evan OP ,
@evan@cosocial.ca avatar

@novelgazer the original post and the replies don't have to be isomorphic. If I post a photo of a bus, do all the comments have to be photos of buses? No, obviously not. A "followers-only" conversation where every post is visible to each author's followers is meaningless; it's much more important and natural to have a conversation amongst a group of people.

evan OP ,
@evan@cosocial.ca avatar

@trwnh I don't think the thread is addressable, and I don't think context is a good property to use here, but otherwise I agree. Alice should maintain a collection of content objects in the thread.

evan OP ,
@evan@cosocial.ca avatar

@trwnh every object in ActivityPub has an audience defined by its addressing properties.

evan OP ,
@evan@cosocial.ca avatar

@trwnh I don't see why. Just like the replies, shares, and likes collections, the thread collection should have the same addressees as the root object.

evan OP ,
@evan@cosocial.ca avatar

@trwnh like how you hijacked my thread?

evan OP ,
@evan@cosocial.ca avatar

@trwnh I mean, at some point, it'd be nice if you start a separate thread.

I talk about branching and grafting in FEP 76ea; I think it's a pretty natural process.

https://fediverse.codeberg.page/fep/fep/76ea/

@evan@cosocial.ca avatar evan , to random

Listening to Elvis Costello's "Tramp the Dirt Down" this morning; his late-80s fantasy of stomping on the grave of Margaret Thatcher.

I realized that I'm going to London this week and could actually go do this myself. It would be a nice field trip.

Sadly, it looks like the Iron Lady foiled EC's plans and was buried under an untrampable slab of concrete:

https://www.findagrave.com/memorial/108023705/margaret-thatcher

It may be worth it anyway.

@evan@cosocial.ca avatar evan , to random

Radio Free Europe, but in the other direction this time

@evan@cosocial.ca avatar evan , to random

There are only a few hours left to submit a proposal to the NLNet Open Social Fund. It's an easy proposal process!

https://nlnet.nl/opensocial/

@evan@cosocial.ca avatar evan , to random

If you attended the 2026 Social Web Developers Room or watched online, how would you rate it?

@evan@cosocial.ca avatar evan , to random

There is a BOF session today on Fediverse events. I think it would make a lot of sense to have a Task Force of the Social Web Community Group focused on the Event schema in .

https://fosdem.org/2026/schedule/event/N98KEF-shaping_the_future_of_events_and_calendars_in_the_fediverse/

evan OP ,
@evan@cosocial.ca avatar

I raised my hand and proposed this and everyone said yes so now I think we should just do it.

@evan@cosocial.ca avatar evan , to random

We have to go back

ALT
@evan@cosocial.ca avatar evan , to random

How to grow the Herd

@evan@cosocial.ca avatar evan , to random

Wow! Mastodon will be changing the default signups flow to feature more servers!!!

ALT
@evan@cosocial.ca avatar evan , to random

On the tram to . Looking forward to the devroom. Everyone's slides are all packed up!

@evan@cosocial.ca avatar evan , to random

One of my favourite things is talking to people who are more ride or die for ActivityPub than I am.

@evan@cosocial.ca avatar evan , to random

I'm nervous about flying to Brussels. I get really lonely and disconnected traveling without my family. And social responsibilities, like hanging out with 10,000 of my best Open Source friends, make me feel lonelier. I am going to try to take some quality time with friends this week and not talk only about the Fediverse.

@evan@cosocial.ca avatar evan , to random

If you follow me on Bluesky, please enable the bridge so I can see your replies.

https://fed.brid.gy/docs#bluesky-get-started

@evan@cosocial.ca avatar evan , to random

So, the Fediverse is going to be chock full of updates from Brussels for FOSDEM and EU Open Source Week this week.

I know that can lead to some FOMO if you wish you could be there too. There will be live streaming and lots of updates on the related hashtags.

We have a lot of other events throughout the year, around the world. Fediforum does a great job tracking Fediverse-related events:

https://fediforum.org/events/

evan OP ,
@evan@cosocial.ca avatar

I know there will be mean-spirited attacks from the usual suspects, trying to make Fediverse developers and enjoyers feel bad for getting together and talking about the things we love.

Every movement has its gatekeepers who don't want to do anything, but also want to keep the rest of us from doing anything, either. 🤷🏽

But I hope for people who actually care about the Fediverse, you know that you're wanted in this movement, and we can find ways to connect.

evan OP ,
@evan@cosocial.ca avatar

If you can't make it to Brussels, it doesn't mean the people who are there don't value you.

@evan@cosocial.ca avatar evan , to random

Once again, Fediverse liberals are rehashing exactly whose lives and human rights should have been sacrificed to make Harris win the 2024 election.

There's only one right answer.