Давненько я искал нормальную альтернативу проприетарным системам комментирования в духе Disqus или Cackle и наконец-то нашел!

Remark42! Всем советую, выглядит вот так: krasovs.ky/2021/04/07/hello.ht

Официальный сайт с описанием всех плюшек: remark42.com

@rf

@savely прикольно было бы, если б оно AP поддерживало

@rf

@drq @savely @rf

Ты можешь предложить. Это Умпутун пилит.
Но оно только про комменты, там постов самих как таковых нет, по идее. То есть оно не очень хорошо ложится на то как у нас тут бложики идут.

@skobkin @drq @rf оно ещё в принципе очень просто устроено. Там никакой гигантской СУБД не используется, просто гошный BoltDB.

Мне кажется тащить туда AP оверкилл. Проще какой-то веб-плагин на базе Mastodon API написать.

@savely @drq @rf

А при чём тут Mastodon API?
Док-то явно хотел чтобы обсуждения в Ремарке федерировались.

@skobkin @drq @rf федерализовать их можно и в Mastodon. А отображать в блоге в блоге комментариев через API.

Хочешь оставить коммент? Регайся в федиверсе и реплай на оригинальный пост.

@savely @drq @rf

Какое-то двойное усложнение: и для владельца ресурса, и для тех, кто хочет прокомментировать.

@skobkin @drq @rf

Я просто предложил. Мне кажется федирализовывать ничего не надо вообще :) Remark42 отлично выполняет свою роль.

@savely @drq @rf
А никто не говорит, что он делает что-то плохо. Речь о том, что он может быть ещё лучше.

@skobkin @drq @rf это будет другой по сложности проект с другим названием, ИМХО.

А вообще я может чего не понял. Вы хотите чтобы он просто участвовал в федерализации, но не имел своих аккаунтов?

Иначе по факту вы предлагаете тоже самое: нужно будет сначала зарегаться на инстансе AP, а потом уже комментить.

@savely @drq @rf
Если я правильно понял Дока, суть идеи такова, что можно было бы посты представлять в виде AP-объектов (именно тут должна быть сложность с Ремарком), а комментирование через AP просто было бы ещё одним способом оставить комментарий. Сейчас там есть аутентификация через соцсети и гитхабы, а добавился бы к этому AP.

Но если я правильно помню суть Remark42, то здесь сложность именно архитектурная. Ведь он встраивается как побочная сущность на страницу с постом и сам ни на какие запросы кроме рендеринга ленты комментов не отвечает.
А значит поддержка AP должна быть со стороны того, куда встраивается ремарк.

Буду рад ошибаться.

@skobkin @drq @rf ну да, я так понимаю пост должен создаваться помимо непосредственно блога, ещё и в AP.

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

По идее можно сделать так, чтобы он создавать пост в своей базе, а потом в AP. Дальше просто получать на него AP-ответы.

Можно даже в AP завести отдельный блог-бот-аккаунт, который будет от анинимов кидать реплаи.

@savely @drq @rf

AP - это протокол, а не какая-то база данных или что-то ещё. Там ничего создавать не надо. Ты можешь в виде AP-объектов представлять то, что у тебя уже есть в базе данных. В данном случае - в boltdb (неважно где).

Сущности вроде ботов-анонимов тут излишни.

Проблема в другом.
РЕСУРСОМ, который запрашивается является страница, которая отдаётся тем, куда Remark42 встроен. А это может быть в том числе статический HTML (для такого в основном и сделан Remark42).

То есть, если смотреть в тот же стандарт, то:

> Servers MAY use HTTP content negotiation as defined in [RFC7231] to select the type of data to return in response to a request, but MUST present the ActivityStreams object representation in response to application/ld+json; profile="w3.org/ns/activitystreams", and SHOULD also present the ActivityStreams representation in response to application/activity+json as well.

w3.org/TR/activitypub/#retriev

Это разве что какой-то дополнительной миддлварью можно решить.

Это проблема номер раз.

Проблема номер два - если делать подписки - ремарк должен уметь рассылать активити в инбоксы.
w3.org/TR/activitypub/#deliver

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

@skobkin @drq @rf под "создание" я имел в виду рассылки активити в инбоксы, да, извиняюсь, по AP не эксперт.

Я думал Remark42 не должен отдавать содержимое ресурса. Просто ссылки достаточно, условный Mastodon сделает понятное превью статьи на базе meta-тегов страницы.

@savely @drq @rf

Да не в страничке проблема, а в том, что в идеале у тебя ресурс http://domain.tld/somepost должен в зависимости от заголовков возвращаться либо в HTML (браузеру) либо в виде AP-объекта. Remark на это никак не может повлиять вообще. Он (точнее, его фронтенд) загружается уже внутри того самого HTML в том или ином виде.

@skobkin @drq @rf ааа, понял. Ну тут да, нужна будет модификация ресурса. А почему нельзя использовать URL Remark42?

У меня вот он висит на субдомене: remark42.krasovs.ky. В другом вариант его можно повесить на путь а-ля krasovs.ky/remark42/

