Gemini orbit/webring software.
Go to file
ZinRicky f70802a28c Correction in README to avoid KaTeX error 2023-03-04 11:41:59 +01:00
.gitignore Initial code commit 2020-11-15 03:38:24 +00:00
LICENSE Add LICENSE 2021-10-06 23:29:46 +00:00
README.md Correction in README to avoid KaTeX error 2023-03-04 11:41:59 +01:00
capsules_to_ignore.txt Update publically available copies of Zenit and reindexer 2021-10-06 23:28:28 +00:00
config.py Detect when multiple domains point to the same console 2021-07-02 02:28:58 +00:00
gemini.py Initial code commit 2020-11-15 03:38:24 +00:00
index.gmi Update index.gmi 2021-07-02 02:36:09 +00:00
molniya.py Automatically retry index with trailing slash 2020-11-18 00:25:17 +00:00
next.cgi Initial code commit 2020-11-15 03:38:24 +00:00
prev.cgi Well, this is awkward... 2020-11-16 18:00:08 +00:00
rand.cgi Well, this is awkward... 2020-11-16 18:00:08 +00:00
vcert.py Verify certs, and prevent link items with no first space from crashing Zenit 2021-07-02 02:32:19 +00:00
zenit-reindexer.py Update publically available copies of Zenit and reindexer 2021-10-06 23:28:28 +00:00
zenit.py Update publically available copies of Zenit and reindexer 2021-10-06 23:28:28 +00:00

README.md

molniya - Gemini orbit software

An orbit is like a webring but for gemini. This code was originally written to service LEO, the first (to my knowledge) orbit ever made.

A Molniya orbit is a type of satellite orbit designed to provide communications and remote sensing coverage over high latitudes (thanks Wikipedia). It was invented by the Russians for their spy satellites. I feel like it's a fitting name.

How to use Molniya

In order to use Molniya, do the following:

  1. Clone this repository into a place on your Gemini root directory. (If you're using a userdir for this, that's fine too.)

  2. Modify config.py. Namely, update MAIN_PAGE to be the link to the index.gmi file, and update REQUIRED_LINKS to be the links to next.cgi, prev.cgi, and rand.cgi, wherever they are accessible via Gemini. BACKLINKS and determine_capsule shouldn't need to be changed (unless GUS is down or you want to change how Zenit decides what makes up a capsule.

  3. Modify index.gmi to link to your files instead of mine. Also, update the email to an email people can reach you at if they need you to manually add/remove them from your orbit.

  4. Get people to link to your main page and one of next.cgi, prev.cgi, and rand.cgi.

  5. Set a cronjob to run Zenit every now and again. (If I knew how often GUS indexed, I'd give a specific frequency, but I don't, so I won't. Currently about weekly, shouldn't be more than daily, so I'd set a cronjob to run every week or so. Remember you can always manually run Zenit. See #1.)

What is the orbit.json file?

The orbit.json file contains all of the URLs in the orbit. It's how Molniya and Zenit know what URLs are there, and in what order.

You keep mentioning Zenit. What is it?

Zenit is the Molniya indexer. It uses GUS's backlinks feature to get a list of pages that link to the orbit, and then checks them for having a link to allow people to continue to traverse the orbit.

Of course you can! Just make sure to keep orbit.json valid JSON, or it'll break the Molniya library and the entire orbit will break.

You don't even need Zenit for a private orbit; just manually add the URLs of your friends' pages to orbit.json and it'll Just Work(tm).

Because Gemini lacks referrers (a good choice), there's no way to tell where a client came from just by studying the request. As such, it needs some way of indicating where in the orbit the client is.

rand.cgi lacks this requirement because it just gets a random page anyways. That being said, it's best if the client also puts their URL in the rand.cgi link, just so that users selecting the random link option aren't sent back to the very site they just came from.

Why does Molniya abuse redirects to send the user on to the next page? Why not have a landing page?

Because I don't feel like implementing a landing page to just have the user click off of it. The redirect should replace the orbit link in the client's history, so the user shouldn't be adversely affected by this.