Насколько далеко мы можем зайти с кастомизацией Discourse?

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

Мне очень нравится Discourse, но есть несколько вещей, которые я, знаю, захочу реализовать или изменить в будущем. Я хотел бы иметь собственное мобильное приложение, вместо того чтобы полагаться на официальное приложение Discourse. Что-то более индивидуальное и ориентированное именно на мое сообщество.

Также мне не нравится, что на старых мобильных телефонах отображается некрасивый шрифт Times New Roman и сильно урезанная версия Discourse. Я понимаю, что прогресс не стоит на месте, но мне интересно, действительно ли нужно возвращаться к такому уродливому виду, чтобы показать, что что-то больше не поддерживается? И лишать доступа, возможно, к функциям, которые, скорее всего, больше не существуют, но важны для сообщества?

Я также хочу кастомизировать другие вещи, не связанные только с интерфейсом: реализовывать новые функции, перемещать элементы и т. д. По сути, использовать базу данных и большую часть «каркаса» Discourse и сделать его максимально близким к моему собственному стилю, чтобы не возникало ощущения «это просто еще один форум на Discourse, только с другими цветами».

Я предполагаю, что многое можно настроить через компоненты, плагины и т. д., но мне интересно, каковы пределы такой кастомизации? Особенно когда речь заходит о поломках при обновлениях Discourse?

Именно это я и делаю прямо сейчас, и, имея 15-летний опыт работы с WordPress, это похоже на путешествие в прошлое. Однако с помощью ненавистного ChatGPT я начинаю разбираться в некоторых вещах и обнаруживаю, что это не так уж сложно, если ты понимаешь GitHub, умеешь редактировать файлы и использовать CSS и т. д.

Да, я работаю с Git/GitHub и имею «базовое» понимание того, как всё устроено (в последнее время учусь больше, так как параллельно разрабатываю другие проекты). Думаю, что многое можно сделать, но всегда есть одна проблема: то, что мы создаём под версию Discourse XYZ сегодня, может сломаться завтра после обновления, что очень неприятно, особенно если ты не знаешь, что именно сломалось…

Поэтому минимальная кастомизация кажется более безопасной, но менее «брендированной». Думаю, дело в том, чтобы решить, что для тебя ценнее.

Ты используешь ChatGPT или Codex? Я использую Claude Code CLI в GitHub Codespaces, и это очень удобно! И поскольку я сохраняю все инструкции для Claude, о том, как он должен вести себя и т.д., в файле CLAUDE.md, он очень редко галлюцинирует, или, по крайней мере, не так сильно. Этот файл постоянно растёт по мере того, как я нахожу новые вещи, которые хочу, чтобы Claude делал или не делал.

Это должно быть решено одной строкой CSS в теме.

Довольно далеко, если использовать существующие хуки расширения.

Вы видели сайты по ссылкам Discourse customers | Discourse - Civilized Discussion и https://discover.discourse.com/, например Epic Developer Community Forums и https://community.robotime.com/ ?

Буду честен: я отказался от Claude, потому что он не умел работать с изображениями и плохо ладил с Open Router. У меня было множество подписок, поэтому я отменил все, кроме GPT.

Я упомянул это лишь как часть общих изменений: от платформы, которая просто работала, к состоянию, когда она вдруг перестала работать, или, по крайней мере, стала работать не совсем так, как раньше. Из-за этого я начал избегать форумов на Discourse. Я знаю, что мне рано или поздно придётся обновить телефон, но этот ещё работает, так что…

Этот выглядит довольно привлекательно: https://forums.unrealengine.com/
Сохраню в заметки на будущее. Спасибо!
Есть и другие интересные варианты, но мне всегда кажется, что я узнаю Discourse. Я знаю, что я слишком много думаю вместо того, чтобы что-то делать, но мне просто интересно, насколько далеко мы можем зайти с кастомизацией? Как я уже сказал, я считаю, что можно сделать многое, особенно когда речь идёт о пользовательском интерфейсе. Интересно, не сломается ли функционал после обновлений Discourse? Мне нужно провести некоторые тесты.

Самоисполняющееся пророчество :slight_smile:

Мне почти никогда не нужны изображения, поэтому это никогда не было для меня проблемой. И в тех редких случаях, когда они мне были нужны, я обращался к ChatGPT. В 50% случаев, в зависимости от того, что я прошу, я всё равно не получаю ничего, даже отдалённо похожего на то, что я представлял, поэтому в итоге делаю всё сам в Photoshop.

Но Claude Code оказался для меня огромной помощью. Очень быстро.

Если ChatGPT подходит для того, что вы делаете, то это определёно правильный инструмент. Главное, чтобы он работал.

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

Снова, возможно, я слишком много об этом думаю, но мне определённо нужно провести несколько тестов и посмотреть, как всё пойдёт.

Думаю, он застрял в прошлом со многими темами и т.д., я даже уже высказывался по этому поводу некоторое время назад

Другая проблема в том, что форумы будут выглядеть одинаково, потому что это то, что они есть — список заголовков. Посмотрите на Facebook, Reddit и X. Все их карточки тем в той или иной степени похожи.

