This list is necessarily incomplete, partly due to the complexity of modern HTTP and HTML, but it hits the high points. If you think there is something critical missing, please contact me by email.
Feature | Gopher | Gemini | WWW |
---|---|---|---|
Can transfer text-based documents | Yes | Yes | Yes |
Can transfer binary media | Yes | Yes | Yes |
Has a hypermedia document format | No [1] | Yes | Yes |
Hypermedia format can inline binary media | No | No [2] | Yes |
Protocol responses include error codes | No | Yes | Yes |
Protocol responses include content type | No | Yes | Yes |
Protocol responses include content length | No | No | Yes |
Supports connection re-use | No | No | Yes |
Requests and responses are extensible with headers | No | No | Yes |
Uses transport-layer encryption | No [3] | Required | Optional |
Uses URLs for links | No [4] | Yes | Yes |
Supports streaming | No | Yes [5] | Yes |
- [1] Gopher supports a text file format with links for defining submenus. It wasn’t intended to be used as a hypermedia document format, but it is somewhat usable as one.
- [2] Some Gemini clients support displaying images or audio/video files inline after their links, once the link is clicked or hovered over.
- [3] Some gopher clients and some gopher servers support wrapping the protocol in TLS. There is no standard for this, however.
- [4] It is possible (and conventional) to use URL formatted selectors in Gopher H-type menu items. This is not well-supported by all clients. Also, some clients will linkify URLs in text documents.
- [5] Gemini responses are not complete until the connection is closed with a TLS close_notify message. Clients are allowed to start processing a response before it is closed, allowing streaming of media. Gemini does not have an equivalent of HLS (HTTP Live Streaming), however, which means streams can’t be offered in multiple bitrates except with separate links, and seeking on streams is likely to be unreliable.