Email or username:

Password:

Forgot your password?
224 posts total
silverpill

Preventing enshittification of platforms rests on credible exit for users and devs. #ActivityPub and #SMTP are not perfect but

a) are implemented und understood by many players,

b) enable freedom of choice of servers and clients,

c) implement #RightToMigrate as well as self/community custody

Many #p2p projects promise to remove servers but often promote and depend on a single implementation stack, have no spec and no interop among #p2p islands, and thus struggle to provide credible exit.

Leaf 🌱 🏴‍☠️ (they/them)

@delta
do you see any possible future where we won't need servers? cause yes, having many decentralized instances running on servers is already so much better, but wouldn't p2p be even more decentralized and therefore provide more freedom?

or perhaps the server which hosts an instance (mastodon for example) can be somehow democratized so that all of it's users have a say in the decisions usually made by the admin or moderator 🤔

Mostafa228

@delta Activitypub is not designed to be E2E encrypted.
It's better to suggest the nostr protocol because it is E2EE and designed to be censorship resistant.

🌈 Lascapi ⁂

@delta I like #p2p technologies but I think prefer the possibility to migrate between server.

Like #hubzilla

silverpill

FEP-2277: ActivityPub core types (pre-draft)

https://codeberg.org/silverpill/feps/src/branch/main/2277/fep-2277.md

where I make a case for non-overlapping core types and duck typing

#ActivityPub #FEP

marius

@silverpill I think Actor should be considered a core type (for the purposes of ActivityPub) just because the whole of the ActivityPub specification is based on it and its structure.

thejikz

@jwildeboer OK I will be the guy pointing out a typo, but it is because I was very mislead by the "treat-analysis" folder, thinking there may be cupcakes. There were not even cookies. xD

silverpill

Somebody created a Facebook like UI for Friendica called Bookface (expand for pics&more info)

!fediverse
https://i.postimg.cc/7L6YYKw6/image.png
https://i.postimg.cc/sfK65Kry/image.png
https://i.postimg.cc/8C0W1J82/image.png
https://i.postimg.cc/rsc5b62s/image.png
https://i.postimg.cc/J4NbbzJX/image.png

Credits go to @kmh for creating this style. It comes in both a light and dark version (check the links for usage instructions).

If you don't want to fiddle with code and stuff, loma.ml has already installed it server-wide, and should be available straight away for new accounts (If not, go to Settings>Display>General Theme Settings and change it from there. Or follow the guide in any of the links above).

silverpill

I'm redesigning my #E2EE architecture to use #OpenMLS instead of Vodozemac. Inertia seems to be with the former and I'd like to see #ActivityPub stay at the forefront.

I should have a working proof-of-concept soon. The big challenge seems to be with persistence; with Vodozemac, I could maintain a separate session record for each conversation. With MLS, all of the Groups are maintained in a single storage object for each user. And that storage is not designed with web server persistence in mind, so I've had to get a little creative. I think I can make it work.

You can follow along here.

I'm redesigning my #E2EE architecture to use #OpenMLS instead of Vodozemac. Inertia seems to be with the former and I'd like to see #ActivityPub stay at the forefront.

I should have a working proof-of-concept soon. The big challenge seems to be with persistence; with Vodozemac, I could maintain a separate session record for each conversation. With MLS, all of the Groups are maintained in a single storage object for each user. And that storage is not designed with web server persistence in mind, so...

silverpill
Fediverse tech roadmap 2025

One year ago I published Fediverse tech roadmap for year 2024. How did we do?

