Utente:Sinucep/Sandbox/Gemini (informatica)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Gemtext
Estensione.gmi, .gmni, .gemini
Tipo MIMEtext/gemini (non ufficiale)
Type code (Mac OS)TEXT
SviluppatoreSolderpunk et al.
Ultima versione0.14.3 (29/11/2020)
TipoMarkup language
Formato aperto?
Sito webgemini.circumlunar.space/docs/specification.gmi

Gemini è un protocollo a livello di applicazione per sistemi informativi ipertestuali distribuiti che fornisce l'accesso a documenti semplici, principalmente testuali nel "Gemini space". Il protocollo è stato ideato nel 2019[1] e progettato in modo collaborativo. Non è uno standard Internet ufficiale.

Il design è ispirato al protocollo Gopher ma non è pensto per sostituire questo o dell'HTTP, ma per coesistere con essi.[2][3]

La porta TCP utilizzata in modo predefinito è la numero 1965[4], un riferimento all'anno in cui fu effettuato il primo volo con equipaggio del programma spaziale Gemini. Gemini infatti deriva il suo nome dal programma spaziale statunitense. Nel mondo Gemini, l'equivalente di un sito web si chiama capsula, e l'universo delle pagine Gemini è stato battezzato Geminispace[1].

I contenuti Gemini usano un formato testuale apposito, con tipo MIME text/gemini[1]. Si tratta di una versione estremamente ridotta del formato Markdown, in cui i collegamenti possono essere inseriti solo su una riga a sé stante.

Caratteristiche[modifica | modifica wikitesto]

Le specifiche di Gemini definiscono sia il protocollo che un formato di file nativo (analogo a HTML per HTTP) noto come "gemtext". Il design è ispirato a Gopher, con alcune aggiunte moderne come l'uso obbligatorio di TLS per le connessioni e un formato ipertestuale come tipo di contenuto nativo.

Il design è volutamente non facilmente estensibile, al fine di preservare uno degli obiettivi di semplicità dichiarati dal progetto.[5]

Protocollo[modifica | modifica wikitesto]

Gemini è progettato nell'ambito della suite di protocolli Internet. Come HTTP(S), Gemini funziona come un protocollo di richiesta-risposta nel modello di elaborazione client-server. Un browser Gemini (analogo a un browser Web), ad esempio, può essere il client e un'applicazione in esecuzione su un computer che ospita un sito Gemini può essere il server. Il client invia un messaggio di richiesta Gemini al server e il server restituisce un messaggio di risposta. Gemini utilizza una connessione separata sullo stesso server per ogni richiesta di risorse.

Gemini impone l'uso di TLS con funzionalità relative alla privacy e consiglia fortemente la verifica della fiducia al primo utilizzo (TOFU),[6] garantendo così la privacy e la sicurezza dell'utente anche con una esplicita rinuncia alla complessità del Web[7][8].

Le transazioni del protocollo Gemini consistono in una singola coppia richiesta-risposta e il server chiude la connessione al termine. Una risposta positiva include il tipo MIME dell'oggetto richiesto ma nessun altro metadato e viene terminata dal server che chiude la sessione TLS (e la connessione TCP sottostante). Sia nella richiesta che nelle risposte, le righe terminano con CRLF (carriage return + avanzamento riga). Le risorse Gemini sono identificate e localizzate sulla rete da Uniform Resource Locator (URL), utilizzando lo schema URI gemini:// . Una richiesta Gemini consiste solo di tale URL, terminato da CRLF; l'intestazione di una risposta Gemini è costituita da un codice di stato a due cifre, uno spazio e un campo "meta", anch'esso terminato da CRLF. Se il server riesce a trovare il file richiesto, il campo "meta" è il tipo MIME del file restituito e dopo l'intestazione seguono i dati del file.

Esempio di sessione
client
gemini://esempio.com/
server
20 testo/gemelli
# Titolo di esempio
Benvenuti nella mia capsula Gemini.
* Esempio di elemento dell'elenco
=> gemini://link.to/another/resource Testo del collegamento

Formato Gemtext[modifica | modifica wikitesto]

Il formato gemtext è line oriented, ossia la fine della riga è considerata la fine dell'istruzione o dello statement. Offre costrutti per i titoli a tre livelli, per gli elenchi semplici, testo preformattato e righe che fungono da link. Come con l'ipertesto HTTP, gli URI sono codificati come collegamenti ipertestuali nei documenti gemtext, in modo da formare documenti ipertestuali interconnessi nel "web" Gemini, che gli utenti chiamano Geminispace .

Software[modifica | modifica wikitesto]

Amfora – Gemini client

Esistono varie implementazioni server, le cui liste sono mantenute online.[9][10][11]

A causa della semplicità del protocollo e del tipo di supporto fornito, sono stati implementati vari browser Gemini.[2][12] Il seguente elenco non esaustivo di clients evidenzia la loro diversità. Ulteriori elenchi sono disponibili online:[13][14]

Nome Piattaforma Tecnologia Scritto 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
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

Voci correlate[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ a b c (DE) Jo Bager, Minimalistisches Internet: Projekt Gemini als Retro-Web, su heise online - c't Magazin. URL consultato il 28 marzo 2021.
  2. ^ a b Project Gemini FAQ, su gemini.circumlunar.space. URL consultato il 26 giugno 2020 (archiviato dall'url originale il 22 giugno 2020).
  3. ^ (EN) Cameron Kaiser, A Gopher view of Gemini, su Old Vintage Computing Research, 5 novembre 2020. URL consultato il 13 novembre 2020.
  4. ^ (FR) Stéphane Bortzmeyer, Le protocole Gemini, revenir à du simple et sûr pour distribuer l'information en ligne ?, su bortzmeyer.org, 29 novembre 2020. URL consultato l'8 gennaio 2021.
  5. ^ Visiting another world [LWN.net], su lwn.net. URL consultato il 23 novembre 2021.
  6. ^ Project Gemini, su gemini.circumlunar.space. URL consultato il 23 novembre 2021.
  7. ^ (EN) Jake Edge, Visiting another world, in LWN.net, 10 febbraio 2021.
  8. ^ 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."
  9. ^ gemini://gemini.circumlunar.space/software
  10. ^ transjovian.org:1965, https://transjovian.org:1965/gemini/page/Servers.
  11. ^ github.com, https://github.com/kr1sp1n/awesome-gemini.
  12. ^ Seth Kenlon, Simplify your web experience with this internet protocol alternative, su Opensource.com, 6 ottobre 2020. URL consultato il 10 novembre 2020.
  13. ^ gemini://kwiecien.us/logarion/gemini-client-review.gmi
  14. ^ gemini://gemini.ctrl-c.club/~sario528/

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Internet: accedi alle voci di Wikipedia che trattano di internet