Я не эксперт, но с моей точки зрения Discourse обладает высокой степенью настраиваемости. Более того, разработчики постоянно создают новые и более простые способы его кастомизации. Команда Discourse также старается заранее предупреждать о тех изменениях, которые могут повлиять на то, что пользователи уже настроили.

Возможности создать нечто гораздо большее, чем «просто ещё один форум на Discourse, но с другими цветами», действительно существуют, и меня поражает, насколько многое можно изменить, используя только компоненты тем и плагины, предоставляемые официальной командой разработчиков. И, как вам скажет служба поддержки, любой элемент интерфейса доступен через API, что означает: если вы хотите «использовать базу данных и большую часть „каркаса“ Discourse», ничто не может вам помешать.

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

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

Загляните на ask.discourse.org

это ИИ, созданный специально для Discourse

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

Да, я всегда говорю, что в цифровом мире всё возможно, так или иначе. Так что, полагаю, мне нужно провести некоторое исследование и двигаться шаг за шагом. Думаю, следующим шагом будет восстановление моего Discourse. Я устанавливал его в своё время, но потом решил отключить, пока не буду готов всерьёз заняться этим.

Да, примерно с 2001 года. Но в последнее время, особенно благодаря Claude Code, я смог создавать полезные инструменты для себя и, в конечном счёте, поделиться некоторыми из них с другими.
Я не пытаюсь стать профессиональным разработчиком или тратить на это слишком много средств, но это определённо то, что мне нравится. Постоянная творческая работа может быть очень изматывающей. Наличие чего-то более бинаарного, такого как программное обеспечение, приносит большое удовлетворение.

[quote=“Andrew_Rowe, post:11, topic:408829”]
не обижайтесь, воспринимайте это как совет о том, сколько стоит ваше время, и рассмотрите возможность найма профессионального разработчика.
[/quote]\nСовсем не обижен. Любая обратная связь ценна. И я согласен с тем, что всё чаще анализирую, насколько ценно моё время, чтобы не тратить его на определённые дела, а поручить их кому-то другому, и что мне действительно нравится делать, независимо от затраченного времени и усилий. Именно поэтому создание новых инструментов приносит мне такое удовлетворение. Это время, которое я с удовольствием провожу, наблюдая, как идеи воплощаются в реальность, поэтому оно никогда не тратится впустую.

Да, интернет стал очень «универсальным». Думаю, это во многом связано с тем, что функциональность ставится выше стиля. Не то чтобы я считал это проблемой, но наличие чего-то уникального тоже важно.

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

Это, без преувеличения, одна из лучших backend-платформ, которыми я когда-либо пользовался.

Ограничений очень мало. Единственное существенное ограничение заключается в том, что шаблоны нельзя переопределять, и вам нужно добавлять новые элементы в существующие представления с помощью Plugin Outlets. Тем не менее, использование этого подхода в сочетании с CSS обычно позволяет добиться нужного результата.

Вы можете создавать новые маршруты и полностью контролировать их структуру.

Бэкенд более гибок.

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

Не разумно ожидать полного отсутствия необходимости в поддержке… просто посмотрите на мой аккаунт на GitHub и некоторые из моих популярных расширений, и вы увидите множество коммитов с пометкой «COMPATIBILITY:» :slight_smile:

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

Сложно сказать, насколько «безопасна» та или иная кастомизация, не зная конкретных деталей… но, как правило, чем больше вы кастомизируете, тем больше работы по поддержке вам придется выполнять.

Если вы добавляете что-то вроде пользовательского компонента в плагин-аутлет или полностью заменяете компонент Discourse… как правило, эти изменения должны продолжать работать, поскольку вы вставляете пользовательский код в точку расширения (и мы стараемся сохранять эти точки, так как их используют многие пользователи).

В CSS следует по возможности использовать существующие --variables для изменения элементов, поскольку иногда нам приходится менять структуру контента, но даже в этом случае мы можем переиспользовать те же переменные.

Так что вот более безопасный путь:

.d-header {
   --title-color--header: red;
}

Это менее безопасно:

.d-header {
    .extra-info-wrapper .topic-link {
      color: red;
    }
}

Мы отодвигаем платформу от старых методов кастомизации, которые чаще приводили к сбоям, таких как переопределение шаблонов и использование modifyClass. Мы также работаем над более стабильными API… но все равно потребуется немного времени на поддержку время от времени.

Спасибо за обратную связь.
Мне, думаю, действительно стоит хорошенько подумать насчёт staging-сервера. Это определённо хороший подход.

Сейчас я считаю, что первым шагом должна быть повторная установка Discourse, создание контента, а когда наступит подходящее время, начать с простых задач, не требующих крупных изменений и реализуемых с помощью компонентов. Посмотрю, насколько далеко я смогу зайти таким путём. И только потом начну размышлять о staging-сервере.

Спасибо!

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

Действительно.

Сейчас я занимаюсь системной стабилизацией Discourse.

Я использовал некоторые стандартные компоненты тем и написал свои собственные, чтобы настроить платформу под культурные особенности моей местной аудитории.