- Data portability. FEP-ef61 has advanced significantly. Compatible IDs were introduced, which make portable objects fully compatbile with existing ActivityPub implementations. Identity can be represented using any DID method, not just did:key. Security of the protocol has been studied extensively. And most importantly, there are now two interoperable implementations: Streams and Mitra.
- End-to-end encryption. An end-to-end encryption system is being developed for social networking platform Enigmatick. It is based on the Olm protocol, which is also used by Matrix.
- Connectivity. A big improvement came from Mastodon, which now notifies its users when relationships are severed by moderation actions. ActivityConnect AP-to-AP bridge was developed, but it didn't see much use, indicating that the problem it attempts to solve is not serious.
- Moderation / spam resistance. Two different conversation moderation mechanisms emerged: Conversation Containers (implemented by Streams and Hubzilla) and Interaction Policies (implemented by GoToSocial).
- Scalability. The number of platforms implementing FEP-8b32 is slowly increasing but the biggest ones still don't sign their activities (or use non-standard LD signatures). Some preliminary work on optimizing media delivery was done in FEP-1311: Media Attachments.
- Plugins. Lemmy developers are discussing WASM plugins in an RFC. A WASM-based MRF was implemented in Kitsune.
- Discovery. Mastodon introduced fediverse:creator OpenGraph tag. Relay protocols were documented in FEP-ae0c, and ActivityPub Discovery report was published. Several projects are working on Starter Packs similar to ones used by BlueSky platform.
- Developer experience. Fun Fediverse Development project continues to improve, and now provides support tables for many protocol features. ActivityPub and WebFinger and ActivityPub and HTTP Signatures reports were published, as well as FEPs about Origin-based security model and various features such as OpenWebAuth and Emoji reactions. FEDERATION.md is becoming more popular, the number of projects using it nearly doubled in 2024.
- Groups. Conversation Containers were implemented in Streams and Hubzilla, and FEP-171b: Conversation Containers was published. FEP-1b12 and Conversation Containers have many similarities, and the work on further alignment is ongoing.
- URL handlers. No significant progress.
- Synchronization of replies. Both FEP-1b12 and Conversation Containers naturally lead to synchronized conversations.
- Markets. No significant progress.
- Quoting. FEP-e232 is now supported by 8 platforms.
- Forge federation. Forgejo implemented federated stars, and the development of other features has started.

I think the work on these problems should continue in 2025, especially in the following key areas:

- Conversations and groups. FEP-1b12 and Conversation Containers are good solutions and may eventually become one because their differences are mostly superficial.
- Data portability and Nomadic identity. A lot of work still needs to be done. Some aspects of FEP-ef61 are underspecified, for example media storage. A fully featured nomadic client (FEP-ae97) has not been developed yet and migration of data between implementations has not been demonstrated. I would also like to see experiments with peer to peer networking (FEP-ef61 is designed to be transport agnostic, this means HTTP transport can be replaced with something else, such as Iroh) and cross-protocol interop (identities created for Nostr and ATProto are compatible with FEP-ef61).
- ActivityPub C2S API. Although standard client-to-server API is not popular among developers, the work on it should continue because nomadic client-to-server API (FEP-ae97) is very similar.
- End-to-end encryption. I think that adoption of solutions developed for other protocols is a good idea. A custom solution may take many years to develop.
- Developer experience. Code reuse in not common in Fediverse: most developers implement ActivityPub primitives themselves. Libraries for all programming languages need to be created, along with online validators, testing tools and good documentation.

#ActivityPub #Fediverse

Fediverse tech roadmap 2025

One year ago I published Fediverse tech roadmap for year 2024. How did we do?

- Data portability. FEP-ef61 has advanced significantly. Compatible IDs were introduced, which make portable objects fully compatbile with existing ActivityPub implementations. Identity can be represented using any DID method, not just did:key. Security of the protocol has been studied extensively. And most importantly, there are now two interoperable implementations: Streams and Mitra.

silverpill
migrated a few months old, hardly ever used akkoma instance to pleroma (using database rollbacks from my MR) and it seems to work fine, in case anyone's interested
silverpill

In order to understand why FEP-fe34: Origin-based security model is true, we need to derive it from the first principles. Let's try.

#ActivityPub objects are JSON documents with a special id property. This property is an URI indicating the location of a document, and we can authenticate a document by fetching its id. If the document exists at the specified location, and has the same ID, we conclude that it is valid.

This has several important corollaries:

