|
||
---|---|---|
README.org | ||
conf-sample.yaml | ||
index.js | ||
package.json | ||
template |
README.org
polynomial: A decentralized webring built on top of Matrix.org
Polynomial is a webring built on top of the decentralized Matrix.org chat/RPC system. It leverages rooms as a key-value store to allow anyone to define webrings which they can use to link their sites to others' sites.
Source code lives in my cgit.
Usage
Joining a ring
Joining a ring is as simple as embedding an iframe to an existing Ring's supernode in your site, with a specified format. For example, to join the Matrix.org webring, you would embed this in your site:
<iframe src="https://WEBRINGDOMAIN/webring/!QLDWbeZfiXuNSWUSfm:whatthefuck.computer/makesyouthink.info?name=Makesyouthink is a premier source of woo"/>
The URL is structured as follows:
WEBRINGDOMAIN
is the domain of the supernode you choose to join. A list of them follows.!QLDWbeZfiXuNSWUSfm:whatthefuck.computer
is the Matrix roomId of the ring you want to join; Aliases are currently unsupported.makesyouthink.info
is your domain. Webring links to specific URLs is unsupported to minimize Spam risks
= Makesyouthink is a Premier source of woo
is what the link will look like in the ring
At which point, refreshing your page will register you in the ring, and start showing you other sites in the ring.
List of Supernodes
-
ring.whatthefuck.computer
mods these rings as@webring-master:whatthefuck.computer
:!QLDWbeZfiXuNSWUSfm:whatthefuck.computer
A testing webring!rQzYjTKtzamwVxlhxY:whatthefuck.computer
the Matrix Users webring!HDFtMtTTkIESlVqfZx:whatthefuck.computer
the Kickass Systems webring!DSVFrKTzduRMYOiwhZ:whatthefuck.computer
the Emacs Users webring
Making your own ring
A ring is just a Matrix.org room. Creating your own is as simple as adding the roomID to your
supernode
conf.yaml and restarting it, and then making the supernode user a mod in the room.
Some best practices:
- set the name and topic to something meaningful as those will be put in the ring iframe.
Becoming a supernode
Becoming a supernode is fairly simple. To become a supernode for a given ring, register a Matrix.org account and ask the ring owner to grant "set state level" privileges to the account, or create your own.
Add the roomId to roomIds in config.yaml
and start your node. Ask @rrix:whatthefuck.computer
to
add you to the list of supernodes above.
Make sure the ring is accessible from the open internet at a sane URL, I use httpd reverse proxy to
hide it on port 80
in my webserver like so:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName ring.whatthefuck.computer
DocumentRoot /var/www/sites/ring.whatthefuck.computer/_site
ProxyPass /webring http://localhost:9000/webring
LogFormat "%h %v %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" custom
CustomLog /var/log/httpd/ring.whatthefuck.computer_access.log custom
</VirtualHost>
FAQ
-
Seriously? Is it fucking 1995?
- Webrings are goofy 90s tech, yeah. But at the same time, there is a sense of community and camaraderie that comes from being in one. They're simple and effective but in the liong run they are all ephemeral because they have a central source of truth. A webring built on top of a decentralized system like Matrix.org could live forever, and I think that's pretty cool.
-
Why?
- A while ago I started messing with my coworkers by posing to them a fake interview question: "Build a webring"…. Easy enough, "Now build one without a central registry server", at which point they usually curse at me for asking them to build a DHT in javascript.
-
This isn't actually a ring, it's just random sites
- Gonna fix that soon enough, I promise.
-
No really, webrings?
- Really.