πŸ•ΈοΈπŸ‘‰πŸ‘ˆπŸ’ Ordering an IndieWeb webring

Are you a member of the πŸ•ΈοΈπŸ’ IndieWeb Webring? Perhaps one of many who noticed that the "previous" and "next" links were actually going to random active member sites in the ring?

I'm pleased to announce that the "next" and "previous" links between webring member sites should now be, more or less, deterministic! For example, if you visit gRegor's site, scroll to the webring links at the bottom, and click "next", you'll be taken to a site like mine! (at this moment, it is mine!) From my site, if you click the "previous" link, you'll be taken back to gRegor's site! This should m-

Wait, did you say "more or less"?

Well, uh, yeah, good spot. At a high level, the update works like this:

Each active member site gets a pseudo-random "sorting" number. For a given site, the "next" site is the one with the next highest sorting order, and the "previous" is the one with the next lowest.

When you click on a "next" or "previous" webring link from a member site, your browser tells* the webring where you're coming from with a "referrer" header. If the webring recognizes the referer as an active member site, it'll look up the next - or previous - site in the ring to redirect you.

Woah, woah, I see that asterisk

Way to stay sharp! Referrer headers can leak potentially sensitive information, so over time browsers have added ways to restrict how and when referrer headers are sent between sites.

Most of the time, the webring will only see the referring URL up to the first slash after the domain. For folks whose site on the webring has a path component, the webring won't be able to match it against most referrers.

It's also possible that your site is configured to not send referrer headers at all - in that case, the webring has nothing to go on to figure out that the visitor came from your site.

If the webring can't figure out where a visitor came from, they'll just get directed to a random active site.

That feels kinda broken if you ask me

Well, it's no worse than before!

Isn't there a way to improve it?

There is! Or... was. The first version of the webring included unique identifiers in the webring "next" and "previous" links for each member site. These unique IDs would have made it straightforward to figure out where a visitor is coming from.

Oh, don't tell me-

Yeah, I removed that feature last year. πŸ˜…

The emoji-based IDs were hard to manage, added messy unintended meaning, and made it easy to mess up the webring links (or spoof someone else's) when copy-pasting!

You're going to link us to some code, aren't you?

You bet! You can find today's updates to the code here on my git hosting.

Thanks, I guess. So, what's next?

I'm not sure! I feel like this update has the webring in a pretty good place. It's simple enough that I understand it and it works. I might look into some updates for the directory or the site layout, or help surface more information about member sites, like whether they advertise RSS feeds.

Okay that's it, for now! Thanks for reading, imaginary interlocutor! As always, feel free to reply to this post on your own site, or feel free to drop me a line in the #indieweb chat (I’m schmarty there)!


Likes

Jamie Tanna

Mentions

gRegor Morrill gRegor Morrill at said:

Nice! Also, I love the conversational style of your subheadings; made me chuckle. πŸ˜ƒ