@@ 1,65 @@
+# Gemini Protocol
+
+> November 1, 2020
+
+=> gemini://gemini.circumlunar.space/
+
+Gemini is a lightweight internet protocol for something simpler than the web.
+Drew DeVault
+has been chattering about it quite a bit lately; I decided to put up a server.
+
+=> gemini://stma.is stma.is
+
+From Drew's blog:
+
+> Some people argue that what we should have is “the web, but less of it”, i.e.
+> a “sane” subset of web standards.
+> I don’t agree (for one, I don’t think there is a “sane” subset of those standards), but I’ll save that for another blog post.
+> Gemini is a new medium, and it’s different from the web.
+> Anyone who checking it out should be prepared for that and open to working within its constraints.
+> Limitations breed creativity!
+=> gemini://drewdevault.com/2020/11/01/What-is-Gemini-anyway.gmi
+
+I ...think I am one of "those people".
+I despise JavaScript, and I understand deeply the appeal of Gemini's simple standards.
+*However*, it's missing a few things.
+
+* Gemini links are always on a separate line, and there doesn't seem to be any way to link *within* a document.
+ Internal links are necessary for longform content from a user interface perspective.
+ Sure, you can put every paragraph on a new page (reminds me of GNU and RedHat documentation), but that drives me nuts.
+I could live with the "external links must be on a separate line" rule if we had internal links in-text — that's basically a footnote(1) — but breaking the links apart from the text doesn't even live up to the Mother of All Demos (2)
+vision.
+* Gemini doesn't have any way to express *emphasis*... Markdown has **two**.
+* Gemini code blocks ("preformatted text lines") must be blocks... nothing inline (and no syntax highlighting in the [clients](https://gemini.circumlunar.space/clients.html) I've tried, though I don't know why they couldn't).
+* Gemini lists must be unordered.
+ This list, by comparison, is ordered *by decreasing importance*, which is still fine with an unordered list but the numbers can be helpful sometimes.
+* Also, Gemini has no nested lists.
+ I appreciate that they won't go deeper than three levels of headings, and I think a similar limitation works here.
+ But I need nesting.
+* Gemini has no horizontal rules.
+
+All of these issues ignore the elephant in the room, which is that we might want to download (or even display) images, audio, video, virtual reality, or ...whatever they come up with next.
+I believe Gemini would be a more complete protocol if I could link to documents of that type for the user to do with what they pleased.
+I suppose this is possible using `https://` links now, but that means an extra client is involved.
+Probably a web browser.
+Not good.
+
+I do agree that Gemini makes it easier to build a *user agent* instead of a [vendor agent](https://drewdevault.com/2020/08/13/Web-browsers-need-to-stop.html).
+I think the Gemini writers do themselves a disservice when they [say this](https://gemini.circumlunar.space/docs/faq.html):
+
+> ### 1.4 Do you really think you can replace the web?
+>
+> Not for a minute!
+
+I think they could replace the web — or at least make a go at true hypermedia(2).
+If the web becomes a default medium for delivering network applications (and let's face it, it did, since Unix failed to appropriately abstract network computing(3)), why not go all the way and build the original idea of a document sharing/linking/reading system?!
+
+
+***************************************************************************
+
+1. Like this!
+Even a footnote puts the next document two clicks (and possibly two screen redraws) away from the link text instead of just one, but it's better than having no visual connection at all!
+
+2. https://www.youtube.com/playlist?list=PLCGFadV4FqU3DS0I_7yzGN2_S0QNqLzJC
+
+3. Someone please send me the source of this idea — I read it the other day and can't 1) get it out of my head, or 2) find where I read it!
@@ 1,61 @@
+# Gemini
+
+This is a gemini page.
+
+=> gemini://drewdevault.com Drew DeVault
+=> https://cmpwn.com/@sir/105127171878166117 Told me to do it
+=> gemini://drewdevault.com/gmnisrv.gmi And wrote the server.
+
+=> gemini.gmi It is what it is.
+
+Here's the procedure to install and run `gmnisrv` on Alpine Linux:
+
+```sh
+# apk add gcc libc-dev openssl openssl-dev scdoc
+$ git clone https://git.sr.ht/~sircmpwn/gmnisrv
+$ mkdir gmnisrv/build && cd gmnisrv/build
+$ ../configure --prefix=/usr
+$ make
+# make install
+```
+
+If you want to use OpenRC to manage the server, here's a working `/etc/init.d/gmnisrv`:
+
+```
+#!/sbin/openrc-run
+
+description="Gemini Server"
+
+pidfile=/run/gmnisrv.pid
+command_background=true
+command_user=gmnisrv
+command=/usr/bin/gmnisrv
+```
+
+It expects that there is a `gmnisrv` system user; this user will need to own the `/var/lib/gemini/` directory to write certs.
+
+```sh
+# adduser --system gmnisrv
+# mkdir -p /var/lib/gemini
+# chown gmnisrv /var/lib/gemini
+```
+
+At this point, you can start the service.
+
+```sh
+# rc-service gmnisrv start
+```
+
+To check the status:
+
+```sh
+# rc-service gmnisrv status
+```
+
+To run the service on boot:
+
+```sh
+# rc-update add gmnisrv
+```
+
+=> https://stma.is