💾 Archived View for fkfd.me › ~fkfd › gemini_tldr.gmi captured on 2020-11-07 at 00:39:38. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2020-09-24)
-=-=-=-=-=-=-
For any internet protocol, you can either make it a few thousand words long, or make it 114M. Of course, we know this 114M wasn't there in the first place. W3C has tried very hard to standardize the web, without guarantee it would be simple. So, what we have now is a collaborative system where it's easier to introduce a standard than to deprecate one (remember Adobe Flash?). It's reassuring to know there isn't a central megacorp monopolizing the web, but this openness comes at a cost. It's when evangelical developers who can't program proper desktop apps abruptly choose to make a new web framework, a parasite on web browsers - one of the only things that are largely cross-platform. Because the work of portability has been handled by Mozilla, Google, etc, not by themselves, there is virtually no limitation regarding what you can do with it. If a handful of people suddenly like your "standard", all modern browsers will get to support it eventually.
Gemini is a young protocol that's slightly heavier than Gopher, but radically more lightweight than the Web. Its spec is 4.4k words long as of time of writing, which, excluding the appendix, is a 20-minute read if you skim past the microscopic details. Here is a TL;DR of the specs that's ~1k words long.
Before you proceed, there are a few fields of knowledge that you need to temporarily throw away while reading this post, plus a few you don't. Most of the former is HTTP-related.
- headers
- 3-digit status codes
- verbs, e.g. GET, POST
- cookies
1. Text lines: ezpz, just normal text. Authors and servers should not "hardwrap", i.e. limit column width to e.g. 80 chars; the client should wrap a long line containing the entire paragraph into a block.
2. Link lines: any non-preformatted line starting with `=>` is a link line. It should be followed by a URL, then optionally a link description. Like this:
=> gemini://fkfd.me/ fkfd.me geminispace
which is equivalent to this in HTML:
<a href="gemini://fkfd.me">fkfd.me geminispace</a>
Expect absolute and relative links, and ones that aren't even on gemini.
3. Preformatted lines: any line between two lines that read ````` (3 backticks) is a preformatted line. Just like markdown. Like this (prefixed with a space in order not to interfere with formatting):
``` Without preformatted lines, ASCII art wouldn't have been possible! ```
It should be rendered as monospace.
4. Heading lines: any non-preformatted line starting with 1-3 hashes is a heading line. Also, you know, sure, like markdown. Like this:
# h1 ## h2 ### h3 #### nope, not a heading ###interestingly, the whitespace is optional
5. Unordered list items: any non-preformatted line starting with an asterisk is an unordered list item, i.e. an item of a bullet list. Like this:
- you trust the cert the first time you visit a site, even if it's self-signed
- you remember it
- every time you access the site, it sends you this very cert, so you know everything's fine
- the client will warn the user if the server abruptly sent a different cert when its previous one hasn't expired yet: likely a MITM attack (but also likely the site admin just replaced their cert for some reason).
This eliminates the need for a CA, thus making TLS and gemini itself more accessible and widespread.
- on a site that asks for one, client generates and sends a cert (regular sites don't; such procedure must be manually approved by the user)
- the cert is sent along with all subsequent requests to this host
- server can identify this user now
- this is like cookies in practice, but very different in implementation
- one cert is limited to one domain
- one cert should not exist for longer than 24 hours; it's for one session only.
This is it; 4.4k words of gemini spec summarized & exemplified in ~1k words. Whether you're reading this on Gemini or the Web (or gopher), I encourage you to join this community of members who are seeking asylum from the debris of the modern web. Gemini is still in an early stage; loads of decisions to make, and lots of pitfalls that the web has fallen in to avoid. This concludes our journey around the gemini spec today; see you in low space orbit.
Oh, also, McRoss is an awesome GUI client.