1. The server of origin is the only authority. Other servers must not be trusted.
2. ActivityPub is fundamentally a "pull" protocol, not "push".
3. The type of a document is not relevant for authentication. Actor documents are not special.

However, fetching documents is not always practical, and developers may want to push data to other nodes. How documents can be authenticated without making an HTTP request? Digital signatures.

The server publishes a JSON document containing a public key, and then starts signing other documents with a corresponding secret key.

Upon receiving a signed document (such as activity), we determine the ID of a public key document, retrieve the document and verify the signature. If the public key document has the same server of origin as the signed document, and the signature is valid, we conclude that the signed document is valid too, because a chain of trust has been established: received document -> public key document -> server.

The public key document doesn't change often, so now we can verify many signed documents without re-fetching the public key.

This also has important corollaries:

1. Once again, the type of a signed document is not relevant for authentication.
2. Public keys do not need to be attached to actor documents.
3. One key per server is enough.

Developers are constantly being told that ActivityPub is an actor-centric "push" protocol, and that each actor must have its own key. But those ideas are wrong and it is time to put them to rest.

#fep_fe34

In order to understand why FEP-fe34: Origin-based security model is true, we need to derive it from the first principles. Let's try.

#ActivityPub objects are JSON documents with a special id property. This property is an URI indicating the location of a document, and we can authenticate a document by fetching its id. If the document exists at the specified location, and has the same ID, we conclude that it is valid.

silverpill
A Call for Better Activity Signatures in the Fediverse

Why Major ActivityPub Implementations Should Adopt Object Integrity Proofs

Let's say you have accounts named alice@bar and bob@baz that don't follow each other, but they both follow john@foo. When alice@bar replies to john@foo's post, how can bob@baz see this reply?

This problem applies not only to replies, but also to things like likes and emoji reactions. One of the ways that ActivityPub implementations solve this problem is through inbox forwarding. The idea is to forward the reply received by john@foo to bob@baz as well.

Fedify makes inbox forwarding easy and convenient with its forwardActivity() method. But the question is, can bob@baz trust the activity forwarded by john@foo?

Because HTTP Signatures sign the HTTP request that contains the activity, not the activity itself, john@foo can't sign an activity created by alice@bar when it's forwarded by him, because forwarding requires creating a new HTTP request. (The HTTP request includes things like the Host header, so a new signature is required for each new recipient.)

So, alice@bar needs to sign her activity in a way that allows john@foo to forward it. In the fediverse, there are two ways to do this: Linked Data Signatures and Object Integrity Proofs. Fedify automatically attaches all three types of signatures (HTTP Signatures, Linked Data Signatures, and Object Integrity Proofs) to every activity it sends, so activities are free to be forwarded between ActivityPub software created with Fedify.

However, major ActivityPub implementations such as Mastodon and Misskey still sign activities with HTTP Signatures only, or only some activities with Linked Data Signatures. (Note that Linked Data Signatures is an outdated standard, and Object Integrity Proofs are recommended.)

So, why are we talking about this at length? We strongly urge major ActivityPub implementations to adopt Object Integrity Proofs, or at minimum Linked Data Signatures, for activity signing!

A Call for Better Activity Signatures in the Fediverse

Why Major ActivityPub Implementations Should Adopt Object Integrity Proofs

Let's say you have accounts named alice@bar and bob@baz that don't follow each other, but they both follow john@foo. When alice@bar replies to john@foo's post, how can bob@baz see this reply?

silverpill

@fedify

I am going to implement Conversation Containers instead of inbox forwarding. This mechanism keeps conversations synchronized, but also enables backfilling and moderation of replies.

silverpill

