LINUX.ORG.RU

Дрю Деволт: да что такое это ваше Gemini и почему я так в восторге от него? [перевод]

 , , , ,


0

2

Оригинал: https://drewdevault.com/2020/11/01/What-is-Gemini-anyway.html

Я в своём блоге писал о некоторых специфичных вещах, связанных с Gemini, если взглянуть на последние два месяца или около того. Но так до сих пор и не написал более широкое введение в этот протокол: о том, что я делаю с помощью него и почему вы должны быть восхищены им так же, как и я. Давайте сделаем это сегодня!

Gemini - сетевой протокол для обмена гипертекстовыми документами. «Гипертекстовый» - в общем смысле этого слова, а не в отношении HTML («HyperText Markup Language»), который понимают веб-браузеры. Это простой сетевой протокол, который позволяет клиентам запрашивать гипертекстовые документы (в собственном формате, который называется gemtext). В некотором смысле, это эволюция протокола Gopher, но более модернизированная и упрощённая.

Gemini очень прост. Протокол использует TLS для установления шифрованного соединения (чаще используя самоподписанные сертификаты и Trust on first use (TOFU), чем центры сертификации). И он использует очень простой обмен: клиент отсылает URL того, что он хочет получить, завершая запрос символом новой строки. Сервер отвечает информационной строкой, которая содержит числовой код статуса и некоторую дополнительную информацию (такую как MIME-тип документа), затем пишет документ и завершает соединение. Аутентификация при желании выполняется с помощью клиентских сертификатов. Пользовательский ввод при желании выполняется с помощью кода ответа, который передаёт строку приглашения для ввода после чего выполняется второй запрос с ответом пользователя, который закодирован в query string URL-строки. Да и вот, собственно, и всё!

$ openssl s_client -quiet -crlf   \
    -servername drewdevault.com   \
    -connect drewdevault.com:1965 \
  | awk '{ print "response: " $0 }'
gemini://drewdevault.com
response: 20 text/gemini
response: ```ASCII art of a rocket next to "Drew DeVault" in a stylized font
response:   /\
response:   ||    ________                         ________       ____   ____            .__   __
response:   ||    \______ \_______   ______  _  __ \______ \   ___\   \ /   /____   __ __|  |_/  |_
response:  /||\    |    |  \_  __ \_/ __ \ \/ \/ /  |    |  \_/ __ \   Y   /\__  \ |  |  \  |\   __\
response: /:||:\   |    `   \  | \/\  ___/\     /   |    `   \  ___/\     /  / __ \|  |  /  |_|  |
response: |:||:|  /_______  /__|    \___  >\/\_/   /_______  /\___  >\___/  (____  /____/|____/__|
response: |/||\|        \/            \/                 \/     \/             \/
response:   **
response:   **
response: ```
[...]

Так почему я восхищён этим протоколом?

Моё презрение к веб-браузерам хорошо документировано (раз, два, три). Веб-браузеры чрезвычайно переусложнены и любые попытки создать новый будут являться сизифовым трудом. Удачное выполнение этой работы, если и возможно, будет неизбежно порождать лавкрафтовский беспорядок, который невозможно мэйнтейнить, полный уязвимостей, отжирающий гигабайты оперативной памяти при использовании и часы при компиляции. И учитывая, что все современные веб-браузеры, что реализуют полезную часть веб-стандартов, очень плохи и становятся только хуже, то что мы можем сделать?

Проблема неразрешимая. Мы не можем иметь «веб» без всех этих проблем. Но вот что мы можем, так это иметь нечто немного другое, что-то типа Gemini. Gemini не решает все проблемы веба, но то подмножество юзкейсов, на которое он нацелен, он решает лучше веба и это меня восхищает в нём. Я хочу отказаться от той части веба, которую Gemini выполняет лучше и найти решения для оставшихся частей веба, которые имеет смысл сохранить (подсказка: самую малую часть).

Вот некоторые аспекты этого протокола, которые я очень одобряю:

  • Он очень простой. Реализация сервера или клиента может быть написана одним человеком с нуля в промежутке одного-двух дней. Новый веб-браузер может занимать миллион часов при сотнях разработчиков для полной реализации.
  • Он не расширяемый. Gemini спроектирован так, чтобы его было трудно расширять без потери обратной совместимости и почти все запросы на расширение в рассылке в конечном итоге сносятся. Это хорошо. Ибо расширяемость как правило плохая идея. Расширения в конечном итоге ведут к большему усложнению и Gemini может страдать от той же участи, что и веб, если он не будет противиться расширениям.
  • Он однозначен в вопросах форматирования документов. В нём нет inline-ссылок (каждая ссылка идёт на новую линию), никакого форматирования и никаких inline-изображений (inline images). Gemini строго разделяет роли доставки контента и его отображения. Доставка контента - роль исключительно сервера, а его отображение - исключительно клиента. Здесь нет «стилей сайта» и роль автора очень мала в вопросах того как должен отображаться контент. Авторы всё ещё имеют возможность проявлять себя в этих рамках, ровно как и в любых других. Да и они позволяют быть клиентам проще и действовать как пользовательский инструмент, нежели вендорский.

Некоторые люди утверждают, что нам стоит сделать «веб, но в чуть урезанном виде», т.е. взяв только «нормальное» подмножество веб-стандартов. Я не согласен с этим (например, я не считаю, что существует «нормальное» их подмножество), но я оставлю это для своего другого поста. Gemini - это новая среда, и она отлична от веба. Любой, кто входит в неё должен быть готов к этому и открыт её рамкам. Ограничения порождают креативность!

Что насчёт меня. Я работал над некоторыми проектами, связанными с Gemini. Например, этот блог теперь доступен и через Gemini и я начал писать эксклюзивный контент, доступный только через этот протокол. Я также написал некоторый софт, которым вы можете воспользоваться:

  • libgmni, gmni и gmnlm - мой инструментарий для клиентского софта. Всё написанно на C11 и только лишь требует POSIX-like систему с OpenSSL. libgmni - клиенсткая библиотека общего назначения для Gemini с простым интерфейсом. gmni - CLI-утилита для выполнения Gemini-запросов, выполненная в стиле cURL. Ну и, наконец, gmnlm - line-mode браузер с богатым набором фич. Вместе эти утилиты достигают около 4000 строк кода из которых 1600 - URL-парсер, взятый из cURL.
  • gmnisrv - высокопроизводительный Gemini-сервер, написанный на C11 для POSIX-систем с OpenSSL. Он поддерживает TLS без конфигурирования (zero-configuration TLS), CGI-скриптование, auto-indexing, regex routing, URL-перезапись и планирую ещё несколько вещей для версии 1.0. И весь код достигает около 6700 строк кода из которых 1600 - тот же код, взятый из cURL и ещё дополнительно 2800, взятые из quickjs Фабриса Белларда для реализации регэкспов.
  • kineto - это сетевой шлюз для соединения HTTP-клиента и Gemini-сервера. Реализован в одном Go-файле при поддержке go-gemini библиотеки от ~adnano. Мой Gemini-блог доступен через этот портал, если вы хотите посмотреть его.

Так что погружайтесь и изучайте! Устанавливайте gmnisrv на свой сервер и настраивайте своё Gemini-окружение. Читайте фиды из CAPCOM. Пишите собственный софт!



Последнее исправление: Pinkbyte (всего исправлений: 3)

Ответ на: комментарий от hobbit

Ты там уже разобрался, почему ты одновременно агитируешь за альтоастру, называя оппонентов виндузятниками и ноешь про то, что винду считают плохим? Или это другое?

anonymous
()
Ответ на: комментарий от anonymous

альтоастру

Ты там сначала прекрати изобретать мифические сущности, тогда поговорим.

