ActivityPods: adding intelligence to Solid PODs with ActivityPub

I’m glad to announce the release of ActivityPods, a new kind of architecture for web applications which aims to reconcile the ActivityPub and Solid standards.

You can see the initial proposal here:

It can be summarized in one image:

The ActivityPods implementation is based on the SemApps toolbox, which aims to provide all you need to develop semantic applications. I’m also a core developer of SemApps since 2019.

I know there have been many discussions on this forum and on ActivityPub forum about this topic (in particular here and here). I don’t pretend to have the only solution, but I’m glad to have something working well and that could, I think, fit the needs of many projects.

I will open source a working frontend soon. It allows to create private events and invite friends, with the boilerplate of ActivityPods as the only backend.

All feedbacks are very much welcome ! :slight_smile: Please be patient as some things are not perfect yet and I plan to improve a few things in the coming weeks. But I thought it would be interesting to post this before the holidays.

I’ve cross-posted this message on the ActivityPub forum as well.

13 Likes

Very cool to see this combination of technologies coming together. I created additional cross-refs between communities in the AP +Solid threads, and also added your project to the ActivityPub Developer Resources watchlist. Note that there’s no license yet, so it is technically proprietary software.

(PS. The developer watchlist and application watchlist may move location soon, as Feneas may be shutting down). Watchlists are now part of delightful project and available at Fediverse Futures - Codeberg.org

1 Like

Thanks !

Ah the licenses were on the packages. I’ve added a license to the repo root (it is Apache 2.0)

2 Likes

I also wanted to point out that ActivityPods are not fully Solid-compliant yet.

For example, it is not possible for an user to create a new container on his POD, only applications can do that.

Furthermore, Solid-OIDC is not supported yet: we use local accounts and, to be able to authentify an user on another server, we use HTTP signatures along with a proxy (both are defined in the ActivityPub protocol).

2 Likes

I’m glad to announce I open-sourced the first working frontend for ActivityPods:

It has been deployed here: https://welcometomyplace.org

This application is about events which are private by default: you only see those you have been invited to. Anyone is free to create an event and share it with its network. After an event, all participants can add the contact of all other participants. But at the beginning, you must know the contact link (or the ID of type @bob@podprovider.com) to start your personnal network. If you want to try this out, here’s my contact link: Welcome to my place.

Another application for classifieds will be coming out this spring.

2 Likes

Nice to see that, congrats, I added Welcome to my place to delightful-fediverse-clients, though what it does can be better described.

Hey :slight_smile: I’m excited to try this out!

I tried creating an account, but currently getting this error.

request to http://fuseki:3030/settings_pods/query failed, reason: getaddrinfo EAI_AGAIN fuseki

idk if there are any logs, but a few minutes ago i tried with

surname: tychi
user id: tychi
email: mypod.store@bamzap.pw
provider: mypod.store

For information, I made a presentation of ActivityPods at the latest Solid World, here’s the recording:

https://vimeo.com/691410463

My presentation starts at the 19th minute…

@tychi Sorry I missed your message. There was some troubles with the server at that time, but it has been fixed, you should be able to create your account without problems. Let me know if you have other questions or problems !

5 Likes

@srosset81 no worries! I’ve finally found a few moments to try it out and have a pod!

I’m very excited about this project and this concept. I’ve cloned the project locally and I have it up and running! I’m trying to log in now and a little confused on what to do.

I am on the http://localhost:4000/login page, but not able to see mypod.store in the providers list. From looking at the README, I do not know what the “Moleculer REPL” is, so I am assuming that is the root cause of my challenge.

How do I access the Molecular REPL?

1 Like

Hi !
The documentation for Moleculer REPL is here. If you launch the middleware with yarn run dev, you should be able to type commands directly in the console where the Moleculer logs is displayed.
If you prefer to use the prod data (there is no real need to have a local middleware in fact), you can use this ENV var for the frontend:

REACT_APP_COMMON_DATA_URL=https://data.welcometomyplace.org/

But if you want to use a local ActivityPods server, you should probably set this ENV var after having launched the activitypods repo locally:

REACT_APP_POD_PROVIDER_URL=http://localhost:3000/

If you wish to chat and maybe do a video call to launch everything, feel free to join this chatroom:

1 Like

Exciting connection! Very interested where this goes.

I wonder: Is the system compatible with Solid Pods? I.e., in principle, can i just plug any standard Solid Pod or Solid identity to it? (e.g. solidcommunity.net pods?)

I see that WelcomeToMyPlace doesn’t provide that possibility. New users seem to have to sign up. Is that just early-development convenience, or a hard limitation of the system?

1 Like

HI @mrkvon !

ActivityPods are limited Solid PODs so, if in WelcomeToMyPlace, you create an account on the mypod.store provider, it will create your own POD. You will then be able to do all the normal LDP operations like GET/POST/PUT/PATCH/DELETE, either in Turtle, triples or JSON-LD (like required by the Linked Data Plateform specs). Additionally, WAC (WebACL) specs are fully supported. On the other hand, WebID-OIDC login is not supported yet, and users cannot create their own containers (containers are created by the apps).

At the end of my presentation at Solid World, I talk about how we could make this software evolve so that it’s compatible with existing Solid providers. The easiest solution would be if these providers supported an ActivityPub-like inbox and outbox (which I heard is in the box…). But in either way, some challenges would need to be tackled.

5 Likes

Very cool project. I have recently done some further reading on this project, and have some questions.

Does the relevant Apps support owl:sameAs predicate? If so, then it may be possible to use two Pods, one with ActivityPods while another with normal Solid Pod, through two profiles with owl:sameAs.

The doc says my new events will be posted to my outbox. I believe it means both for a public event and for a specific user (in which case I’ll also send a notification to their inbox; probably also set permission to my output?). I presume other users will fetch data from my outbox afterwards?
Then, will the outbox ever be cleaned? I.e. outdated events got removed?
It seems there is no way to know whether an event has been “fully consumed” (by all expected readers). So are they always in the outbox until forever?