Thanks to a comment in one of the federated search threads, I'm currently merging our federated search implementation with opensearch. In case you missed it, I have serious reservations about Mastodon's proposed implementation. The fediverse is not a dictatorship, and ideas spread here based on merit and consensus, not decree. But I'm not here to throw rocks. I'm here to present an alternative.
Permissions are based on the 'canSearch' attribute, which is an array of actors, groups, lists, follower collections, etc. which are allowed to search each channel. A public search will contain the ActivityPub public inbox, for example. An empty array means nobody can search your stuff.
A site search is the aggregation of individual channels on the site that allow the visitor to search their content; and the instance provides its own 'canSearch' attribute for the actor record of the instance (at the site root). So each search requires permission up and down the stack with you
providing the final say. This has no linkage to user discovery; which uses a separate permission.
Searches return ActivityPub collections when fetched with ActivityPub headers, Nomad collections when fetched with Nomad headers, and text/html when fetched with a browser. Pure fediverse implementations need only support ActivityPub. Would be quite happy to work with other federated communities on further standardisation and refinements. For now you can provide feedback and discuss this in the @Streams
group ( https://unfediverse.com/channel/streams
) and I'll create a separate working group if there's enough interest. Would love it if somebody would like to step in and create the FEP for this as my available time is quite constrained. This implementation will run on a rasberry pi or shared hosting using any search backend you wish to implement.
What opensearch brings to the table is a standardised and mature specification related to discovery of the search endpoint(s).
Since we already support federated search based on this model and also have long-standing support for opensearch, merging these should be not be terribly difficult -- and is currently in progress.