💾 Archived View for rawtext.club › ~sloum › geminilist › 002600.gmi captured on 2020-10-31 at 14:39:10. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2020-09-24)
-=-=-=-=-=-=-
easeout at tilde.team easeout at tilde.team
Tue Sep 8 18:31:57 BST 2020
- - - - - - - - - - - - - - - - - - -
Recently on the mailing list and in #gemini we've been talking aboutsyndication, as in RSS / Atom. I want to begin by summarizing some ofour thoughts.
RSS and Atom are well-supported formats. They are XML, but you canprobably import a parser / generator rather than having to write oneyourself.
JSON Feed is a well-supported format, and is regarded as simpler thanRSS / Atom. Even if you had to write your own parser, you would be ableto build off a JSON parser because those are available for basicallyevery language. They are also often simpler to build on than an XMLparser.
RSS, Atom, and JSON Feed publish not just Gemini, but other protocols.They are commonly served over not just Gemini, but other protocols. Andexisting feed readers generally expect feeds to be in one of theseformats. So if you want your site to be syndicated in the existinginternet feed reader ecosystem, using one of these formats is the priceof entry.
CAPCOM expects Atom, therefore Atom became a common way to publishGemini blogs. This works, and does not need to change unless analternative would be markedly better.
However, some of us are concerned with the complexity of creating a feedalongside creating Gemini content. If one of our goals is to make Geminicontent easy to publish, making it easy to syndicate is an attractivegoal too. And it is jarring to go from writing Gemtext, which isremarkably simple and straightforward, to writing Atom XML, or tofinding a static site generator tool that will do it for you. This feelslike a cost. It might remind us of the bloat on the web we are trying todo without. Or it might be a barrier to entry for users who would beconfident publishing Gemtext, but not confident publishing Atom, or forthat matter, a web page.
To address the fact that creating a feed is a few steps more difficultthan creating a Gemtext page, one idea is to make a new feed formatwhich is written in Gemtext and conforms to a pattern. While it's truethis would be easy to write, there is no existing parser ecosystem forit, so it would be effectively Gemini-only. If you wanted to syndicateto the broader internet, you would still need to publish something likeAtom. Furthermore, although parsing Gemtext is not as difficult as Atomor JSON Feed if you had to start from plain text and work your way up,existing formats have off-the-shelf parsers in many languages, so youare not starting from the bottom. But with a brand new format based onGemtext, you would have to.
So we are not all sold on the idea of a Gemtext-based feed format.However, one positive characteristic such a format is that it would bebrowsable as a regular Gemtext page. And that got us thinking:
If regular Gemtext pages are easy to parse, can we just treat anyGemtext page as a feed? In fact, yes we can. You can poll plain Gemtextpages, not feed format files, and detect the links on the page that arenew. And we don't need a Gemtext feed format pattern, because thepattern of link lines beginning with "=
" is enough.
To get a feel for that, I did a proof of concept that you can try out:
=
https://github.com/kconner/gemini-subscription-cli Proof of Concept
This repository contains a Makefile and a shell script. The script takesa list of Gemini URLs to fetch, which are expected to be Gemtext pages.It filters them down to just the link lines. It compares the set of linklines with a previously-fetched set of link lines, and it identifies andemits those that are new. It saves the new total set as the next run'sprevious set for comparison.
If you want, you can clone the repo and then try it out.
Subscribe to some pages:
$ echo 'gemini://gemini.circumlunar.space:1965/servers/'
subscribed-urls$ echo 'gemini://tilde.team/~easeout/glog/'
subscribed-urls
Fetch all the links, since we don't have a prior set to compare to:
$ makefetched: gemini://gemini.circumlunar.space:1965/servers/ fetched: gemini://tilde.team/~easeout/glog/ wrote: new-links.gmi =
gemini://gus.guru/known-hosts Gemini hosts known to GUS =
gemini://gemini.conman.org =
gemini://zaibatsu.circumlunar.space =
gemini://carcosa.net …
Later, update again and identify what's new. (To test right away, youcan delete a few lines from cached-links.gmi.)
$ makefetched: gemini://gemini.circumlunar.space:1965/servers/fetched: gemini://tilde.team/~easeout/glog/wrote: new-links.gmi=
gemini://breadpunk.club=
2020-09-07-re-a-wordpress-confession.gmi 7 September 2020: Re: A Wordpress Confession
This proof of concept demonstrates that any Gemini page can already betreated like a feed. This means that, if you don't mind notparticipating in the broader internet feed reader ecosystem, and youdon't mind the occasional page redesign creating noise in subscriptionresults, you don't have to make a feed file at all. Syndication iszero-cost.
In hindsight, why does RSS exist? What is "Really Simple" about it?Well, it's simpler than HTML. If HTML was easy enough to parse, youcould just subscribe to web pages and not need feed files. But Gemtextis already easy to parse. We don't our experience on the web to misleadus into thinking a page, like your blog index page, is not already asubscribable list of links.
It's been pointed out this is not very different from Spacewalk, which(I think?) works by just polling Gemini pages and updating when theychange, as opposed to when their links change. Both of these are usefuland easy ways to subscribe to any Gemtext page.
Gemtext authors could feel like they are not burdened with creating afeed file if browsers, feed readers, and aggregators allowed subscribingto Gemtext pages directly. When as an author you understand that a feedfile is unnecessary, the pressure to create a feed file is lifted. Butfor that to happen, you have to see direct Gemtext subscription workingin the wild. One way that could work is for a browser to have a way totreat a bookmark like a feed subscription. I also think if CAPCOM wouldaccept Gemtext pages as a feed URL option, that would go a long way.