Jump to content

Gemini (protocol): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
B k (talk | contribs)
Tighten.
B k (talk | contribs)
Newsgroup header is uninformative with regards to the protocol.
Line 85: Line 85:
== Development ==
== Development ==
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.<ref name="faq" /> Much of the development happened on the Gemini mailing list until the list disappeared end of 2021 due to a hardware issue.<ref>{{Cite web|url-status=dead|url=https://lists.orbitalfox.eu/listinfo/gemini|title=Gemini Info Page|archive-url=https://web.archive.org/web/20211020132800/https://lists.orbitalfox.eu/listinfo/gemini|archive-date=2021-10-20|access-date=2021-10-20}}</ref> The creation of the [[Usenet]] newsgroup ''comp.infosystems.gemini'' in October 2021 was the first new newsgroup in the [[Big 8 (Usenet)|Big Eight]] hierarchy in eight years.<ref>{{Cite web|url=https://lists.orbitalfox.eu/archives/gemini/2021/007388.html|title=Gemini Usenet Newsgroup|archive-url=https://web.archive.org/web/20211026220037/https://lists.orbitalfox.eu/archives/gemini/2021/007388.html#%3C704705533.350997.1635162832645@ichabod.co-bxl%3E|archive-date=2021-10-26|url-status=dead|access-date=2021-10-26}}</ref>
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.<ref name="faq" /> Much of the development happened on the Gemini mailing list until the list disappeared end of 2021 due to a hardware issue.<ref>{{Cite web|url-status=dead|url=https://lists.orbitalfox.eu/listinfo/gemini|title=Gemini Info Page|archive-url=https://web.archive.org/web/20211020132800/https://lists.orbitalfox.eu/listinfo/gemini|archive-date=2021-10-20|access-date=2021-10-20}}</ref> The creation of the [[Usenet]] newsgroup ''comp.infosystems.gemini'' in October 2021 was the first new newsgroup in the [[Big 8 (Usenet)|Big Eight]] hierarchy in eight years.<ref>{{Cite web|url=https://lists.orbitalfox.eu/archives/gemini/2021/007388.html|title=Gemini Usenet Newsgroup|archive-url=https://web.archive.org/web/20211026220037/https://lists.orbitalfox.eu/archives/gemini/2021/007388.html#%3C704705533.350997.1635162832645@ichabod.co-bxl%3E|archive-date=2021-10-26|url-status=dead|access-date=2021-10-26}}</ref>

{{Quote box
| quote = This newsgroup covers the Gemini information space served via the Gemini internet protocol, related concepts and tools created by its community.
Gemini is an internet protocol to primarily serve human readable content. Served content is not limited to text. Transfer is encrypted for privacy.

Most content served by Gemini is written in Gemtext, a primitive markup language that contains a limited set of line types to semantically structure text and link to other resources. Although the protocol is content type agnostic, Gemtext is prevalent in the known information space. As Gemtext can be read without the need of complex clients (such as XHTML browsers) the published information space offers good accessibility. The Gemini protocol and Gemtext content type are not to be extended per definition and community consent.
| source = ftp://ftp.isc.org/pub/usenet/control/comp/comp.infosystems.gemini.gz
}}



== Software ==
== Software ==

Revision as of 14:30, 13 June 2022

Gemini
Developed bySolderpunk et al.
IntroducedJune 2019 (2019-06)
Websitegemini.circumlunar.space
Gemtext
Filename extension
.gmi, .gmni, .gemini
Internet media typetext/gemini (unofficial)
Type codeTEXT
Developed bySolderpunk et al.
Latest release
0.16.1
30 January 2022; 2 years ago (2022-01-30)
Type of formatMarkup language
Open format?Yes
Websitegemini.circumlunar.space/docs/specification.gmi

Gemini is an application-layer internet communication protocol for accessing remote documents, similarly to the Hypertext Transfer Protocol (HTTP) and Gopher. It is intended as a third alternative to those protocols. It comes with a special document format, commonly called "gemtext", that allows linking to other documents. Started by an anonymous person known as Solderpunk, the protocol is now being finalized collaboratively and has currently not been submitted to the IETF organization for standardization.

Design

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

The design is deliberately not easily extensible, in order to preserve one of the project's stated goals of simplicity.[1]

Protocol

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 (analogous to a 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 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.

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

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

Text in the gemtext format is line-oriented which simplifies parsing and rendering. Notably, the first three characters of a line suffice to determine its type. Gemtext offers markup for headlines (three levels), flat list items, pre-formatted text, quotes, and link lines – no inline emphasis. As with HTTP hypertext, URIs are encoded as hyperlinks in gemtext documents, so as to form interlinked hypertext documents in the Gemini "web", which users refer to as Geminispace.

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 that include hyperlinks to other resources that the user can easily access.[3]

As of September 2021, Geminispace consists of around 1200 online known Gemini appearances ("capsules") identified by crawling over 270,000 URIs.[4]

Development

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.[3] Much of the development happened on the Gemini mailing list until the list disappeared end of 2021 due to a hardware issue.[5] 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.[6]

Software

Gemini clients

Amfora – Gemini client
AmiGemini – Gemini client

Due to the simplicity of the protocol and served media type, various Gemini browsers have been implemented.[3][7] Command line clients are fairly popular due to Gemini's simple markup being easy to display in a text only format. The following is a non-exhaustive list of clients.

Name Platform License Written in
Amfora Terminal (TUI) GPL 3.0 Go
AmiGemini GUI (Intuition) MIT C, Intuition
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 App (Android) GPL 3.0 Kotlin
Castor GUI (GTK) MIT Rust, GTK
Castor9 GUI (Plan 9) C
Deedum App (Android and iOS) GPL 3.0 Flutter, Dart
Elaho (gemini-ios) App (iOS) MPL 2.0 Swift
Elpher GUI (Emacs) GPL 3.0 Emacs
Fafi GUI MIT Racket
GemiNaut GUI (Windows) GPL 3.0 C# for Microsoft Windows
gmni Terminal (CLI) GPL 3.0 C
Kristall GUI (Qt) GPL 2.0 C++, Qt
Lagrange GUI 2 Clause BSD C, SDL
Moonlander GUI (GTK) MIT Rust, GTK
Offpunk Terminal (CLI) 2 Clause BSD Python
Rocketeer App (iOS, MacOS) Swift
Seren App (Android) Kotlin
Starfish GUI (elementary OS/Linux) GPL 3.0 Vala, GTK
Twin Peaks GUI (Windows) GPL 3.0 C#
VIRGIL99 Terminal (TI-99) Assembly language
Jimmy App (MacOS) MIT Swift
gplaces Terminal (CLI) GPL 3.0 or later C

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.

Gemini server software

Various server implementations exist; lists thereof are maintained online.

See also

References

  1. ^ Edge, Jake (2021-02-10). "Visiting another world". lwn.net. Retrieved 2021-02-19.
  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. ^ "Statistics on the Gemini space". Proxied gemini://gemini.bortzmeyer.org/software/lupa/stats.gmi
  5. ^ "Gemini Info Page". Archived from the original on 2021-10-20. Retrieved 2021-10-20.
  6. ^ "Gemini Usenet Newsgroup". Archived from the original on 2021-10-26. Retrieved 2021-10-26.
  7. ^ Kenlon, Seth (October 6, 2020). "Simplify your web experience with this internet protocol alternative". Opensource.com. Retrieved November 10, 2020.

External links