I have been thinking about this for quite some time, feel free to add me on matrix (link in bio) if you are interested to collaborate/discuss.
It's interesting to consider a few potential use-cases, as you can see below the technical requirements for each use-case can be vastly different.
Notice, I am assuming that accounts are connected, aka if someone creates a post, that post can reach users of other instances. See the "Connecting Instances" section below.
Use Case: Organizing an Event
Let's say Alice wants to organize a trivia night at the coffee shop she works at. After all the preparations, Alice needs to invite people, so she makes a post with the location, the date, and the announcement of the event.
People following Alice's (or the coffee shop's) account, will be notified of the event and choose to either attend or not. Some may even "boost" the event, so it's reaches more people.
Discovery is not optimal. It's possible, people that live nearby the coffee shop, and would have otherwise attended the event, weren't following the account, as a result weren't notified and missed the event.
Instead, if a location based feed was available, it would have allowed people to find Alice's post and attend the event. The UX for such a feed can be complex, but the backend requirements are pretty straightforward, we need to filter (and/or sort) using the location, date and tags of an event.
All in all, the volume of data is small (not a lot of events happen at the same time and the same area), and the application is not time-critical (if a post takes several of minutes to reach other users it's not an issue as the event is posted days in advance).
Use Case: Short-Term/Live Monitoring
Let's say a group wants to organize a protest march, they know that the police tends to get violent on such occasions, so they need to monitor the police's activity and alert the people accordingly.
So, they create a system where some people are responsible for monitoring the area and regularly upload posts with the exact location of the police. This allows the group to create a map that shows the locations of police blocks and adjust their route accordingly.
While the example is terrible, I believe the use-case is clear. A lot of people, need to monitor "something" that is happening "right now".
Again, probably most of the complexity lies on the UX design, but a few backend requirements are added:
- There is a large volume of data, and everything is time-critical.
- There is a need for control on who is able to posts, otherwise ill-willed users will be able to create noise and render the system useless.
- There is a need for control on who is able to access the information.
Keep in mind that (2) and (3) do not mean that a decentralized platform would be better suited.
Use Case: Long Term Monitoring
Let's say, during the spring, a population of ducks passes through the city. Tourists and locals alike want to watch the ducks, so they start recording sightings.
This information not only allows users that are nearby to rush to watch the ducks when there is a sighting, but also can be used to create a heatmap of the most probable locations to find ducks for a given time of day.
Technical requirements:
- Small volume of data, but information can be time-critical.
- Need to generate notifications for users interested to respond to the sighting.
trigger warning
I had SA incidents in mind when writing the above example, but I choose a more light-hearted example to avoid needlessly triggering people.
The use-case is pretty much the same. The locations are places to avoid for safety reasons, and people rushing to the scene are either searching for the perp or helping/protecting the victim.
Use Case: Information Sharing
Let's say Bob learns an interesting trivia about the statue on the town square. He creates a post about the trivia and stamps it with the location of the statue.
Here, time is irrelevant to the post, people are going to be interested in Bob's trivia years down the line. However, people need to be able to discover Bob's trivia, and a map is probably the best tool for the job.
Technical requirements:
- Volume of data depends on population of an area, city centers are going to have more posts that small towns.
- Nothing is time-critical.
Connecting Instances
Utilising this, we could create a list of Habitat instances that are relevant to a user’s current location, and then query only those instances.
I don't think this would work, habbitat.world would still have users around the globe, as a result it would be queried every time someone refreshes their feed. You may make a case that there shouldn't be such an instance, but keep in mind (a) pretty much every Fediverse platform has a few huge instances, and (b) that would exclude users located in places without a local instance (or local instances with unethical admins/mods).
I believe the existing follow-based federation mechanisms would provide a better solution. Keep in mind that fedizens don't want to see "everything" within their feeds, but a curated list of posts/events based on their choices and/or the choices of people with similar background (same instance).