Gemini (protocolo)
# Gemini (protocolo)

Gemini es un protocolo de comunicación en la capa de aplicación de Internet para acceder a documentos remotos, similar al Protocolo de Transferencia de Hipertexto y a Gopher. Está pensado como una tercera alternativa a esos protocolos. Viene con un formato de documento especial, comúnmente llamado «gemtext», que permite enlazar con otros documentos. Iniciado por alguien conocido como Solderpunk, el protocolo está siendo finalizado de forma colaborativa y actualmente no ha sido presentado al IETF para su estandarización.

## Diseño

La especificación Gemini define tanto el protocolo Gemini como un formato de archivo nativo para ese protocolo (análogo a HTML para HTTP o a texto plano para Gopher), conocido como «gemtext». El diseño se inspira en Gopher, con ciertas adiciones modernas como el uso obligatorio de la seguridad de la capa de transporte (TLS) para las conexiones y un formato de hipertexto como tipo de contenido nativo.

El diseño es deliberadamente poco extensible, para preservar uno de los objetivos declarados del proyecto: la simplicidad.

## Software

### Clientes de Gemini

Debido a la simplicidad del protocolo y del tipo de medio servido, se han implementado varios navegadores Gemini. La siguiente lista no exhaustiva de clientes pone de manifiesto su diversidad. Hay más listas disponibles en línea.

Los clientes de línea de comandos son bastante populares debido a que el marcado simple de Gemini es fácil de mostrar en un formato de sólo texto, mientras que puede ser bastante limitante con el contenido web.

| Nombre | Plataforma | Lenguaje de programación |
| - | - | - |
| Amfora | Terminal (TUI) | Go |
| AmiGemini | GUI (Intuition) | C, Intuition |
| Ariane | App (Android) | Kotlin |
| asuka | Terminal (TUI) | Rust, ncurses |
| AV-98 | Terminal (CLI) | Python |
| Bollux | Terminal | Bash |
| Bombadillo | Terminal | Go |
| Buran | App (Android) | Kotlin |
| Castor | GUI (GTK) | Rust, GTK3 |
| Castor9 | GUI (Plan 9) | C |
| Deedum | App (Android and iOS) | Flutter, Dart |
| Elaho (gemini-ios) | App (iOS) | Swift |
| Elpher | GUI (Emacs) | Emacs |
| Fafi | GUI | Racket |
| GemiNaut | GUI (Windows) | C# for Microsoft Windows |
| Geopard | GUI (GTK) | Rust, GTK4 |
| gmni | Terminal (CLI) | C |
| Kristall | GUI (Qt) | C++, Qt |
| Lagrange | GUI | C, SDL |
| Moonlander | GUI (GTK) | Rust, GTK3 |
| Rocketeer | App (iOS, MacOS) | Swift |

Como alternativa a los clientes nativos de Gemini, se pueden utilizar pasarelas Gemini-a-HTTP con los navegadores web más comunes que no soportan el protocolo Gemini. Algunos servidores proxy conocidos son el portal Mozz.us, Vulpes Proxy y ondollo.

### Software de servidor Gemini

Existen varias implementaciones de servidores, cuyas listas se mantienen en línea.

