Должен ли Discourse прилагать усилия, чтобы стать жизнеспособной платформой для комментариев?

Я сейчас работаю над этим. Первая версия предназначена для headless-сайта WordPress, использующего фреймворк Remix для фронтенда. Как только это будет готово, я сделаю версию для обычных сайтов WordPress. Скорее всего, это будет плагин, расширяющий функционал плагина WP Discourse. Я надеюсь, что большая часть того, что я делаю на headless-сайте WordPress, сможет быть перенесена на обычные сайты WordPress, хотя, возможно, потребуются некоторые компромиссы.

Реализовать возможность комментирования напрямую с внешнего сайта несложно. Основное требование — у внешнего сайта должен быть доступ к учётным данным пользователя Discourse. Это можно сделать либо используя внешний сайт в качестве провайдера DiscourseConnect для Discourse, либо настроив Discourse как провайдера DiscourseConnect для внешнего сайта.

Во втором сценарии, когда внешний сайт не является провайдером DiscourseConnect для Discourse, при первой попытке пользователя оставить комментарий с внешнего сайта ему потребуется перейти по ссылке для привязки своей учётной записи на внешнем сайте к учётной записи Discourse (или зарегистрироваться в Discourse, если он ещё этого не сделал). С точки зрения пользователя этот процесс может быть довольно бесшовным.

Однако вышеупомянутое изменение не делает всю систему похожей на обычную систему комментариев. Обычное ожидание от такой системы — возможность читать и взаимодействовать со всеми комментариями. Плагин WP Discourse отображает лишь выборку комментариев, загружаемых из специального маршрута, предоставляемого Discourse. Он не предоставляет функционала для взаимодействия с комментариями.

Сложные части задачи:

  • пагинация всех комментариев темы на WordPress, учитывая, что их может быть тысячи;
  • создание интерфейса, который даёт пользователю понимание его положения в длинном списке комментариев;
  • определение способа отображения комментариев, являющихся прямыми ответами на другие комментарии. (Конвенция Discourse в этом вопросе отличается от того, как большинство систем комментариев обрабатывают ответы.)
  • предоставление возможности пользователям отвечать на комментарии, ставить лайки, редактировать свои комментарии и т.д.;
  • работа с комментариями, созданными в Discourse, которые могут содержать контент или разметку, которые сложно отобразить или с которыми трудно взаимодействовать на внешнем сайте. Например, oneboxes, опросы…
  • предоставление возможности фильтрации комментариев по дате создания (сначала новые, сначала старые), по рейтингу и т.д.

Всё это необходимо реализовать, не создавая чрезмерной нагрузки на сервер внешнего сайта, не выполняя слишком много API-запросов к Discourse и не потребляя слишком много памяти на устройстве пользователя (цель — создать легковесную систему комментариев). Это достижимо, но нельзя просто внедрить это в существующий код плагина WP Discourse без внесения в него существенных изменений.

4 лайка