и ноешь про то, что винду считают плохим

Окей, по этому пункту, так и быть намекну. Если я правильно понял, про какую тему вещь, я вступался не за винду, а за пользователей винды, которых там заклеймили всем скопом. Винда, и люди (вынужденно или добровольно) ей пользующиеся — разные сущности, вообще-то.

hobbit ★★★★★
()
Ответ на: комментарий от no-such-file

Мы не хотим простой веб, мы хотим свистоперделки на сотни гигабайт.

Кто мы-то? Люди, которые пишут о том, что веб слишком жирный, переусложнённый, погруженный в легаси? Поверь, Дрю - не единственный, кто жалуется на переусложнённый веб. Так что с «мы» нужно разобраться. Если это, конечно, не ирония.

Не актуально, людям постоянно нужно что-то новое.

Define «люди». Меня, например, иногда закидывает на японские сайты. И многие из них, на удивление, не ушли слишком далеко от эпохи веба 1.0. И это при чём вполне живые и актуальные сайты были.

rhubear
() автор топика
Ответ на: комментарий от rhubear

Кто мы-то?

Define «люди».

Не знаю, что no-such-file имел ввиду, но если по хорошему разобраться - найди где-нибудь статистику посещаемости интернет ресурсов. Где большинство - там и люди. Любые критерии являются нишевыми и контекстуальными, кроме одного - популярности. Почему-то я уверен, что наиболее посещаемые ресурсы все как один попадут в категорию «слишком жирный, переусложнённый, погруженный в легаси веб».

cloun1901
()
Ответ на: комментарий от rhubear

Таких, как вы с Дрю пара тысяч человек на всю планету. Так что, в масштаьах человечства и его потребностей - вы пустое место.

anonymous
()

Спасибо за напоминание. Давно хотел взглянуть да всё руки не доходили. Дрю, к сожалению, прав, web уже не исправить, т.к. проблема не в технологиях, а в людях. А люди неисправимы.

ugoday ★★★★★
()
Ответ на: комментарий от cloun1901

Популярность никак не отражает то, хотят ли люди свистелки или нет. Это вопрос монополий больше. Например, тот же Реддит, насколько я знаю, является одним из самых популярных сайтов у европейцев и американцев. В то же время, он довольно долгое время оставался в «немодном» дизайне. Да даже сейчас - с редизайном - все равно можно пользоваться старым дизайном.

Можно ещё редизайн Кинопоиска вспомнить, который вообще был освистан и пришлось возвращать всё вспять.

rhubear
() автор топика
Ответ на: комментарий от eternal_sorrow

— Здравствуйте, мы, орден св. Оккамма, создали монастырь со строгим уставом. Правила таковы …

— Не нужно, пока каждую келью не оснастите кабельным ТВ с порноканалами!

ugoday ★★★★★
()
Ответ на: комментарий от rhubear

Популярность никак не отражает то, хотят ли люди свистелки или нет.

Да, верно. Но она отражает(хоть, опять же, немного криво) терпимы ли свистелки для людей. Лучших критериев нет, в этом вся проблема.

Ещё полезно вспомнить историю - всё когда-то ранее было простым. Но затем обросло чем-то, что не всем нравится. Очень наивно предполагать, что та же история не повторится снова.

cloun1901
()
Ответ на: комментарий от ugoday

Что? Вообще мимо. Мне просто кажется неудобной необходимость ставить отдельный браузер для посещения gemini://*

С другой стороны, если протокол такой простой, добавить его в существующие браузеры будет проще простого.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от rhubear

закидывает на японские сайты. И многие из них, на удивление, не ушли слишком далеко от эпохи веба 1.0

У японцев отличное от нас «чувство прекрасного», и дело там не в вебе 1.0, а в специфике подхода к интерфейсу.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от eternal_sorrow

Мне кажется gemini — это больше социальное высказывание, нежели технический протокол. Мол, идите вы к чёрту с вашим жырновебом. Иначе, можно было бы просто договориться писать на чистом html в духе https://motherfuckingwebsite.com/

И тут использование firefox губит всю идею накорню.

ugoday ★★★★★
()
Ответ на: комментарий от cloun1901

И один человек со своей поделкой это исправит, так?

Не знаю. Но сложно отрицать то, что история знает случаи, когда один человек очень много делал и менял. Взять того же rms.

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

история знает случаи, когда один человек очень много делал и менял

Думается, там ещё был такой фактор, как «подходящее время». Новая неисследованная область, отсутствие жесткой конкуренции и т. д. Но, разумеется, всё может быть.

cloun1901
()
Ответ на: комментарий от anonymous

Made in the People’s Republic of China

японцы

Для того чтобы понять вкус китайцев - далеко ходить не нужно. Можно просто зайти на AliExpress

rhubear
() автор топика
Последнее исправление: rhubear (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну это все видели, тут из разряда всё настолько плохо что даже хорошо.

anonymous
()
Ответ на: комментарий от anonymous

Пример чего? Сайтов из зоны .jp? Ну это можно самому найти.

Они очень похожи на рекламные страницы таблоидов из 90-ых - нулевых.

Я какое-то время назад читал, что это связано с тем, что нет выделения ключевого текста начертанием (курсив или жирный) или шрифтом, поэтому выделяют цветом, либо заменой текста на графику. Из-за того, что плотность информации при передаче иероглифами выше, то присутствует многоколончатость и т.п.

Ещё, по-моему, там упоминалось, что японский веб во многом сложился в досмартфонное время, на раскладушках и следует традициям.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от vvn_black

у японцев несколько азбук и 3 возможных направления письма, нет привычных для нас знаков препинания и пробелов. Естественно, в таких условиях информация организовывается совсем по-другому, чем в европейских языках.

Lrrr ★★★★★
()
Ответ на: комментарий от Lrrr
  1. 2 возможных направления письма: вертикальное (справа-налево) и, привычное европейцам, горизонтальное (слева-направо)
  2. Знаки препинания вроде есть
  3. Вроде как в компьютерной письменности распространён именно «европейский» вариант письма (горизонтальный, слева-направо).
rhubear
() автор топика
Ответ на: комментарий от rhubear

Мы не можем иметь «веб» без всех этих проблем

Кто мы-то?

У тебя шизофрения?

Некоторые люди утверждают

Define «люди»

Действительно.

no-such-file ★★★★★
()
Ответ на: комментарий от rbbtnspc

Капитанить, что без юзеров оно не взлетит, я уж не стал.

А вообще очень жаль, идея отличная, лет 20 как пора, но блин, TOFU?

t184256 ★★★★★
()
Ответ на: комментарий от no-such-file

Т.е. ты не различаешь общую возможность и чьё-то желание?

Т.е. ты не различаешь обычную словоформу для обозначения абстрактного высказывания и отсылку на мнение каких-то определённых людей, которое определяет нужность чего-либо?

Ладно.

rhubear
() автор топика

Он не расширяемый. Gemini спроектирован так, чтобы его было трудно расширять

это правильно, а то корпорасты набегут и испоганят по старой методике https://ru.wikipedia.org/wiki/Embrace,_Extend,_and_Extinguish

extend, да

anonymous
()
Ответ на: комментарий от rbbtnspc

Я не фронтчего-то там, но да я особенный, но на вопрос ответишь или так и будешь своё ничего не знание скрывать за унылой попыткой дет.садовского троллинга?

vtVitus ★★★★★
()
Ответ на: комментарий от rbbtnspc

Зачем что-то доказывать человеку, который набрасывает по теме, ничего о ней не зная?

Так не доказывай, чего ты «ответить» жмёшь? Да и по теме от тебя в данной теме пока ни слова, одни глупости и, повторюсь, унылый троллинг. Или ты решил под конец года решил стать клоун ЛОРА? Тогда ты сразу говори - мы тебе будем баллы начислять.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Или ты решил под конец года решил стать клоун ЛОРА? Тогда ты сразу говори - мы тебе будем баллы начислять.

Мне начисляйте, я уже стал.

cloun1901
()
Ответ на: комментарий от ugoday

Масштабом

маштабом чего? я почему-то грешным делом думал, что тут про кривизну, трудоёмкость реализации и т.д. вопросы. вот у меня и возник вопрос почему взять библиотеку крипту + юникод (кривое нагромождение костылей) и это гуд, а библиотеку js + css (кривое нагромождение костылей) внезапно это плохо.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от cloun1901

Если стал, то зачем тебе баллы? А если нет, но нуно себя проявить, клоун ЛОРА так просто не дают! :-)

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Начал было объяснять, что размеры библиотеки для юникода и браузерного движка целиком несколько несопостовимы, но плюнул и всё стёр. Если надо объяснять, то не надо объяснять.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

то есть размером кода? хмм… вы случайно не индус? интересно вы в курсах сколько времени нужно, чтоб крипту разработать и почему там костыть на костыле? или юникод? или вы думаете, что вся проблема в размере кода? Тогда действительно ничего не пишите.

vtVitus ★★★★★
()

Сначала отказываешься поддерживать 90% железа в своем проекте, потом делаешь свой гипертекстовый фидонет. Дальше что - голос бога и под поезд полезет?

Midael ★★★★★
()
Последнее исправление: Midael (всего исправлений: 1)
Ответ на: комментарий от t184256

Протокол в последнее время на слуху, поэтому туда иногда кто-то заходит. Но контента мало, и они там, в основном, не задерживаются.

А TOFU — просто рекомендация, а не требование. Спецификация не указывает, как валидировать сертификаты.

rbbtnspc
()
Ответ на: комментарий от vtVitus

Во-первых, жду ответа на свой вопрос. Во-вторых, прежде чем спрашивать за ответы, сформулируй вопрос нормально.

rbbtnspc
()
Ответ на: комментарий от vtVitus

Да и по теме от тебя в данной теме пока ни слова, одни глупости

Сейчас бы рассказывать, что в протоколе не так, увидев его в первые и не читая спецификации. Это тебе не http или html, тут и 10 минут хватит.

и, повторюсь, унылый троллинг.

Унылый троллинг это твоё ряяяя, ненужно. Хотя, от тебя большего никто ничего и не ждёт.

rbbtnspc
()
Ответ на: комментарий от rbbtnspc

кто-то заходит << на слуху << популярен по версии ЛОРовских аналитиков << вот-вот захватит мир по версии ЛОРовских аналитиков << … << 0.1% юзербазы << … << взлетит

t184256 ★★★★★
()

Не взлетит, что-то простенькое, pre web 1.0 можно и на обычных веб технологиях сделать без проблем, а что-то другое это уже не потянет. Проект скорее арт-инсталляция.

goingUp ★★★★★
()

Веб слишком переусложнен! Люди быдло и хотят ненужные рюшечки! Делает нерасширяемый протокол не то что без рюшечек, а даже без инлайн графики. Затем сам же на свой сайт ставит аскиарт) Ханжество какое-то)

goingUp ★★★★★
()
Ответ на: комментарий от t184256

Но контента мало, и они там, в основном, не задерживаются.

Как можно было отсюда вывести, что оно взлетит и захватит мир? Надо либо сильно хотеть посраться в комментах, либо быть отбитым. Но это, на самом то деле, одно и то же.

rbbtnspc
()
Ответ на: комментарий от anonymous

Куцый Вейланд + тонна расширений
тонна расширений

При условии, что любое расширение должно быть частью композитора, т.е. любой существующий композитор необходимо доработать специфическим для этого композитора кодом, «тонна расширений» выглядит наивно.

Shadow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.