is a Roster created not by hand, but by using code. This ensures that the roster is as up-to-date as possible.
# Uncoupling
We aim to figure out the best way to move away from using active rosters. While we are writing and creating many domains each day in a research group we need them, but as we move forwards, we want to leave snapshots of these rosters to enable robustness as we fork pages and rosters around The Federation.
# Proxied dynamic rosters We can achieve this by using the built in roster proxy function in fedwiki – that is one roster can refer to another. In this way we can have a whole bunch of activity pages scattered around various sites all referring to a single canonical roster.
# Switching We can then switch this canonical roster from a dynamically (code) generated roster to a static roster using an external service to re-write the wiki page containing the canonical roster and presto – all other rosters are now hard wired.
# Speed
Rosters that are slow will not draw fast enough for activity pages to read them. Unfortunately these proxied dynamic rosters are slightly too slow for that.
# Current implementation
The current implementation attempt to prevent strain on the server by using json files cached in wiki. We use the JSON Plugin.
The format of the stored json is based on the same provided by Ward Cunningham:
- http://search.fed.wiki.org:3030/site-web.json
Atopia Domain Index caches a similarly structured json-array of domain names on the Atopia Server, and stores these in it's JSON Plugin.
The Federation Domain Index caches domain names from the whole federation, and likewise stores this in it's JSON Plugin.
# Future Implementation
We propose that a future version of the wiki-server should return rosters for all the sites it serves, with a built in query language enabling a range of flexible roster creation similar to the ones being explored here.
Automatic Snapshots could be preformed on each page-edit. This would combine many of the advantages of both approaches to programatic creation of rosters, and could be of more general application to other plugins.
# Active Roster Examples
The rosters below are dynamically generated with code on the `rest.livecode.world` server. If the server goes down these rosters will not function.
Thought Garden Sites ROSTER rest.livecode.world/thought
Ward's Wiki Sites ROSTER rest.livecode.world/ward
# See also