left:

Geminispace / Gemini Protocol

What is the Geminispace and the Gemini protocol?

left:

TOC

  • Introduction
  • Motivation
  • Protocol
    • Overview
    • Examples
  • Software
    • Client
    • Server
left:

Introduction

  • Introduced in 2019
  • Gemini is an application-layer internet communication protocol
    • Similarities to HTTP & Gopher
    • It should co-exist to them and not replace them
  • Focussing on:
    • simplicity
    • lightweight
    • security
left:

Motivation

Who doesn't know the struggle...

Advertising, Cookie banner, random pop-ups, auto-play music & video, Tracking, Privacy violations, long loading, newsletter subscriptions, Captchas, slow responses, too much JavaScript, Cookies, not mobile friendly, structureless, annoying site preloader, unreadability, [...]

left:

Motivation

What happened?
Features over Content!

"The more - the better!"

left:

Motivation

Solutions...
  • Protocol for serving lightweight hypertext
  • Being conservative & standardized but secure
  • Simplicity and finite scope are very intentional design
  • Focussing on content
Like a radically stripped down web stack!
left:

Protocol

Overview
  • Works as a request-response protocol
  • Run on tcp/1965 (Gemini mission 1965)
  • Enforces TLS encryption
  • URI-scheme: gemini://
  • Response header consists of:
    • 2 digit status code
    • A space
    • Meta field
left:

Protocol

Content - Overview
  • File structure similar to HTML
  • File formats: .gmi, .gmni, .gemini
  • Media type: text/gemini (unofficial)
  • Type code: TEXT
left:

Protocol

Gemtext - Syntax
  • Gemtext is a text format
  • Very limited set of features
  • Similar to Markdown
    • Links are in a special format
    • Links can be relative (foo.gmi) or absolute (gemini://gyptazy.ch)
left:

Protocol (Gemtext Syntax)

Headers:
# Big
## Smaller
### Smallest

Lists:
*

Quotes:
> Initial response

Links: 
=> gemini://gyptazy.ch Visit gyptazy.ch
left:

Protocol

Content - Example: index.gmi
  __ _ _   _ _ __ | |_ __ _ _____   _
 / _` | | | | '_ \| __/ _` |_  / | | |
| (_| | |_| | |_) | || (_| |/ /| |_| |
 \__, |\__, | .__/ \__\__,_/___|\__, |
 |___/ |___/|_|                 |___/
# Welcome
Welcome to my Gemini Capsule on gyptazy.ch!
[...]
## Links
=> ./contact/          ./contact            - Contact
=> ./motiviation/      ./motivation         - Why to run a Gemini capsule
left:

Protocol

Content - Static only?
  • Well, no!
  • Dynamic integrations via CGI
left:

Protocol

Client


gemini://gyptazy.ch/

left:

Protocol

Server
20 text/gemini
# Welcome
Welcome to the Gemini capsule on gyptazy.ch.

## Links
=> gemini://gyptazy.ch   Home Home
=> ./contact             Contact Contact
=> ./gpg                 GPG GPG
left:

Software

Overview
  • Supports all OS
    • Windows, Linux, BSD, Mac, Android, iPhone, Windows Mobile,...
  • Styles
    • GUI
    • CLI

There's a client for almost all OS in all languages!

left:

Software

Clients
Software OS Lang Mode
Amfora All Go Text (CLI)
Bollux All Bash Text (CLI)
Agregire All Electron GUI
Elaho iOS Swift GUI
Xenia Android Java GUI
left:

Software

Server
Software OS Lang Mode
gmid All C Simple and secure Gemini server.
gmnd All Python Support for CGI and indexing.
Hydepark All Rust Forum application for Gemini.
left:

Software

Misc
  • There are http/gemini proxies (comitium)
  • There are feed generator (gemgen)
  • There are HTML -> Gemini converters (geminize)
  • There are site generators (Gempress)
  • There is a search engine: gemini://geminispace.info
left:

Resources

Gemini
Presentation
left:

Thanks!




Web:                    https://gyptazy.ch
Gemini:             gemini://gyptazy.ch
Twitter:                                @gyptazy
Fediverse: @gyptazy@gyptazy.ch
Matrix:          @gyptazy:gyptazy.ch

left:

Credits

  • image(annyoing.png): Image from Flaticon.com
  • image(more.png): Image from Flaticon.com
  • image(gemini_logo.png): Image from Flaticon.com
  • image(toc.png): Image from Flaticon.com