Existing implementations of Conversation Containers (#Streams and #Hubzilla) add a context property to top-level posts of conversations. This is also what FEP-171b currently prescribes.

However, as I noted in the FEP, this is not consistent with FEP-7888 recommendations.
context property is supposed to be used for grouping objects, and in Conversation Containers we have a collection of conversation activities, not posts.

A property that links top-level post to its conversation container should be called differently. For example, threadContext or conversationContext

Note.threadContext == Add.target.id

context can still be used, but for linking to the collection of posts (although I would prefer to use thread for that purpose).

#fep_171b #ConversationContainers

Existing implementations of Conversation Containers (#Streams and #Hubzilla) add a context property to top-level posts of conversations. This is also what FEP-171b currently prescribes.

However, as I noted in the FEP, this is not consistent with FEP-7888 recommendations.
context property is supposed to be used for grouping objects, and in Conversation Containers we have a collection of conversation activities, not posts.

silverpill

NIST: Transition to Post-Quantum Cryptography Standards

https://nvlpubs.nist.gov/nistpubs/ir/2024/NIST.IR.8547.ipd.pdf

ECDSA, EdDSA and RSA will be disallowed after 2035 (page 20)

silverpill

adding support in #Fedicat for the Conversation post visibility in #Mitra

screenshot of a timeline with the top post listing Conversation as its visibility 

Detected text:

12:29Homeexampletechnicats• Conversationtechnicattechnicat@technicat test reply from mitra@technicat@universeodon.com12:28 AM& shy (visible to followers)technicattechnicat@universeodon.comtest post for mitra12:28 AMtechnicatscliquish (visible to mentioned)technicattechnicat@technicat ilkj;lkj;lkj@technicat@universeodon.com12:26 AMtechnicats@ cliquish (visible to mentioned)tachnicat12:26 AM
silverpill

📚 Mastodon History

Back in February 23rd, 2016 — Mastodon first described itself as:

“Mastodon is a federated microblogging engine. An alternative implementation of the GNU Social project.”

The history of Mastodon is tied to GNU Social.

github.com/mastodon/mastodon/b

github.com/mastodon/mastodon/t

#DeSo #Fediverse #FediverseHIstory #GNUSocial #Mastodon #MastodonHistory

Mastodon

Mastodon is a federated microblogging engine. An alternative implementation of the GNU Social project. Based on ActivityStreams, Webfinger, PubsubHubbub and Salmon.

The core ideals of this project are:

• Independence of legacy Twitter APIs - we don't want to be compatible with Twitter clients, we want our own clients
• In that vein, a strong and clean REST API and OAuth2
• Minimalism. Just because you can do almost anything with ActivityStreams doesn't mean you should. Limit the set of possible functions to what makes sense in a microblogging engine. This will make federation as well as UI design a lot easier
• Ease of deployment. The end-goal of this project is to be distributable as a Docker image.

Current status of the project is early development. Documentation, licensing information &co will be added later
silverpill

Work is still incomplete, but this is the new cover design for the upcoming JP Mitra install guide doujin (with Shadow Wizards courtesy of @ehhh ).

The completed book will be debuted in Onionket 8 next February, and then God willing the physical version will be printed for Summer Comiket C106 in August after that.

cc @silverpill

silverpill

The instance type we’d like to host is most likely gonna be @mitra #mitra

..specifically because it supports nomadic identity, so neither our instance nor our users are locked in stasis; Weird net can migrate to a different AP instance in the future if necessary, and instance tenants can migrate to any other instance that supports Nomadic Identity (FEP-ae97), e.g. with:

codeberg.org/silverpill/fep-ae

It’s pretty easy to self-host; the real challenge is instance governance and moderation.

The instance type we’d like to host is most likely gonna be @mitra #mitra

..specifically because it supports nomadic identity, so neither our instance nor our users are locked in stasis; Weird net can migrate to a different AP instance in the future if necessary, and instance tenants can migrate to any other instance that supports Nomadic Identity (FEP-ae97), e.g. with:

silverpill

>sub.club is shutting down

But #mitra is not.

And if you really want to use Stripe, we can try to find a way to make it work:

https://codeberg.org/silverpill/mitra/issues/72

RE: https://mastodon.social/users/subclub/statuses/113646793698065585

silverpill

Good morning Fediverse. It's a gray day.

In case, you need reading material, I wrote FEP-1311: Media Attachments.

Note: Codeberg is down right now. It's not my fault by posting this link. It also was before.

Go Up