Gemini это современная Интернет технология электронной библиотеки взаимосвязанных документов, в значительной степени ореинтированная на текст, приватность и экономию используемого трафика.
Как и в web, Gemini позволяет пользователям перемещаться по созданным другими людьми страницам и сайтам (называемые капсулами) при помощи гиперссылок.
В Марте 2019 года Solderpunk начал разработку Gemini изначально в виде длинных постов своём gopherhole под нетривиальным названием The Mare Tranquillitatis People’s Circumlunar Zaibatsu.
Тут уже можно проглядеть особенности его будущего развития: один порт для передачи данных, обязательное TLS-шифрование, лёгкий человекочитаемый язык разметки и введение в протокол типа передаваемого элемента.
В Июне 2019 года под авторством Сина Коннера вышел первый Gemini-сервер, названный в честь ракеты-носителя NASA для миссии Джемини-1, GLV-1.12556.
Сразу же после этого Solderpunk начал разработку клиентской части сервера: AV-98, названый также как меха из Patlabor. Название нового клиента было выбрано в противопоставление клиенту Gopher, мехи VF-1 из Macross. То и другое аниме показывали в начале 90 годах, когда Gopher был широко распространён.
Gemini по своей сути своей является переосмыслением Gopher, однако обладает рядом уникальных особенностей, некоторые из которых были вдохновлены из web.
Gemini для описания терминов схожих с теми, что уже есть в web или Gopher, но не совместимых между собой, определяет свои термины (столбцы в порядке происхождения слов):
| WWW | Gopher | Gemini |
|---|---|---|
| web | gopherspace | geminispace |
| website | gopherhole | capsule |
| blog | phlog | gemlog |
Помимо этого в энтузиасты Gemini называют себя как и других пользователей Geminaut, ровно как капсулы слово имеет связь с космическими исследованиями.
Gemini, как и web, поддерживает любой передаваемый тип файла, однако в отличии от последнего, их загрузку определяет пользователь, а не создатель капсулы.
Здесь нет возможности встроить в страницу файл так, чтобы пользователь не мог её не скачать, все файлы передаются исключительно через ссылки.
Gemini предоставляет больше контроля читателю нежели автору. Тут нет большой такой свободы для кастомизации страниц, делая их визуально схожими, сдерживая маркетинг.
Иными словами: здесь просто не представляется возможным большой красивый заголовок или замысловатый логотип, поэтому создатели страниц вынуждены делать упор на содержание, нежели обёртку.
Помимо этого, опыт чтения в Gemini представляет собой аналогичный режим чтения в веб-браузере, т.е. с исключёнными отвлекающими элементами: рекламой, картинками и фоновыми звуками. Такой режим (за который отвечает именно браузер, а не скрипт на сайте) устанавливает особое форматирование страницы и текста, максимально улучшая опыт для чтения.
Спецификации протокола и файла гипертекста Gemini со своего появления были переданы в общественное достояние (Через CC0), что позволяет его публикацию, редактирование, или даже использование в коммерческих целях без указания авторства.
Изначально единый документ, однако с Марта 2024 года данный файл был разделен.
Протокол Gemini спроектирован так, что после того как документ полностью будет загружен с сервера соединение обрывается, исключая возможность появления нежелательных элементов на странице спустя несколько минут после её открытия.
Gemini как и HTTP имеет код статуса запросов:
Использование TLS является обязательной частью безопасного подключения пользователей. На текущий момент в Gemini рекомендуется к использованию TLS 1.3, однако также поддерживается и TLS 1.2, являясь минимальной требуемой версией для создания защищённых подключений.
В Gemini также имеют быть прокси: они могут быть использованы для открытия файлов из других протоколов например Gopher, кеширования или сохранения настроек между устройствами (прокси в таком случае должен находится в цели последним).
В качестве основного передаваемого документа Gemini использует собственный гипертекст gemtext.
Формат gemtext был спроектирован с упрощённым синтаксисом, который позволяет легко его писать, читать и анализировать.
На текущий момент gemtext поддерживает 6 типов форматирования:
Gemini является перспективным аналогом Gopher, однако находясь в активной разработке имеет ряд недостатков, некоторые из них даже лежат в его основе.
Дальше я позволил себе перечислить ряд недостатков, которые я лично нашёл, но могу быть уверен, что этот список может стать сильно больше стоит лишь немного копнуть.
В отличии от протоколов-“старожителей”, Gemini выглядит не слишком надёжным из-за отсутствия чётких стандартов для протокола как для HTTP (RFC7230) или Gopher (RFC1436).
Помимо для gemtext пока-что отсутствует поддержка синтаксиса по умолчанию популярных в текстовых редакторах (но есть в vim!) или MIME в файловых менеджерах.
Gemtext по сравнению с например Markdown имеет слишком скудное форматирование.
Надеюсь, что в будущем gemtext обрастёт следующими типами текста:
Известной особенностью Gemini является отсутствие сообщения сервером о размере передаваемого файла, поэтому тяжело точно сказать передал ли сервер всю информацию или у него произошла какая-то ошибка и передача прервалась.
Помимо этого Gemini не поддерживается сжатие файлов или проверки контрольной суммы, поэтому данная проблема усугубляется вместе с увеличением размера файла.