A client that reads pages from the federation and renders the most popular plugins shouldn't be too hard. The model for Dynamic Resolution is the only tricky thing. A common mistake is to assume all sites offer sitemaps but this isn't the case. Also the long-timers are slowly evolving away from libraries that are no longer considered best practice. The upward-compatible mechanisms, especially dom api and callback vs promise are a lingering legacy that we should not walk away from when committing to the fedwiki codebase. matrix , github
As a rule of thumb, any json should render. {} is a valid page json which renders as "Empty".
// F E D E R A T I O N @JsonIgnoreProperties(ignoreUnknown = true) public static class Page { public String title = "Empty"; public List<Item> story = List.of(); public List<Action> journal = List.of(); public List<String> context() { List<String> sites = new ArrayList<String>(); for (int i=journal.size()-1; i>=0; i--) if (journal.get(i).site != null && !sites.contains(journal.get(i).site)) sites.add(journal.get(i).site); return sites; } }
Note, null and [] are not acceptable as page json because they aren't the right shape. Nor is }} legal json so this doesn't pass the first test.
first test

A red test as example
Change 'Untitled' to 'Empty' to get a green test suite. But wait a minute...