Trying to make web applications federated is a popular effort. Examples include things like the “fediverse”, as well as various other efforts, like attempts to make distributed software forges, and so on. However, all of these efforts suffer from a problem which is fundamental in building federated applications built on top of the web platform.

The problem is fundamentally this: when building an application on top of the web platform, an HTTP URL inherently couples an application and a resource.

19 points

Except it doesn’t couple an application and a resource. Serving the application/web UI is only a side effect of the browser requesting the resource be served in HTML format, which brings up the web application. It’s a backwards compatible convenience for users to be able to access the resource in more than one way.

If you request the same thing in application/activity+json format then you get exactly the same resource, but in machine format. Lemmy apps use that for example to display the content natively and completely bypass the web application part of it.

The browser very well could say it accepts both ActivityPub and HTML format, in which case the server would serve the ActivityPub that the browser could display using some native implementation. And bam, there’s no longer an application+resource tie.

permalink
report
reply
6 points
*

I don’t get what is the “application” in this context. Is that the Lemmy server or kbin server, which use the ActivityPub protocol? And couldn’t this be solved with a sort of .apub at the end of each resource, like the .json used to work for Reddit?

permalink
report
reply
6 points

Application being the Lemmy UI I would guess.

No need for .json or .apub, that’s already handled by the Accept and Content-Type header.

Just happens that the browser requests HTML, which loads lemmy-ui, which then requests exactly the same resource again but this time in ActivityPub format, which returns the data as expected in the standardized format.

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.2K

    Monthly active users

  • 1.8K

    Posts

  • 30K

    Comments