Gemini denotes the Gemini protocol and the system of hypertext documents accessed via the protocol.
|Internet media type|
(29 November 2020 )
|Type of format||Markup language|
The Gemini protocol is an application layer protocol for distributed hypertext information systems that provides access to simple, primarily textual documents in Gemini space. This is done with contemporary technologies such as TLS, thereby improving privacy and user agency relative to the Web. Servers run by default on port 1965. The protocol is being designed collaboratively and is not currently being standardized as an internet standard.
The design is inspired by the Gopher protocol, but mandates the use of Transport Layer Security with privacy-related features and trust on first use (TOFU) verification being strongly suggested. It is not intended to replace Gopher or HTTP, but to co-exist with them.
Gemini is designed within the framework of the Internet protocol suite. Like HTTP(S), Gemini functions as a request–response protocol in the client–server computing model. A Gemini browser (like an web browser), for example, may be the client and an application running on a computer hosting a Gemini site may be the server. The client submits a Gemini request message to the server.
Gemini resources are identified and located on the network by Uniform Resource Locators (URLs), using the URI scheme gemini:// which is analogous to https for the HTTPS web. There exists no insecure analog within Gemini to the original http scheme. As with HTTP hypertext, URIs are encoded as hyperlinks in gem-text documents, so as to form interlinked hypertext documents in the Gemini "web", which users refer to as Gemini space.
A Gemini request is only a URL, and the current draft specifications call for this request format to not be extensible, in order to preserve one of the project's stated goals of simplicity, and to thus differentiate the forward path for Gemini vs HTTP. In a conscious design choice analogous to the original HTTP/0.9, Gemini uses a separate connection to the same server for every resource request. This design, for simplicity and user control, does not allow for more data to be requested or supplied by the server without further explicit requests from the client. Although the cost of this is more latency in the establishment of TCP connections, the intent of Gemini is to provide a web of simpler documents (e.g. with regard to embedded images), which should load quickly over modern networks.
Gemini resources such as text of the media type "text/gemini" ("gemtext") or other content are provided by Gemini server software to clients requesting the resource residing at the queried URL. The server response contains a completion status and the requested content if available. Text in the gemtext format is line-oriented which simplifies rendering; it offers constructs for headlines (three levels), flat list items, pre-formatted text, and link lines – no inline emphasis.
Gemini protocol transactions consist of a single request and response per TCP session. A successful response includes the MIME type of the requested object but no other metadata. After responding, the server terminates the connection. Both requests and responses use lines terminated by CRLF (carriage return + line feed).
C: gemini://example.com/ S: 20 text/gemini S: # Example Title S: Welcome to my Gemini capsule. S: * Example list item S: => gemini://link.to/another/resource Link text
Gemini space denotes the whole of the public resources that are published on the Internet by the Gemini community via the Gemini protocol. Thus, Gemini spans an alternative communication web, with hypertext documents that include hyperlinks to other resources that the user can easily access, similar to the secure version of the Hypertext Transfer Protocol (HTTPS), but with a focus on simplified information sharing, both in respect to creation and reading of Gemini content.
The Gemini project was started in June 2019 by Solderpunk. Additional work has been done by an informal community of users. The Gemini homepage can be found at gemini://gemini.circumlunar.space. To access this URL a Gemini browser (client) is needed. The community maintains a variety of such clients for text-based, graphical, and mobile platforms. The Gemini mailing list contains multiple announcements of new clients.
Due to the simplicity of the protocol and served media type, various Gemini browsers were implemented. The following non-exhaustive list of clients highlights their diversity. Further lists are available online:
|asuka||Terminal (TUI)||Rust, ncurses|
|Castor||GUI (GTK)||Rust, GTK|
|Deedum||App (Android and iOS)||Flutter, Dart|
|Elaho (gemini-ios)||App (iOS)||Swift|
|GemiNaut||GUI (Windows)||C# for Microsoft Windows|
|Kristall||GUI (Qt)||C++, Qt|
|Moonlander||GUI (GTK)||Rust, GTK|
|Rocketeer||App (iOS, MacOS)Testflight||Swift|
Alternatively to native Gemini clients, Gemini-to-HTTP gateways can be used with common web browsers not supporting the Gemini protocol. Known such proxy servers are the Mozz.us portal, Vulpes Proxy,  and ondollo.
Size of Gemini spaceEdit
A Gemini search engine irregularily harvests more than 200,000 URIs, publishing some historic data (see graph).
It has been regarded as a positive thing that people are thinking about alternatives to the "increasingly out-of-control Web".[self-published source?] Gemini is weird, small, and different; it is driven by the wish "that it could not easily be extended." [non-primary source needed] "[U]ltimately the geminiverse is lovely because it is underpopulated, slower-paced, and literate."[self-published source?] As some passages of documents on Gemini may sound like a manifesto, Gemini space might be "off-putting to those who want to explore a technology."[self-published source?] A "tendency toward neo-Luddism may cause one to lean toward Gemini. None of that is meant to be pejorative, as it can certainly be self-applied; in truth, Gemini seems like something rather fun to mess with when time permits", concludes J. Edge in LWN.net.
A discussion of adding the Gemini protocol to curl mentioned the downside of closing the TLS connection with each request. The non-existence of a certificate chain was seen as problematic, although Gemini's security model is explicitly based on Trust On First Use rather than the Certificate Authority/Web of Trust approach commonly used with SSL/TLS.
- ew0k (2020-12-06). gemini://tilde.team/~ew0k/posts/certificate-security.gmi. Retrieved 2020-12-08. "Most gemini browsers will make a fair attempt at validating the certificate: first check if the Common Name or Subject Alternative Names match the requested hostname, then check the not-valid-before and not-valid-after dates, then check if we've visited this host before and if the cert provided now matches the cert provided last time."
- "Project Gemini Speculative Specification". gemini.circumlunar.space. 2020-11-29. Archived from the original on 2021-05-12. Retrieved 2021-06-25.
4.2 Server certificate validation. Clients can validate TLS connections however they like (including not at all) but the strongly RECOMMENDED approach is to implement a lightweight "TOFU" certificate-pinning system which treats self-signed certificates as first- class citizens.
- "Project Gemini FAQ". Archived from the original on 22 June 2020. Retrieved 26 June 2020.
- "Lagrange". Retrieved November 15, 2020.
- Sangeelee, Kevin (June 25, 2020). "Gemini Protocol & Markup". www.susa.net. Retrieved November 10, 2020.
- "The Gemini 2020 Archive by subject". See [ANN] posts.
- Kenlon, Seth (October 6, 2020). "Simplify your web experience with this internet protocol alternative". Opensource.com. Retrieved November 10, 2020.
- "Gemini Portal". portal.mozz.us.
- "gemini.circumlunar.space - Gemini proxy". proxy.vulpes.one.
- "kr1sp1n/awesome-gemini". December 19, 2020 – via GitHub.
- "Statistics on the Gemini space". Proxied gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi
- "GUS - Gemini Universal Search". Proxied gemini://gus.guru/statistics
- Stéphane Bortzmeyer (2021-02-07). "Gemini, a modern protocol that looks retro". FOSDEM 2021.
Back to the 1990s with a protocol and format to distribute real content, without tracking and visual effects
- Kaiser, Cameron (November 5, 2020). "A Gopher view of Gemini". Old Vintage Computing Research. Retrieved November 13, 2020.
- Len Falken (2021-01-23). "Perceived relations between Gopher, Gemini, and HTTP". Retrieved 2021-01-24.
- Jake Edge (2021-02-10). "Visiting another world". lwn.net. Retrieved 2021-02-19.
- DeVault, Drew (November 1, 2020). "What is this Gemini thing anyway, and why am I excited about it?". Retrieved December 3, 2020.
- "Promoting Gemini, is anyone working on outreach?".
Gemini can be a great, simple, content-rich place for blind people.
- "Curl: [PATCH] New protocol: gemini". curl.se (Mailing list).
- "Curl: Re: [PATCH] New protocol: gemini". curl.se (Mailing list).
- Gemini Protocol Specification
- on YouTube
- "Awesome" list of Gemini-related software
- Kristall, Amfora and Bollux - a look at three gemini browsers Video by Chris Were on ShareTUBE, a PeerTube Fediverse Server
- FOSDEM 2021 Talk on Gemini
- Paywalled article in German magazine c't
- Gopher, Gemini, and the rise of the small Internet: Beyond the Web. Paywalled article in Linux Magazine