Gemini (protocol)

  (Redirected from Gemini space)

Gemini denotes the Gemini protocol and the system of hypertext documents accessed via the protocol.

Gemini protocol
Developed bySolderpunk
IntroducedJune 2019 (2019-06)
Websitegemini.circumlunar.space
Gemtext format
Filename extension
.gmi
Internet media type
text/gemini
Type codeTEXT
Developed bySolderpunk
Latest release
0.14.3
(29 November 2020; 8 months ago (2020-11-29))
Type of formatMarkup language
Open format?Yes
Websitegemini.circumlunar.space

Gemini protocolEdit

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)[1] verification being strongly suggested.[2] It is not intended to replace Gopher or HTTP, but to co-exist with them.[3]

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.[4]

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 resourcesEdit

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.[5]

Example sessionEdit

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 spaceEdit

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.[3]

CommunityEdit

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.[6]

Gemini clientsEdit

 
Amfora – Gemini client

Due to the simplicity of the protocol and served media type, various Gemini browsers were implemented.[3][7] The following non-exhaustive list of clients highlights their diversity. Further lists are available online:[8][9]

Name Platform Technology
Amfora Terminal (TUI) Go
Ariane App (Android) Kotlin
asuka Terminal (TUI) Rust, ncurses
AV-98 Terminal (CLI) Python
Bollux[10] Terminal Bash
Bombadillo Terminal Go
Castor GUI (GTK) Rust, GTK
Deedum App (Android and iOS) Flutter, Dart
Elaho (gemini-ios)[11] App (iOS) Swift
Elpher GUI (Emacs) Emacs
Fafi GUI Racket
GemiNaut GUI (Windows) C# for Microsoft Windows
gmni Terminal (CLI) C
Kristall GUI (Qt) C++, Qt
Lagrange GUI C, SDL
Moonlander[12] GUI (GTK) Rust, GTK
Rocketeer App (iOS, MacOS)Testflight[13] 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,[14] Vulpes Proxy, [15] and ondollo.[16]

Various server implementations exist; lists thereof are maintained online.[17][18][19]

Size of Gemini spaceEdit

As of March 2021, Gemini space consists of around 900 known Gemini appearances ("capsules") identified by crawling over 230,000 URIs.[20]

A Gemini search engine irregularily harvests more than 200,000 URIs, publishing some historic data (see graph).[21]

Size of Gemini space over time

At FOSDEM 2021, a talk[22] about Gemini was well received.[23]

CritiqueEdit

It has been regarded as a positive thing that people are thinking about alternatives to the "increasingly out-of-control Web".[24][self-published source?] Gemini is weird, small, and different; it is driven by the wish "that it could not easily be extended."[25] [non-primary source needed] "[U]ltimately the geminiverse is lovely because it is underpopulated, slower-paced, and literate."[26][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."[27][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.[28]

As Gemini strictly separates the responsibility of content and presentation, authors have little control in how their content is presented.[29][self-published source?]

Gemini offers good accessibility.[30][31][self-published source?]

A discussion[32] 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,[33] 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.

See alsoEdit

ReferencesEdit

  1. ^ 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."
  2. ^ "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.
  3. ^ a b c "Project Gemini FAQ". Archived from the original on 22 June 2020. Retrieved 26 June 2020.
  4. ^ "Lagrange". Retrieved November 15, 2020.
  5. ^ Sangeelee, Kevin (June 25, 2020). "Gemini Protocol & Markup". www.susa.net. Retrieved November 10, 2020.
  6. ^ "The Gemini 2020 Archive by subject". See [ANN] posts.
  7. ^ Kenlon, Seth (October 6, 2020). "Simplify your web experience with this internet protocol alternative". Opensource.com. Retrieved November 10, 2020.
  8. ^ gemini://kwiecien.us/gemlog/gemini-client-review.gmi
  9. ^ gemini://gemini.ctrl-c.club/~sario528/projects/clientlist.gmi
  10. ^ https://tildegit.org/acdw/bollux
  11. ^ https://github.com/pitr/gemini-ios
  12. ^ https://git.sr.ht/~admicos/moonlander
  13. ^ https://shadowfacts.net/2020/ui-framework-dilemma/
  14. ^ "Gemini Portal". portal.mozz.us.
  15. ^ "gemini.circumlunar.space - Gemini proxy". proxy.vulpes.one.
  16. ^ https://gem.ondollo.com/
  17. ^ gemini://gemini.circumlunar.space/software
  18. ^ "Servers".
  19. ^ "kr1sp1n/awesome-gemini". December 19, 2020 – via GitHub.
  20. ^ "Statistics on the Gemini space". Proxied gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi
  21. ^ "GUS - Gemini Universal Search". Proxied gemini://gus.guru/statistics
  22. ^ 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
  23. ^ https://chat.fosdem.org/#/room/#retro:fosdem.org
  24. ^ Kaiser, Cameron (November 5, 2020). "A Gopher view of Gemini". Old Vintage Computing Research. Retrieved November 13, 2020.
  25. ^ https://communitywiki.org/wiki/Gemini
  26. ^ https://maya.land/monologues/2021/01/11/the-tragedy-of-gemini.html
  27. ^ Len Falken (2021-01-23). "Perceived relations between Gopher, Gemini, and HTTP". Retrieved 2021-01-24.
  28. ^ Jake Edge (2021-02-10). "Visiting another world". lwn.net. Retrieved 2021-02-19.
  29. ^ DeVault, Drew (November 1, 2020). "What is this Gemini thing anyway, and why am I excited about it?". Retrieved December 3, 2020.
  30. ^ https://www.applevis.com/apps/ios/utilities/elaho
  31. ^ "Promoting Gemini, is anyone working on outreach?". Gemini can be a great, simple, content-rich place for blind people.
  32. ^ "Curl: [PATCH] New protocol: gemini". curl.se (Mailing list).
  33. ^ "Curl: Re: [PATCH] New protocol: gemini". curl.se (Mailing list).

External linksEdit