Английская Википедия:Gemini (protocol)

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Short description Шаблон:Infobox protocol Шаблон:Infobox file format Шаблон:IPstack

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, has not been submitted to the IETF organization for standardization.

History

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

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

Gemini is designed within the framework of the Internet protocol suite and 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]

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

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

"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 Geminispace consists of around 2300 online known Gemini appearances ("capsules") identified by crawling over 490,000 URIs.[8]

Software

Файл:Screenshot of Amfora.png
Amfora - Gemini client
Файл:AmiGemini.png
AmiGemini - Gemini client
Gemini clients include:
Name Platform License Written in
Шаблон:Rh | Amfora Terminal (TUI) GPL 3.0 Go
Шаблон:Rh | AmiGemini GUI (Intuition) MIT C, Intuition
Шаблон:Rh | astro Terminal (TUI) MIT Shell script
Шаблон:Rh | asuka Terminal (TUI) MIT Rust, ncurses
Шаблон:Rh | AV-98 Terminal (CLI) 2 Clause BSD Python
Шаблон:Rh | Bollux Terminal MIT Bash
Шаблон:Rh | Bombadillo Terminal GPL 3.0 Go
Шаблон:Rh | Buran App (Android) GPL 3.0 Kotlin
Шаблон:Rh | Castor GUI (GTK) MIT Rust, GTK
Шаблон:Rh | Castor9 GUI (Plan 9) C
Шаблон:Rh | Deedum App (Android and iOS) GPL 3.0 Flutter, Dart
Шаблон:Rh | Diohsc Terminal (CLI) GPL 3.0 Haskell
Шаблон:Rh | dillo-gemini Plugin (Dillo) FSFAP Shell
Шаблон:Rh | Elaho (gemini-ios) App (iOS) MPL 2.0 Swift
Шаблон:Rh | Elpher GUI (Emacs) GPL 3.0 Emacs Lisp
Шаблон:Rh | Eva GUI (GTK) MIT Rust, GTK
Шаблон:Rh | Fafi GUI MIT Racket
Шаблон:Rh | GemiNaut GUI (Windows) GPL 3.0 C# for Microsoft Windows
Шаблон:Rh | gemini.filter.dpi Plugin (Dillo) MIT Go
Шаблон:Rh | Geopard GUI (GTK) GPL 3.0 Rust, GTK
Шаблон:Rh | gmni Terminal (CLI) GPL 3.0 C
Шаблон:Rh | gplaces Terminal (CLI) GPL 3.0 or later C
Шаблон:Rh | Jimmy App (macOS) MIT Swift
Шаблон:Rh | Kristall GUI (Qt) GPL 2.0 C++, Qt
Шаблон:Rh | Lagrange GUI (Windows, macOS, Linux) 2 Clause BSD C, SDL
Шаблон:Rh | Moonlander GUI (GTK) MIT Rust, GTK
Шаблон:Rh | Offpunk Terminal (CLI) 2 Clause BSD Python
Шаблон:Rh | Rocketeer App (iOS, macOS) Swift
Шаблон:Rh | Rosy Crow App (Android) MIT C#, MAUI
Шаблон:Rh | Seren App (Android) Kotlin
Шаблон:Rh | Starfish GUI (elementary OS/Linux) GPL 3.0 Vala, GTK
Шаблон:Rh | Tinmop Terminal (TUI) or GUI GPL 3.0+ Common lisp
Шаблон:Rh | Telescope Terminal (TUI) ISC C
Шаблон:Rh | Twin Peaks GUI (Windows) GPL 3.0 C#
Шаблон:Rh | VIRGIL99 Terminal (TI-99) 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

References

Шаблон:Reflist

External links

Шаблон:URI scheme

  1. 1,0 1,1 1,2 Ошибка цитирования Неверный тег <ref>; для сносок faq не указан текст
  2. Шаблон:Cite web
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. Шаблон:Cite web
  6. Шаблон:Cite web
  7. Шаблон:Cite web
  8. "Statistics on the Gemini space". Proxied gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi
  9. Шаблон:Cite web
  10. Шаблон:Cite web