In ActivityPub, to update an object that you control and that is hosted on your home instance, you:
- Send an
Updateactivity via C2S, which has only the specific fields you want to update
- The server applies your changes and sends out an
Updatevia S2S containing the whole object, as a notification for others to see the new state
Update is used merely as a notification there. What if you want to update a remote object, that is hosted on some other server? How to tell the remote server over S2S which changes you want to make?
You might say, just put the updated object in an
Update and let the remote server update it on their side, perhaps comparing to the original, to make sure you’re updating only fields you’re authorized to update. I expect complications with diffing the JSON to determine what changed, but even if it works, how can servers know that your
Update is a request to update an object rather than a notification?
You might say, by telling that you’re updating a remote object and not a local one. But, there may be objects on your own server, that you don’t own, and you’d want to request changes to them using
Update as well.
PROPOSAL: I thought I’ve seen this somewhere, but couldn’t find it. So here’s my proposal. A
Patch activity for updating specific fields of objects.
I need this for ForgeFed and Vervis. It doesn’t make sense to have a dedicated activity for every possible situation of updating some field or two. ActivityPub doesn’t talk about authorized updates of remote objects, so, let’s make an extension for that.
Thoughts, ideas, doubts, alternatives?
(Ironically, ForgeFed has a Patch type, which would conflict with the Patch activity… but I suppose I’ll find some way to solve that)