Authors: [[Christine Lemmer-Webber]], [[Jessica Tallon]], [[Erin Shepherd]], [[Amy Guy]], [[Evan Prodromou]]
The ActivityPub protocol is a decentralized social networking protocol based upon the [[ActivityStreams]] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.
Pour utiliser ActivityPub (AP) vous devrez avoir un acteur accessible en public. Le format de votre acteur doit être en JSON-LD. Votre acteur doit ressembler à ceci : exemple acteur sur le site communecter partir développement.
L’id doit correspond Ă l’URL du document, tous les liens doit ĂŞtre en HTTPS.
Vous aurez besoin d’une inbox car les instances qui utilisent AP ont besoin reconnait un acteur si celui-ci possède une inbox. Chaque acteur nĂ©cessite une publicKey et une privateKey qui peut ĂŞtre gĂ©nĂ©rĂ© avec openssl.
JSON ne prend en charge les sauts de ligne, on doit remplacer les sauts de ligne par \n (pour la partir publicKeyPEM).
Le Webfinger permet de demandĂ© Ă un site web "Avez vous un utilisateur avec ce nom d’utilisateur" et de recevoir des liens de ressource en rĂ©ponse. Le noeud finale d’un Webfinger se trouve toujours en /.well-known/webfinger et recevoir des requĂŞtes tel que /.well-known/webfinger?resource=acct:name@ my-example.com
Pour pouvoir envoyĂ© un message (par exemple avec le verbe "Create"), il est nĂ©cessaire d’avoir la inbox de la personne concernĂ© et d’utiliser un HTTP signature qui permettra de savoir si l’acteur qui souhaite envoyer un message est le bon. Une signature HTTP s’agit d’un en-tĂŞte HTTP signĂ© par la paire de clĂ©s RSA. Pour avoir plus d’information sur la crĂ©ation d’une signature HTTP, rĂ©fĂ©rencier vous le lien suivant partir HTTP signature : [How to implement a basic ActivityPub server(https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/).
Liens pratique :
J’ai crĂ©e une api qui permet de gĂ©nĂ©rĂ© un acteur AP sur communecter, vous pouvez trouvez un exemple en cliquant ici. Petit prĂ©cision : la publicKey est en format brute. Comment sa fonctionne : Vous devrez indiquez dans le lien id de la personne ici : http://dev.communecter.org/api/activitypub/actor/id/ + userId.
Fichier modifier : TranslateActivityStream.php / Rest.php . Fichier crée : ActivityPubController.php / ActorAction.php .
Nous avons crée avec Pierre un client mastodon qui permet de poster/récupéré les statuts/récupéré les followers/voir la timelines public en utilisant le REST API et en ce basant sur cette librairie mastodon.js par Kirschn. Vous pouvez retrouvez nos codes ici (gitlab.adullact) : mastodon_api
J’ai suivi ce tutoriel lĂ pour pouvoir envyer un message sur mamot.fr : Decentralizing Social Interactions with ActivityPub. Pierre a dĂ©taillĂ© plus en bas comment rĂ©aliser le tutoriel. Remarque constatĂ© : Pour pouvoir voir un message sur mamot.fr, nous Ă©tions dans l’obligation de suivre notre acteur crĂ©e par express activitypub, sans cela, il nous est impossible de voir nos message dans le timeline. Ce problème est rĂ©gurant quand on a tentĂ© avec un compte pixelfed de communiquĂ© avec mamot.fr.
Je me suis basĂ© sur le script crĂ©e par Darius Kazemi sur son tutoriel Decentralizing Social Interactions with ActivityPub. Malheureusement je n’arrive pas Ă faire fonctionnĂ© mon inbox car je n’arrive pas a encodĂ© la signature.
Utilisation de l’API mamot pour pouvoir afficher les timelines public, local, ajouter un post. Afin de pourvoir acceder a le page mastodon cliquer içi Join Mastodon Mon code source est disponible sur gitlab Code Source
Afin d’avoir un aperçus du format d’un acteur ActivityPub en ajoutant votre id a la fin du lien mon lien pour accĂ©der Ă l’acteur
git clone [https://github.com/dariusk/express-activitypub.git](https://github.com/dariusk/express-activitypub.git)
dans votre terminal./.ngrok/http 3000
express-activityPub
, modifier le dossier config.json
dans route.d40f1818.ngrok.io
node index.js
[https://d40f1818.ngrok.io/admin](https://d40f1818.ngrok.io/admin)
Et vous pourrez voir le message envoyer sur mtps://mamot.fr
Pour utiliser ActivityPub (AP) vous devrez avoir un acteur accessible en public. Le format de votre acteur doit être en JSON-LD. Votre acteur doit ressembler à ceci : exemple acteur sur le site communecter partir développement.
L’id doit correspond Ă l’URL du document, tous les liens doit ĂŞtre en HTTPS.
Vous aurez besoin d’une inbox car les instances qui utilisent AP ont besoin reconnait un acteur si celui-ci possède une inbox. Chaque acteur nĂ©cessite une publicKey et une privateKey qui peut ĂŞtre gĂ©nĂ©rĂ© avec openssl.
JSON ne prend en charge les sauts de ligne, on doit remplacer les sauts de ligne par \n (pour la partir publicKeyPEM).
Le Webfinger permet de demandĂ© Ă un site web "Avez vous un utilisateur avec ce nom d’utilisateur" et de recevoir des liens de ressource en rĂ©ponse. Le noeud finale d’un Webfinger se trouve toujours en /.well-known/webfinger et recevoir des requĂŞtes tel que /.well-known/webfinger?resource=acct:name@ my-example.com
Pour pouvoir envoyĂ© un message (par exemple avec le verbe "Create"), il est nĂ©cessaire d’avoir la inbox de la personne concernĂ© et d’utiliser un HTTP signature qui permettra de savoir si l’acteur qui souhaite envoyer un message est le bon. Une signature HTTP s’agit d’un en-tĂŞte HTTP signĂ© par la paire de clĂ©s RSA. Pour avoir plus d’information sur la crĂ©ation d’une signature HTTP, rĂ©fĂ©rencier vous le lien suivant partir HTTP signature : [How to implement a basic ActivityPub server(https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/).
Liens pratique :
J’ai crĂ©e une api qui permet de gĂ©nĂ©rĂ© un acteur AP sur communecter, vous pouvez trouvez un exemple en cliquant ici. Petit prĂ©cision : la publicKey est en format brute. Comment sa fonctionne : Vous devrez indiquez dans le lien id de la personne ici : http://dev.communecter.org/api/activitypub/actor/id/ + userId.
Fichier modifier : TranslateActivityStream.php / Rest.php . Fichier crée : ActivityPubController.php / ActorAction.php .
Nous avons crée avec Pierre un client mastodon qui permet de poster/récupéré les statuts/récupéré les followers/voir la timelines public en utilisant le REST API et en ce basant sur cette librairie mastodon.js par Kirschn. Vous pouvez retrouvez nos codes ici (gitlab.adullact) : mastodon_api
J’ai suivi ce tutoriel lĂ pour pouvoir envyer un message sur mamot.fr : Decentralizing Social Interactions with ActivityPub. Pierre a dĂ©taillĂ© plus en bas comment rĂ©aliser le tutoriel. Remarque constatĂ© : Pour pouvoir voir un message sur mamot.fr, nous Ă©tions dans l’obligation de suivre notre acteur crĂ©e par express activitypub, sans cela, il nous est impossible de voir nos message dans le timeline. Ce problème est rĂ©gurant quand on a tentĂ© avec un compte pixelfed de communiquĂ© avec mamot.fr.
Je me suis basĂ© sur le script crĂ©e par Darius Kazemi sur son tutoriel Decentralizing Social Interactions with ActivityPub. Malheureusement je n’arrive pas Ă faire fonctionnĂ© mon inbox car je n’arrive pas a encodĂ© la signature.
Utilisation de l’API mamot pour pouvoir afficher les timelines public, local, ajouter un post. Afin de pourvoir acceder a le page mastodon cliquer içi Join Mastodon Mon code source est disponible sur gitlab Code Source
Afin d’avoir un aperçus du format d’un acteur ActivityPub en ajoutant votre id a la fin du lien mon lien pour accĂ©der Ă l’acteur
git clone [https://github.com/dariusk/express-activitypub.git](https://github.com/dariusk/express-activitypub.git)
dans votre terminal./.ngrok/http 3000
express-activityPub
, modifier le dossier config.json
dans route.d40f1818.ngrok.io
node index.js
[https://d40f1818.ngrok.io/admin](https://d40f1818.ngrok.io/admin)
Et vous pourrez voir le message envoyer sur mtps://mamot.fr
The ActivityPub protocol is a decentralized social networking protocol based upon the [[ActivityStreams]] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.
It is a [[W3C]] standard as of January 2018 https://www.w3.org/TR/activitypub/, published by the [[W3C Social Web Working Group]].
The Fediverse SocialHub Discourse forum is where many different ActivityPub-compatible systems come together.
From the forum, How to become an ActivityPub user
From the forum, Introduction to ActivityPub
ActivityPub supports common social network activities like following, liking, announcing, adding, and blocking. For example, if you have an account on a [[Mastodon]] instance like mastodon.social, you can follow someone on a [[WriteFreely]] instance like Qua and receive updates whenever they have a new blog post.
Christopher Lemmer Webber, co-author of the ActivityPub standard:
Increasingly, much of our lives is mediated through social networks, and so network freedom in these spaces – and thus removing central control over them – is critical. One thing you may have noticed in the last decade is that many decentralized free software social networking applications have been written. Sadly, most of those applications can’t actually speak to each other – a fractured federation. I hope that with ActivityPub, we’ve improved that situation.
My big issues with ActivityPub is that the protocol is very big and not very easy to decompose.
– indieweb chat
Unfortunately, we have come to realize that using ActivityPub is considerably harder than we expected:
Using JSON-LD as an RDF serialization is very complicated. It requires the usage of algorithms (e.g. the Expansion Algorithm or the Framing Algorithm) that are incomprehensible and just pure madness. JSON-LD maybe was really just not intended to be an RDF serialization and trying to use it as such is painful.
There are practically no implementations of the ActivityPub Client-to-Server protocol (C2S). This made developing and testing the client and server more time-consuming as we had to develop the protocol in lockstep on client and server. At the end we were still only compatible with our own software.
ActivityPub is not a complete specification and many additional protocols need to be implemented (e.g. WebFinger) in specific ways in order to be compatible with existing servers.
Rendering context...