I’m happy to see that a lot of people, both regular and “content creators”, are relying less solely on commercial social platforms. But discoverability is still an issue, maybe taking back the web requires using ancient tools like webrings.

Hand drawn sketch of a hub and spoke arrangement with 'Your site' as the hub and other sites like Mastodon, Instagram, Github, etc. as spokes
Publish on Own Site Syndicate Everywhere

The idea of POSSE is very appealing from a data sovereignty perspective but you’re still relying on third-party platforms for discoverability. If only there was a way to discover others from each other… well there used to be: webrings. The basic premise was, you land on a site(D) and you were pointed to the previous(C) and next(E) sites in the ring. A random site button was also common.

A flow chart showing five nodes, A through E, pointing to each other in a circle

An easier and older(?) concept is a “blog roll”, where you just list the other sites you find cool/interesting on your site somewhere (typically in the side-navigation bar which was as common design pattern). However, the downside with blog rolls is that you have to maintain it manually and it could grow quite long. As a reader, it’s hard to choose which site to visit; it’s a real judging a book by it’s cover dilemma.

The previous/next links in a webring kind of solve both those problems, especially if there is an index page that one can visit to see all the sites. But the biggest downside is that it typically requires an active server running “code” to route the traffic (because manually linking to sites would require constant upkeep) and if a site(C) ceases to exist or removes the previous/next links then it breaks the ring. The other issue is that if there’s a popular site in the ring(B) then only the adjacent sites (A & C) benefit from the additional 👀.

Same ring as before by C is colored red and there are x on it's connections to A&C, B is colored green.
Broken webring

So what are some mitigations we can apply to this webring model?

  1. Don’t run “code” on each site or a central server
  2. Give sites an easy way to link previous/next sites (minimal technical ability required)
  3. Make sure that all sites actually exist and link correctly to their adjacent positions
  4. Change the order of the sites that link to each other to facilitate more discoverability
Same as first image but B is green and the order is CAEBD
Shuffled ring gives better exposure

Well, turns out that Ringfairy actually address all of these:

  1. It uses statically generated redirect pages for each node in the ring
  2. Individual sites only need to insert three (previous/index/nextg) regular url links
  3. It audits sites and excludes missing/malformed sites during build to preserve ring integrity
  4. It can shuffle the site order each time it builds the ring

In my quest to just do things and learn from them instead of wishing it existed and with encouragement from the System Crafters Community, I started Craftering. Of course this site is a part of the ring and you can explore others with the previous/next links in the footer. I can say for certain that my site is not (B) but it’s been fun to bring others into the fold. We’re collaborating via a Codeberg repo and we’ve had a few people who made their first contribution to an open source repo and/or their first Pull Request(PR), it’s rewarding to be a part of that milestone. A couple first times for me as well: this is first community project that I’m maintaining; and I’ve submitted my first Rust-lang PR to Ringfairy (more on that in a future post).

Same 5 nodes as first image but the letters spell CRAFT
Craftering be Crafting