Если посещение из браузера пусть перекидывает редиректом на ссылку из базы. Если нет, то пусть отвечает AP-объектом.

Извиняюсь, если я опять чего-то не понял.

@savely @drq @rf

> А почему нельзя использовать URL Remark42?

Я не помню в деталях как работает Remark42.
В теории ты, конечно, можешь запилить такой конфиг Nginx, который в зависимости от заголовка будет отдавать либо твою статику, либо то, что сгенерит Remark42.
Но ЕМНИП, Remark не хранит само содержимое поста. То есть, если я не ошибаюсь, в лучшем случае даже с костылями в Nginx у тебя будет в лучшем случае заголовок поста в виде контента (и то не уверен, что Ремарк его хранит).

> Если нет, то пусть отвечает AP-объектом.

Я выше написал, что В ТЕОРИИ это можно сделать, НО.
В случае тех же динамических сайтов кроме Ремарка генерировать AP-объекты некому. А в ремарке, скорее всего, нет нужного набора данных о постах.

То есть, скорее всего (если я не ошибаюсь), без сильного перепиливания Ремарка это не реализуемо в юзабельном виде.

@skobkin @drq @rf

Повторюсь: я предлагал не рассылать в виде AP-объектов содержимое поста. ТОЛЬКО ССЫЛКА. Она в полном распоряжении Remark42.

У нас для того чтобы сделать превью давно есть OpenGraph, который Mastodon и другие AP-сети поддерживают.

Remark42 без всяких конфигураций Nginx может полностью взять эту роль на себя, потому что он Go-апп у котого полностью свои хендлеры и он там сам может управлять HTTP-заголовками как хочет. Вплоть до того, что может сам выступать реверс-прокси.

@savely @drq @rf

> я предлагал не рассылать в виде AP-объектов содержимое поста. ТОЛЬКО ССЫЛКА. Она в полном распоряжении Remark42.

Если ты имеешь в виду одну ссылку вместо текста - тогда это очень всрато и стоит вопрос: стоит ли вообще такое делать.
Если ты имел в виду как ссылку на объект, то когда по этой ссылке запросят объект, его никто не отдаст...

> чтобы сделать превью давно есть OpenGraph

Проблема не в превью, а именно в самой федерации.
На том же сайте на Github Pages ты не можешь сказать гитхабу роутить запросы к inbox/outbox на свой Remark.
И всё. Это уже всё ломает.

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

Красочный, но странный пример: "Давайте встроим в автомобиль удочку, ведь иногда мы ездим на нём на рыбалку".

@skobkin @drq @rf я имел в виду «всратый вариант». Но что в нем всратого понять не могу.

Еще тебе ничего не мешает в документации написать, мол если у вас на сайте текст помечен классом или айди X, то Remark42 его подберет и использует в качестве аннотации в AP-объекту. Модификация ресурса в таком случае будет минимальной.

@savely @drq @rf

> если у вас на сайте текст помечен классом или айди X, то Remark42 его подберет

Это очень плохо. Во-первых, нужно учить Remark это делать. Во-вторых любой современнный разработчик SPA такое говно никогда не будет к сайту подключать, если оно вопреки его тулкита будет пытаться в DOM лезть.

Можно при инициализации Remark передавать ему с параметрами нужные данные. Но это не решает фундаментальной проблемы, которую я описал выше: ты не можешь контролировать роутинг запросов в основных кейсах применения Remark, что делает такую интеграцию невозможной или как минимум односторонней (ты сможешь рассылать объекты, но не сможешь получать).

@skobkin @drq @rf да хоспади. Ничего уже не понимаю. Я же тебе сказал Remark42 это САМОСТОЯТЕЛЬНЫЙ HTTP-демон, который может делать вообще ЧТО УГОДНО. Он даже в документации разработчиков по умолчанию на субдомене висит.

Я предлагаю чтобы содержимым AP-объекта была просто чистая ссылка в вакууме, которая является в случае с Remark42 ключом в базе.

@skobkin @drq @rf выглядело бы это так: я пишу пост в блоге, мой аккаунт дропает сюда ссылку в виде обычного toot’а, вы комментируете обычными реплаями, комментарии появляются на сайте в виджете Remark42.

Что в этом сложного?

@savely @drq @rf

> Что в этом сложного?

Технически сложного ничего.
Беда в том, что это уже не поддержка федерации, а двусторонний репостинг в Mastodon.

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

Ну и реализация в целом будет состоять из костылей.

@skobkin @drq @rf поддержка полной федерации по-моему сулит ещё больше технических сложностей (о которых ты говорил, судя по всему).

И в таком в виде оно уж тем более не будет вписываться в минималистичность движка.

Короче мы похоже в течении часа говорили о разных вещах :(

Follow

@savely @drq @rf

Поддержка федерации - это не очень сложно.

Проблема в том, что Remark42 работает совсем в другой парадигме. Это, по сути, встраиваемое в веб-страницы решение в первую очередь для статических сайтов.

· · Web · 0 · 0 · 0
Sign in to participate in the conversation
Mastodon

lor.sh is yet another mastodon instance.