ComentarioCommento — всё. Да здравствует Comentario!

Автор: Дмитрий Канн Чтение на 4 мин

Я долго использовал сервер комментариев Commento на этом и на некоторых других веб-сайтах. Я даже, помнится, написал инструкцию по запуску Commento при помощи Docker Compose. Несколько лет назад Commento позиционировался как лёгкая и бесплатная альтернатива Disqus, Facebook Comments и т.д. для добавления функционала комментариев на веб-страницы.

Но шло время, и сейчас можно с уверенностью констатировать, что Commento мёртв.

Поэтому я и решил перезапустить проект под новым именем Comentario (именно так, с одним m)!

Commento заброшен

В какой-то момент Commento просто перестал развиваться. За последние два года в проекте не было ни единого коммита, и ещё дольше — ни одного существенного улучшения. Очевидно, что проект заброшен автором, несмотря на постоянно растущий список проблем.

В один прекрасный день меня окончательно достали его глюки, так что я решил сам создать альтернативный продукт (ранее я по похожим причинам разработал Sound Switcher Indicator и Ymuse — и это действительно оказалось отличным выходом).

Image

Встречайте Comentario

Так я ступил на долгий путь разработки — точнее, переработки — сервера комментариев. Я назвал его Comentario — «комментарий» по-испански: прозрачный намёк на его родство с Commento, означающим то же самое, но по-итальянски.

Если совсем просто, Comentario — это практически полностью переписанный Commento. Нумерация его версий началась с версии 2.0.1 (основанной на последней доступной версии 1.8.0 его предшественника).

В Comentario переделаны все три его составные части:

  • Бэкенд (Go)
  • Встраиваемая часть с комментариями (Typescript, транспилируемый в чистый ES6 Javascript)
  • Административный интерфейс (Angular)

Вплоть до своей текущей версии 2.3.0 структура базы данных всё ещё сохраняет полную совместимость с оригинальной БД Commento, но вся программная часть по сути написана заново.

И что тут нового?

Чем же отличается Comentario от своего предшественника Commento?

Список отличий огромен — просто как следствие объёма выполненной работы по переписыванию кода.

Административный интерфейс Comentario.
Административный интерфейс Comentario.

В настоящий момент функционал Comentario полностью покрывает всё, что умел Commento, а также предлагает кое-что ещё. Из основного:

  • Comentario использует все новейшие версии ПО: Go 1.20, Postgres 15.x (с сохранением совместимости вплоть до 9.6), ES6 и так далее.
  • Исправлены все проблемы с OAuth-провайдерами (Google, GitHub, GitLab, Twitter), а также с аватарами пользователей.
  • Встраиваемая часть:
    • Код модернизирован и переписан на Typescript.
    • Вёрстка оптимизирована для экранов всех размеров.
    • Всплывающие диалоги логина, регистрации и справки по Markdown.
    • Формы логина, регистрации и редактора комментариев используют HTML-элемент form и атрибут autocomplete, благодаря чему эти они стали совместимыми с менеджерами паролей.
    • Улучшения для WCAG (универсальный доступ), включая навигацию с клавиатуры.
    • Добавлена ненавязчивая анимация.
    • Поддержка отмены (Escape) и применения (Enter, CtrlEnter в многострочном поле) диалогов с клавиатуры.
    • Сотни прочих изменений и исправлений.
  • Административный интерфейс:
    • Поддержка экранов любых размеров от мобильных до больших десктопных;
    • Поддержка многоязычности;
    • Новая страница дашборда со статистикой по всем доменам пользователя;
    • Настоящая аутентификация при помощи HTTP-only-кук;
    • Нормальная валидация ввода;
    • Функция клонирования домена;
    • Экспорт данных домена скачивает файл вместо отправки уведомления на скачивание по емэйлу;
  • Автоматизированные тесты интерфейса на базе Cypress (в процессе).

Производительность

Модель данных Commento была, говоря откровенно, незрелой, а местами просто безумной, в результате чего сильно страдало быстродействие продукта.

Так, одна из ключевых функций сервера, загрузка комментариев, использовала запрос к базе данных для получения комментариев на странице, потом по запросу на каждого автора комментариев, а потом ещё по запросу на каждый комментарий для получения оценок голосования. Это, мягко выражаясь, полный капец, товарищи. Если у вас страница с 500 комментариями, оставленными 100 авторами, то загрузка комментариев для неё отправляет 601 SQL-запрос к БД!

В Comentario это безумие устранено: все комментарии, авторы и оценки загружаются одним запросом.

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

Структура БД вплоть до текущей версии Comentario 2.3.0 остаётся без изменений; я решил сначала исправить все проблемы в коде сервера и клиента, но модель данных точно следующая на очереди.

Что дальше?

Всё вышеперечисленное — только начало. Я планирую добавить ещё множество крутых фич, отсутствовавших в Commento).

Демо-версия

Увидеть новую версию в действии, а также её административный интерфейс (логин с емэйлом admin@admin и паролем admin), можно на демо-сайте:

Демо-сайт комментариев Демо админки Comentario

Установка

Если вы хотите установить Comentario, вот ссылки на документацию:

Подписаться на обновления блога:

Комментарии

Поделиться: