+++ date = "2019-08-17T05:11:17+00:00" publishdate = "2023-12-29T07:08:55+00:00" title = "Webrings with Openring" slug = "webrings-with-openring" author = "Thedro" tags = ["indieweb"] type = "posts" summary = "Openring is a tool that generates a webring from a list of RSS Feeds. It's a nice way for others to discover blogs that you follow." draft = "" syntax = "1" toc = "" updated = "2020-09-14" +++ {{< image source="/images/webrings-with-openring.png" title="Webring Generated by Openring" >}} Webring Generated by Openring {{< /image >}} Lately my fascination has moved towards the [IndieWeb.](https://indieweb.org/) Maintaining your online identity and data independently of big corporations is {{< sidenote mark="crucial." set="left" >}}Own and preserve your own data.{{< /sidenote>}} My website has a simple webring at the bottom of every {{< sidenote mark="article." set="right" >}}Readers can discover even more interesting content.{{< /sidenote>}} > "Webrings allow ringbearers to create a network of blogs around a shared goal > where readers can choose the next, previous, and random blog in the ring." {{< footer >}}[IndieWeb: What is a Webring?](https://indieweb.org/indiewebring){{< /footer >}} [Openring](https://git.sr.ht/~sircmpwn/openring) is a neat {{< sidenote mark="program" set="right" >}}Openring is an open source program written in [Golang](https://go.dev/doc/) that generates a webring from a series of `RSS` feed links.{{< /sidenote>}} that allows you to generate a webring. Pass a series of `RSS` links as arguments to `openring` in addition to a template and it generates an `html` file that can be included anywhere on a web page. This is particularly nice for static site generators. ```shell openring \ -s https://example.com/feed1.xml \ -s https://example.com/feed2.xml \ -s https://example.com/feed3.xml \ < template.html \ > output.html ``` It's a matter of making my own template and including it within my custom {{< sidenote mark="theme." set="left" >}}The original template is quickly adapted to use the [Bulma](https://bulma.io/) CSS Framework.{{< /sidenote>}} ```html

On the Web

{{ range .Articles }}
{{end}}

Generated by Open Ring

``` This website uses [Hugo](https://gohugo.io/) to generate static content. It's as simple as including the generated `.html` in the Go `HTML` template. Done. ```html {{- partial "openring.html" . -}} ``` [Drone](https://github.com/drone/drone) is a decent {{< sidenote mark="deployment" set="right" >}}[Drone](https://drone.io/) is a continuous delivery tool that is super lightweight and highly flexible.{{< /sidenote>}} tool. Add a configuration step to fetch `openring` and generate the webring on every build. ```yaml --- - name: openring image: debian:stretch-slim commands: - chmod +x openring - > ./openring -s https://drewdevault.com/feed.xml -s https://mxb.dev/feed.xml -s https://www.taniarascia.com/rss.xml < generators/openring/template.html > generators/hugo/themes/tdro/layouts/partials/openring.html ``` Openring is integrated into the website's deployment pipeline. The build {{< sidenote mark="time" set="left" >}}A precompiled binary is downloaded to demonstrate. A local binary would speed up this step considerably.{{< /sidenote>}} is roughly `40` seconds. Not too {{< sidenote mark="bad." set="right" >}}We can compile the Go binary from source, but that would slow down the deployment process.{{< /sidenote>}} {{< image source="/images/drone-ci-webring.png" title="Drone Pipeline" >}} Drone Pipeline {{< /image >}} This was easy to integrate and as more knowledge is gained about the IndieWeb, new features will be added to the site.