Discussion: Solid vs. ActivityPub

Is the Help enough clear ?https://scenaristeur.github.io/agora/

1 Like

Another good project might be the aforementioned openEngiadina.

Would be very cool to see a combined AP / Solid app appearing on Fediverse Party in the near future :slight_smile:

@Smag0, a new helpful devtool for ActivityPub is in the works, evolving rapidly. Created by @dansup@mastodon.social of PixelFed fame:


See also: SocialHub announcement


Hello, there seems to be much discussion but I thought the interoperability between Solid and AP was a matter of:

  • accepting HTTP signatures on Solid’s part: if we want to use it in a webapp, it needs some work in the fetch API so that we can request that the client sign it with a certificat from the certificate store (it needs to be cross-origin), but we could already use it for scripts and it would work with AP servers;
  • checking that LDP notifications come from where they say they come: this is more difficult, but we could require it be authenticated if there is an authorship triple, and require that the sender be the author, or have the server automatically add authorship information in the posted resource and have the app check that there is only one author;
  • agree on the vocabulary

Did I miss something?

1 Like

Yes, that may be on the short term for interoperability when federating. ActivityPub spec does not prescribe auth/authz methods but suggests to use either HTTP Signatures or Linked Data Signatures (see here). I don’t know if any fediverse apps support LDS at the moment, but HTTP signatures were mostly chosen for practical reasons (like also WebFinger for Mentions).

That is why Solid joining the SocialCG is so potentially interesting, as there is spec-level talk about the future of AP/fediverse, and maybe further diversification can be avoided.

This is what I’m most interested in. In openEngiadina @pukkamustard is investigating a bunch of ways to integrate Linked Data with AP. Ideally many, many vocabularies should be able to be adopted in various contexts. In AP it suggested to just ignore any message properties that are not understood.

Mechanisms for the support of all these vocabularies (e.g. modularity) and also any domain-specific extensions to AP message formats themselves are still to be further elaborated for the most part, AFAIK.

I don’t really like linked data signatures, because someone could take a private message and publicly publish it, and it would be proven that the sender sent this message. This would lead to a number of abuses that is currently not possible with HTTP signatures (or much more difficult). This is also why I dislike using append-only storage like IPFS.

1 Like

Cross-posting this link from SocialHub (see link above) of another combined Solid / AP (planned, see roadmap) project:

1 Like

Following up to @divoplade in Solid scope and ecosystem

Do you mean collapsed text reasons, where a short snippet of free text indicates what’s within that region? Like e.g. “uspol” or “rant, need coffee”? I don’t have much problem with those. There is a lot in my timeline, so I may skip opening the text region and move on, or the summary text piques my interest.

That is an over-generalization. Most people on the fediverse do not need to know. There are just fediverse users. The users on the two main forums SocialHub and Feneas know very well, especially the ones involved with furthering the standard and compatibility.

But there are many individual developers and projects where they indeed do not see the benefits of linked data. The ActivityPub specification was written such that there is compliance with JSON-LD, but also compatibility with plain JSON. Anyone doing the latter will find that their app will just integrate nicely with the fediverse. Very nice for initial adoption, but if the trend continues it becomes ever harder to add the linked data special sauce.

Well, there is an acknowledge need for some of them, like politics, some forms of violence, or food. I am not sure “rant, need coffee” qualifies :thinking:

There are definitely some people that need them. We cannot create a social web without listening to their needs, in my opinion. I rarely read criticism of mastodon on the fediverse, except for the content warning problem. Even the lack of rich text support does not come close to that.

As for the over-generalization, I tried to make a sentence that made sense, but I could not. So, that’s the best I came up with, sorry.

No problem :slight_smile:

If we are indeed talking about the same… it’s a free text, so you can write anything. You could restrict that and add support for some sort of a tagging system, to categorize the hidden section. But adoption hinges on current implementers to support that feature extension.

Another ActivityPub / Solid initiative


What I would expect, would be that each community has its own set of keywords that map to linked data resources. So when you type a keyword, it translates to a new piece of metadata that can be understood by all the communities. There would be mandatory annotations. For instance, if you belong to a community where tagging texts about food is mandatory, failing to do so would get you signalled. This is not to punish you, but to guarantee the best communication between communities that consider food to need a content warning.

Content warnings would not hide the text by default, but each community would have a list of all the metadata that would hide text.

I may be over-generalizing again, but I think that this is not possible without linked data.

The difference between mastodon and an implementation on solid would be that on solid you could belong to many communities, and still abide by the rules of each of them (you can add all the metadata you want, this is an open world!).

What do you mean by a community in this context?

I would say, a group of people that have a stronger or more specialized relationship with each other.

This could be an association, for instance.

Do you remember the beginnings of the fediverse, where there were “instances” with special purposes (photography, music, …)? This arguably failed, because their members would belong to different communities at the same time.

