Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 History  





2 Design  



2.1  Protocol  





2.2  Gemtext format  







3 Geminispace  





4 Software  





5 See also  





6 References  





7 External links  














Gemini (protocol)






Català
Deutsch
Español
Esperanto
Français
Lombard

Português
Русский
Suomi

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 




In other projects  



Wikiversity
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Gemini
Developed bySolderpunk et al.
IntroducedJune 2019 (2019-06)
Websitegeminiprotocol.net
Gemtext
Filename extension
.gmi, .gmni, .gemini
Internet media typetext/gemini (unofficial)
Type codeTEXT
Developed bySolderpunk et al.
Latest release

0.24.0
31 March 2024; 3 months ago (2024-03-31)

Type of formatMarkup language
Open format?Yes
Websitegeminiprotocol.net/docs/specification.gmi

Gemini is an application-layer internet communication protocol for accessing remote documents, similar to HTTP (Hypertext Transfer Protocol) and Gopher. It comes with a special document format, commonly referred to as "gemtext", which allows linking to other documents. Started by a pseudonymous person known as Solderpunk, the protocol is being finalized collaboratively and as of October 2022, has not been submitted to the IETF organization for standardization.

History

[edit]

The Gemini project was started in June 2019 by Solderpunk. Additional work has been done by an informal community of users. According to Solderpunk's FAQ, Gemini is not intended to replace Gopher or HTTP, but to co-exist with them.[1] Much of the development happened on the Gemini mailing list until the list disappeared at the end of 2021 due to a hardware issue.[2] The creation of the Usenet newsgroup comp.infosystems.gemini in October 2021 was the first new newsgroup in the Big Eight hierarchy in eight years.[3]

Design

[edit]

The Gemini specification defines both the Gemini protocol and a native file format for that protocol, analogous to HTML for HTTP, known as "gemtext". The design is inspired by Gopher, but with modernisation such as mandatory use of Transport Layer Security (TLS) for connections and a hypertext format as native content type.[4]

The design is deliberately not easily extensible, in order to meet a project goal of simplicity.[5]

Protocol

[edit]

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 server should listen on TCP port 1965. A Gemini browser, for example, may be the client and an application running on a computer hosting a Gemini site may be the server. The client sends a Gemini request message to the server, and the server sends back a response message. Gemini uses a separate connection to the same server for every resource request.[6]

Gemini mandates the use of TLS with privacy-related features and trust on first use (TOFU) verification being strongly suggested.[7]

Browsing Gemini through Amfora - cli client

Gemini resources are identified and located on the network by Uniform Resource Locators (URLs), using the URI scheme gemini://. A Gemini request consists only of such a URL, terminated by CRLF; the header of a Gemini response consists of a two-digit status code, a space, and a "meta" field, also terminated by CRLF. If the server is successful in finding the requested file, the "meta" field is the MIME type of the returned file and after the header follows the file data.

Example session
Client
gemini://example.com/
Server
20 text/gemini
# Example Title
Welcome to my Gemini capsule.
* Example list item
=> gemini://link.to/another/resource Link text

Gemtext format

[edit]

Gemtext format is line-oriented and the first three characters of a line determine its type. The syntax includes markup for headlines, flat list items, pre-formatted text, quotes and link lines. As with HTTP hypertext, URIs are encoded as hyperlinks to form interlinked hypertext documents in the Gemini "web", which users refer to as Geminispace.[1]

Geminispace

[edit]

"Geminispace" 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, including hyperlinks to other resources easily accessible to the user.[1]

As of July 2024, Geminispace consists of around 3900 online known Gemini appearances ("capsules") identified by crawling over 600,000 URIs.[8]

Software

