As I migrate away from big tech and towards independent solutions and in particular services powered by OpenStreetMaps and ActivityPub, I often find that the biggest missing piece remaining is that of a social element allowing for user reviews and feedback to locations on the map—in the intersection between the two services.
I have been playing with the idea of how this could be implemented, and decided would share my thoughts on a technically minimal and entirely federated standard for OSM reviews. The idea is to have a very basic ActivityPub integration that can work with even simple (microblog style) messages, allowing users to contribute reviews without having to sign up for additional services or necessarily install custom software.
The standard: Hashtags and OSM IDs
I propose a standard review format for microblogs based on a simple format:
[free_text] [optional_score] #OSMR #[OSM_ID]
For example, a review of a café could look as follows:
Café In has delicious coffee and friendly staff. I would recommend it to anyone! 10/10 #OSMR #13042772401
The content that shows up first is free text, and could be anything. The score does not necessarily have to be standardized, as long as it takes the form of a fraction: It would be easy for any client to parse valid fractions and calculate average scores along any given scale. The hashtags enable the scores to be federated to any service seeking to make use of the reviews.
Federation of reviews
On the receiving end, platforms seeking to aggregate reviews would observe the #OSMR hashtag (OpenStreetMapsReviews - anything else would of course work as well) and parse posts containing a single valid OSM ID in a separate hashtag. Users should be encouraged to enable tags.pub in able to facilitate federation of their reviewss, and the receiving server of course also needs to make use of this service.
A challenge with Mastodon-style federation would be that reviews would not be retroactively collected: While this system would allow any service to collect federated reviews, I am not aware of any useful way of filling any existing backlog of reviews.
Once an ActivityPub instance is set up, subscribed to tags.pub, and receiving incoming reviews, it should however be relatively achievable to collect these reviews and connect them to nodes in various mapping applications. At least it seems to me this would be the least complicated way to implement federated reviews into OSM, and it would allow for a lot of flexibility for different implementations along every step of the way.
Moderation would be a challenge, as servers gathering user reviews would have to be able to provide some sort of guarantee against abusive or broken content. Mastodons upcoming shared block lists could be beneficial in this regard.
The types of posts visible - ranging from microblogs to pictures, blog posts, and peertube videos, would of course be up to the implementation in each app choosing to draw on these reviews.
Enabling user reviews
One challenge is for maps and apps to be able to display reviews, another is of course enabling people to write them in the standardized format. Writing these reviews would not currently be an intuitive process as OSM IDs tend to be hidden from users.
Ideally, map apps such that would benefit from showing reviews, such as CoMaps, OsmAnd, OrganicMaps, and MagicEarth, would allow users to sign in using Fediverse accounts and post reviews directly from these apps. A less ambitious implementation would be some sort of "share on the Fediverse" functionality, copying the two necessary hash-tags to the clipboard with a set of instructions for leaving federated reviews.
Establishments would be able to encourage customers to leave reviews on Mastodon directly using the share button, for example:
UX facing users on the fediverse
A shortcoming I see with this approach is that the hashtag for the OSM ID would not mean much (or anything at all) for the average fediverse user. In the best case scenario it would lead to posts reviewing the same establishment, in the worst case scenario it would be completely confusing for human readers. Perhaps if the standard caught on these posts could be recognized by federated clients to display OSM metadata for the relevant node, but this might be in poor taste vis-a-vis the implementation of ActivityPub. Some form of attachment providing node information would solve this problem, but would make the solution more technically complex and possibly break with the decentralized nature of this proposal.
Conserns raised in the comments
- "One Problem I see with using the OSM ID is that this is not necessary stable over time. For example switching the representation from a node to a way will change the OSM ID and also the OSM Ids are reused when objects are deleted so you could end up with reviews from other places mixed in." — @felixcremer@fediscience.org (direct link)
As I am not a developer I don't have the opportunity to implement this myself, and I realize this might be unhelpful day dreaming. On the other hand I believe this is one of the key missing elements of the Fediverse at the moment, and I think a standard along the lines of what is proposed here would be a powerful tool for both users and app developers. Sometimes I just miss having a way of recommending a great restaurant in a way people online could possibly benefit from without having to use big tech services. Even a minimal recognition of a standard such as this would provide a fruitful starting point to that effect.
I would love to hear opinions whether this would be feasible, whether alternative approaches are being explored already, and just general thoughts and comments!