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 ).

Пока что вы можете:

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

Комментарии

Поделиться: