💾 Archived View for sysrq.in › ru › article › gemini-docs › companion › subscription.gmi captured on 2022-04-28 at 17:43:31. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-04)
-=-=-=-=-=-=-
Этот документ описывает соглашение, в соответствии с которым Gemini-клиенты могут "подписываться" на регулярно обновляемые Gemini-страницы (такие как главная страница гемлога) даже в отсутствии полноценных технологий синдикации, таких как Atom и RSS. Оно задумывалось как легковесная альтернатива этим технологиям, чтобы снизить барьер вхождения в публикацию периодического контента в Geminispace и помочь найти читателей, которым бы не приходилось каждый раз вручную проверять закладки. В частности, конечным результатом должно стать то, что на простую, вручную обновляемую и удобочитаемую главную страницу (такую, какую бы написали в любом случае) можно было подписаться без необходимости введения каких-либо особых изменений. Очевидно, что это соглашение будет не таким мощным, как более сложные технологии вроде Atom и не будет работать наравне с более сложными технологиями во всех сценариях использования. Тем не менее, от него ожидается в достаточной мере подходить для широкого спектра всемыслимых областей применения. Ничто в этом соглашении не останавливает от одновременной публикации Atom-ленты, если так хочется. По сути даже, это соглашение может упростить генерацию таких лент.
Оставшаяся часть данного документа описывает, как интерпретировать документ text/gemini, как если бы он был Atom-лентой, в которой представлены все необходимые элементы. Соглашение изложено таким образом, чтобы убедиться в том, что для клиентов возможно поддерживать как это легковесное соглашение для подписки, так и подписку на Atom-ленты (что позволит упростить кодовую базу и согласовать интерфейс), а также чтобы показать, что простая автоматическая генерация Atom-лент очень даже возможна. Простые клиенты, которые поддерживают только это соглашение ля подписки, могут игнорировать Atom-ленты по своему усмотрению.
URL-адрес, с которого получен документ text/gemini, служит обязательным элементов ленты "id" и рекомендуемым элементом "link".
Содержимое первой строки заголовка, начинающейся с единственного символа #, в документе служит обязательным элементом ленты "title". По этой причине рекомендуется вписывать контекст в заголовки, например "Гемлог Абеляра Линдсея", а не "Мой гемлог" или "Главная страница гемлога".
Если строка заголовка, начинающаяся с двух символов ##, следует в документе за первой строкой, начинающейся с одного символа #, но стоит перед любой непустой обычной строкой, её содержимое может служить необязательным элементом ленты "subtitle".
Обязательный элемент ленты "updated" должен быть равен последнему значению из всех элементов "updated" статей, связанных со страницей. Если в документе нет ни одной статьи, лента пустая (что разрешено стандартом Atom), а элемент ленты "updated" равен времени, в которое документ был получен.
Элементы статьи ленты извлекаются из подмножества строк ссылок (если они имеются).
Каждая строка ссылки, после URL которой следует подпись, первые 10 символов которой соответствуют дате в формате ISO 8601 (например, ГГГГ-ММ-ДД) представляет одну статью. Строки ссылок, которые не соответствуют этому критерию, игнорируются.
Обязательные элементы статьи "id" и "link" с аттрибутом rel="alternate" (вообще, элементы "link" не являются обязательными в статьях Atom, но это соглашение не предписывает элементы "content" статьям, и следовательно ссылка rel="alternate" становится обязательной) оба равны URL-адресу соответствующей строки ссылки.
Обязательный элемент статьи "updated" равен полудню по UTC того дня, на который указывает 10-символьная строка в начале подписи соответственной строки ссылки.
Обязательный элемент статьи "title" извлекается из того, что остаётся от соответственной подписи строки ссылки после того, как отбросить первый отделённый пробельными символами компонент (который обязательно включает в себя дату). Клиенты могут просто взять то, что осталось, но некоторая доработка может пригодиться, чтобы учитывать пользователей, которые используют подписи с разделителем между датой и заголовком, например: "1965-03-23 - Gemini 3 launch successful!".
Gemini-документ, доступный по адресу gemini://gemini.jrandom.net/gemlog/:
# J. Random Geminaut's gemlog Welcome to my Gemlog, where you can read every Friday about my adventures in urban gardening and abstract algebra! ## My posts => bokashi.gmi 2020-11-20 - Early Bokashi composting experiments => finite-simple-groups.gmi 2020-11-13 - Trying to get to grips with finite simple groups... => balcony.gmi 2020-11-06 - I started a balcony garden! ## Other gemlogs I enjoy => gemini://example.com/foo/ Abelard Lindsay's gemlog => gemini://example.net/bar/ Vladimir Harkonnen's gemlog => gemini://example.org/baz/ Case Pollard's gemlog => ../ Back to my homepage Thanks for stopping by!
может быть интерпретирован как эквивалент следующей Atom-ленте:
<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>J. Random Geminaut's gemlog</title> <link href="gemini://gemini.jrandom.net/gemlog/"/> <updated>2020-11-20T12:00:00Z</updated> <id>gemini://gemini.jrandom.net/gemlog/</id> <entry> <title>Early Bokashi composting experiments</title> <link rel="alternate" href="gemini://gemini.jrandom.net/gemlog/bokashmi.gmi"/> <id>gemini://gemini.jrandom.net/gemlog/bokashmi.gmi</id> <updated>2020-11-20T12:00:00Z</updated> </entry> <entry> <title>Trying to get to grips with finite simple groups...</title> <link rel="alternate" href="gemini://gemini.jrandom.net/gemlog/finite-simple-groups.gmi"/> <id>gemini://gemini.jrandom.net/gemlog/finite-simple-groups.gmi</id> <updated>2020-11-13T12:00:00Z</updated> </entry> <entry> <title>I started a balcony garden!</title> <link rel="alternate" href="gemini://gemini.jrandom.net/gemlog/balcony.gmi"/> <id>gemini://gemini.jrandom.net/gemlog/balcony.gmi</id> <updated>2020-11-06T12:00:00Z</updated> </entry> </feed>
Главным недостатком настоящего соглашения является то, что оно не позволяет сообщать ни время суток, в которое пост был написан, ни часовой пояс, для которого дата действительна. Всё это делает легковесную подписку плохим выбором для областей применения, в которых множество обновлений происходит каждый день, а относительный порядок обновлений (как внутри одной ленты, так и между ними всеми) важен: например, в случае срочных новостей, уведомлений о погоде и пробках, и так далее. Для этих приложений настоятельно рекомендуется реализовывать более надёжные технологии подписки, такие как Atom и RSS.
Этот минус мало касается широкого спектра распрстранённых и значимых активностей в Geminispace, которые оперируют на "человеческом уровне". К примеру, это соглашение идеально работает для отдельных читателей, использующих свои локальные клиенты для подписки на десять-двадцать выбранных вручную гемлогов, которые обновляются раз в несколько дней контентом о повседневной жизни, хобби, мнениями о ситуации в мире, рецептами, фотографиями и так далее. Лишь в очень редких случаях требуется прочитать контент такого рода, написанный Алисой на утро среды, раньше написанного Бобом вечером среды, или точно знать, кто и когда написали свои посты. Если время суток важно для чтения контента поста, автор или авторка обязательно это упомянут.