How would you implement pingbacks in Solid?

Currently if we want to build any sort of social app, we have the tools of inboxes and outboxes, activity streams, etc. These all work great, but they rely on either allowing a random entity on the internet append-based write access to a dataset in your pod, or they require direct connection between the two people.

You could potentially do a 7 degrees of relaying, so I publish a activity for John, each of my friends see that I’ve published something for John, and if any of them are connected with John, then they publish an activity saying “hey, John, we saw a message over here for you” as a direct message to John, or they broadcast it onwards to their friends, etc. As all humans are within 7 degrees of connection to each other (unless that’s a myth) then any message would ultimately reach any other person (with some delay, but at which point the two could become closer connected)

Another way might be to have some sort of way to do pingbacks or whatever from the blogging days when publishing something on your blog triggered a pingback to the blogs you mentioned. That’d require a spec addition to somehow support that type of behaviour, I think?

Any other ideas?

1 Like

Do you have a specific algorithm in mind?

With a naive approach, this sounds like we would flood the internet with billions of requests every time we want to write someone a message (e.g., “hack” the system by saying “Hi my friends, do you know non-existing?”, which would require every person on the world to be asked if they know the person before it terminates with a “Not found”)

I think with a public database of “who-knows-whom” this would be much more efficient, because you only need to query the database and then you know which path you can take. From a privacy perspective that’s probably a no-go though.

And another idea from the top of my head: We could artificially decrease the degrees of relaying if we introduce relays provider, which intermediate between two parties. For instance, if user A and B are both registered with a relay, user A can ask the gateway to send a message to B. The outcome would be similar to public append access, except that you choose a trusted gateway which can filter the notifications (to prevent DOS, or only allow email-verified users, etc). You could also use multiple gateways to make it more federated.

Yup, so you’d still use the same algorithm, but you could also “know” a relay provider (a WebID for an automated non-human agent), and then that would be like “yeah, I know X”, so it’d only be one hop if you are both connected to the same relay.

1 Like