On solid, a community might be a simple list of people, alongside “moderation” rules, that could create a specialized timeline. The timeline would include some posts from its members, hide others, and put specialized content warnings. By “moderation” rules, I mean a simple resource that lists included concepts, with associated policies (show, hide, warn content), as well as some moderators that would ensure that people on the list respect the tagging requirements of the community.

I think this could be a healthy direction for a social web.

This is very interesting. Note that both SocialHub and Solid are looking into implementing Groups:

Interestingly @aveltens is already using ActivityStreams Announce Activity type here, so that is almost compatible with the fediverse.

I am very interested in this. For my use case I want this to go further, more generalized. There could be moderation policies, governance policies (organization, member roles), decision-making policies, etc.

Edit: I just added a summary of how SocialHub approaches Groups in ActivityPub in Solid Groups App (comment).


Agreed, we’re definitely keen to add more apps to the front page, and we try to cover the widest possible range of use cases. Which is why the last 3 apps added were PixelFed, PeerTube, and FunkWhale, as soon as they federated with instances other than their own. Lemmy is another one we’re tracking closely, for similar reasons. Our prime directive is to be a guide for beginners, so we try to feature the most mature, user-friendly apps, and avoid listing anything bleeding edge on the front page. But there is another page with a more complete list of end user apps in development, and a new page is being rolled out for developer tools (federations libraries, relays etc).

1 Like

Hi ActivityPubists, and more @strypey and @aschrijver
Playing with Agora, I would like to have your advice to know if that kind of Solid data could be send to an Antivitypub server inbox

Or https://agora.solid.community/public/agora/inbox/3d2a8386-f410-4463-a170-e36928aa7f06.ttl#this

Which are representative of a ‘Create’ action that has a Link to an Activity with an Object that have a content.

Here is how it looks like :

Those are posts made with [Agora](https://github.com/scenaristeur/agora) app

That is a bit hard for me to judge. It is best to communicate by showing the JSON-LD messages that would be sent over the wire. On first glance it seems most AP props are present and you should be able to communicate. I guess in your case you want to set up a federation with other AP instances (i.e. server-to-server). It can help to look at the code of other projects on the AP watchlist, read the aforementioned AP implementers guide, there are some implementers blogposts on Mastodon and more if you DDG on them.

For S2S auth. you probably need HTTP Signatures, but JSON-LD signatures could also be an option (I don’t know how widely these are implemented though). For federation of twitter-style messaging Mastodon and Pleroma are the leading projects to be compatible with. They have added a bunch of extension props, not all of which are needed to be implemented. You can view JSON msg format by adding .json to the url’s.

Lemmy is an interesting project to watch, as it provides Reddit-style community communication. They are working on federation between Lemmy instances, but do not federate to Mastodon/Pleroma yet.

I would not hesitate to ask questions on SocialHub, but the screenshots can be confusing, so show data snippets. Also you could approach @dansup either on SocialHub or the fediverse and see if you can participate in the private beta for fedidb.org because that will be a really helpful tool for implementers.

I was able to host an Actor on my Pod and send a Toot to mastodon and a direct message back to my Pod

Finding the Actor via Webfinger:

Post received on Mastodon:

Sending a message to Solid Inbox:


I had to convert it to turtle manually, but it was received:

I described the details in a (german) blogpost, but google translate might help:



The topic of Decentralized Twitter (Dewitter) App Scenario led me to write this post…

When talking about decentralized Twitter, we have that in the form of Mastodon, Pleroma and other microblogging apps that federate together in the Fediverse.

Some more combinations of Solid + ActivityPub to ponder, maybe. In a recent toot and another follow-up I discovered how incredibly much space is needed by server instances to save timelines / social graphs. For instance, a single-user installation running for 2,5 years requiring 821 MB and a 14 user instance with DB size of 4 GB. Interesting is that more users per instance requires less storage space per user. As @masto.host explained to me:

In terms of sizes scaling with the number of users, usually it doesn’t scale linearly because if you have 10 users and 5 of them follow remote account X. The posts from account X are only federated/stored once. So, in general the larger the number of users the smaller the database space per user.

Obviously depends on usage. If you have a closed Mastodon server where the users down follow remote users or a small number of remote follows, this isn’t the case.

In the future Fediverse will probably move from a federation model to hybrid decentralization, supporting both federated and p2p nodes. This move will be accompanied with support for content-addressing (see e.g. ERIS).

There are two things I wonder about:

  • What are experiences with Solid in terms of storage space and also amount of requests to reconstruct social graphs (performance), esp. when having a lot of following/followers and you are an active communicator. Interesting to hear from SAFE as well (@happybeing?).
  • Thinking of combinations with federated ActivityPub-based solutions that would lead to smaller db sizes on the server instances, and more control / ownership over own data.

Especially the Direct Message functionality of Mastodon / Pleroma can be improved. This is private data (only select audience can see it), but if I clean up my own DM inbox (delete messages) via federation it leads to similar deletion of messages in the inboxes of those people tagged in the DM discussions.