[edit]
Amfora - Gemini client
AmiGemini - Gemini client
Gemini clients include:
Name Platform Client Type License Written in
Amfora BSD, Linux, macOS, Windows Terminal (TUI) GPL 3.0 Go
AmiGemini AmigaOS GUI (Intuition) MIT C, Intuition
ereandel Bourne shell Terminal (TUI) MIT Shell script
asuka Terminal (TUI) MIT Rust, ncurses
AV-98 Terminal (CLI) 2 Clause BSD Python
Bollux Terminal MIT Bash
Bombadillo Terminal GPL 3.0 Go
Buran Android Mobile App GPL 3.0 Kotlin
Castor GUI (GTK) MIT Rust, GTK
Castor9 Plan 9 GUI C
Deedum Android and iOS Mobile App GPL 3.0 Flutter, Dart
Diohsc Terminal (CLI) GPL 3.0 Haskell
dillo-gemini BSD, Linux, macOS Plugin (Dillo) FSFAP Shell
Elaho (gemini-ios) iOS Mobile App MPL 2.0 Swift
Elpher GUI (Emacs) GPL 3.0 Emacs Lisp
Eva GUI (GTK) MIT Rust, GTK
Fafi GUI MIT Racket
GemiNaut Windows GUI GPL 3.0 C# for Microsoft Windows
gemini.filter.dpi Plugin (Dillo) MIT Go
Geopard GUI (GTK) GPL 3.0 Rust, GTK
gmni Terminal (CLI) GPL 3.0 C
gplaces Linux Terminal (CLI) GPL 3.0 or later C
Jimmy macOS App MIT Swift
Kristall GUI (Qt) GPL 2.0 C++, Qt
Lagrange Windows, macOS, Linux GUI 2 Clause BSD C, SDL
Moonlander Linux GUI (GTK) MIT Rust, GTK
Offpunk Terminal (CLI) 2 Clause BSD Python
Rocketeer iOS, macOS App Swift
Rosy Crow Android Mobile App MIT C#, MAUI
Seren Android Mobile App Kotlin
Starfish elementary OS/Linux GUI GPL 3.0 Vala, GTK
Tinmop Terminal (TUI) or GUI GPL 3.0+ Common lisp
Telescope BSD, Linux, macOS Terminal (TUI) ISC C
Twin Peaks Windows GUI GPL 3.0 C#
VIRGIL99 TI-99 Terminal Assembly language

The Gemini software list covers client, server, libraries, and tools.[9]
Gemini-to-HTTP proxy server gateways such as Mozz.us can be used by web browsers lacking Gemini support.[10]

See also

[edit]

References

[edit]
  1. ^ a b c "Project Gemini FAQ". Archived from the original on 27 September 2023. Retrieved 27 September 2023.
  • ^ "Gemini Info Page". Archived from the original on 2021-10-20. Retrieved 2021-10-20.
  • ^ "Gemini Usenet Newsgroup". Archived from the original on 2021-10-26. Retrieved 2021-10-26.
  • ^ "Project Gemini Speculative Specification v0.16.1". gemini.circumlunar.space. 2023-03-23. 5 The text/gemini media type. Response bodies of type "text/gemini" are a kind of lightweight hypertext format, which takes inspiration from gophermaps and from Markdown.
  • ^ Edge, Jake (2021-02-10). "Visiting another world". lwn.net. Retrieved 2021-02-19.
  • ^ "Project Gemini Speculative Specification v0.16.1". gemini.circumlunar.space. 2023-03-23. 1 Overview. Connections are closed at the end of a single transaction and cannot be reused.
  • ^ "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.
  • ^ "Statistics on the Gemini space" Archived 2021-02-11 at the Wayback Machine. Proxied gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi
  • ^ "Gemini software".
  • ^ "About Mozz.us".
  • [edit]
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Gemini_(protocol)&oldid=1235869213"

    Categories: 
    Application layer protocols
    Internet protocols
    Network protocols
    Accessible information
    Hypertext
    Internet properties established in 2019
    Hidden categories: 
    Webarchive template wayback links
    Articles with short description
    Short description is different from Wikidata
    Articles containing potentially dated statements from October 2022
    All articles containing potentially dated statements
    Articles containing potentially dated statements from July 2024
     



    This page was last edited on 21 July 2024, at 17:14 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki