Hey folks!
I’ve been working on RetroMeet for the last few months and while the first version is not yet out of the window I was thinking about federation.
RetroMeet is a dating app and the dev of Alovoa also expressed the interest in implementing AP. I had read the AP spec a long time ago and did another read today and I have some thoughts and mostly some questions. Mostly if AP is really the thing for it.
This is a mix-and-match of my ideas, sorry if it’s confusing!
-
Interop between RetroMeet and other federation software
While most of the cases I saw for AP implementation wanted to leverage the existing social graph of Mastodon and other AP implementations, that is not the case for RetroMeet. RetroMeet profiles should only be visible for other RetroMeet (and other dating apps such as alovoa). Not only that, but the basic interactions between two users are not the same as in Mastodon or Friendica. Users cannot publish posts/Notes and following in that sense doesn’t fully make sense. I know that the spec says the followers collection can be dropped, so I can just reject any follow requests. Which also leads to the next point
-
Allowlist only
Now, this sounds like an implementation detail, but it is linked to the next point. I think it makes sense for RetroMeet that it only federates with other allowed servers. This is because the dating space is quite adversarial. I want to avoid data leaking if possible (though I am aware that it is the internet and the best I can do is try to avoid it, but can’t really control it).
In the same point, I’m thinking of only allowing AP S2S with signed requests as the ones Mastodon implements (aka “authorized fetch”)
-
Server discovery
While most of the fediverse software seems to have some kind of centralized directory of servers, I was thinking of something more akin to Grokster “supernode” idea. A server would know the address of a retromeet supernode (a hard-coded one) but then through it it would discover other supernodes of the network. Those supernodes then aggregate information about nodes present in the network. This would also allow for the allowlist discovery to be suggested to the admins of instances.
-
People around you
The “empty feeling” of other AP software is very much a deterrent for using dating apps. If there’s no one to talk to, there’s nothing to do in the app. One thing I was thinking is that users will have a location, so any time a user changes location, I could fetch users from a collection of users around that new location (I’m ignoring here some implementation details such as caching previous calls to the same location, etc).
This kinda still makes sense for AP, right? If, say, users were in
/near?location=xxxx
. (xxxx could be a name, an id, lat/long coords, etc), this could return a collection of users in that server close to that location (assuming all previous authorization concerns) -
Could liking a profile be matched to a following?
I said following did not make sense, but I was thinking of the interaction of liking another profile and giving special rights to profiles that one likes and that are mutuals (for instance, making more parts of one’s profile available or only allowing messages from profiles that one has liked). For RetroMeet this would be a “like” interaction between two profiles, but it is so close to the AP definition of followers that I’m wondering if it would be useful using it. One of my fears of using “like” is that it will be mixed with AP definition of likes, OTOH using followers implies a different nature of relationship in the context of AP.
Sorry, this is really a mixed bag of thoughts. I guess I’m looking for other people that have been thinking of non-microblogging (or even long form) for AP to weigh in on those ideas.