Gemini Protocol

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. From his 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!

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.

  1. 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 footnote1 — but breaking the links apart from the text doesn’t even live up to the Mother of All Demos vision.
  2. Gemini doesn’t have any way to express emphasis… Markdown has two.
  3. Gemini code blocks (“preformatted text lines”) must be blocks… nothing inline (and no syntax highlighting in the clients I’ve tried, though I don’t know why they couldn’t).
  4. 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.
  5. 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. I think the Gemini writers do themselves a disservice when they say this:

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. If the web becomes a default medium for delivering network applications (and let’s face it, it will did, since Unix failed to appropriately abstract network computing2), 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. 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! ↩︎