Я долго использовал сервер комментариев Commento на этом и на некоторых других веб-сайтах. Я даже, помнится, написал инструкцию по запуску Commento при помощи Docker Compose. Несколько лет назад Commento позиционировался как лёгкая и бесплатная альтернатива Disqus, Facebook Comments и т.д. для добавления функционала комментариев на веб-страницы.
Но шло время, и сейчас можно с уверенностью констатировать, что Commento мёртв.
Поэтому я и решил перезапустить проект под новым именем Comentario (именно так, с одним m)!
Commento заброшен
В какой-то момент Commento просто перестал развиваться. За последние два года в проекте не было ни единого коммита, и ещё дольше — ни одного существенного улучшения. Очевидно, что проект заброшен автором, несмотря на постоянно растущий список проблем.
В один прекрасный день меня окончательно достали его глюки, так что я решил сам создать альтернативный продукт (ранее я по похожим причинам разработал Sound Switcher Indicator и Ymuse — и это действительно оказалось отличным выходом).
Встречайте Comentario
Так я ступил на долгий путь разработки — точнее, переработки — сервера комментариев. Я назвал его Comentario — «комментарий» по-испански: прозрачный намёк на его родство с Commento, означающим то же самое, но по-итальянски.
Если совсем просто, Comentario — это практически полностью переписанный Commento. Нумерация его версий началась с версии 2.0.1 (основанной на последней доступной версии 1.8.0 его предшественника).
В Comentario переделаны все три его составные части:
- Бэкенд (Go)
- Встраиваемая часть с комментариями (Typescript, транспилируемый в чистый ES6 Javascript)
- Административный интерфейс (Angular)
Вплоть до своей текущей версии 2.3.0 структура базы данных всё ещё сохраняет полную совместимость с оригинальной БД Commento, но вся программная часть по сути написана заново.
И что тут нового?
Чем же отличается Comentario от своего предшественника Commento?
Список отличий огромен — просто как следствие объёма выполненной работы по переписыванию кода.
В настоящий момент функционал 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, вот ссылки на документацию:
- Getting started.
- Installation.
- Migration (поддерживается импорт из Commento/Commento++, Disqus, Wordpress).
Комментарии