Хочу начать разработку для Discourse, с чего лучше начать?

Много лет назад я разрабатывал плагины для устаревшей платформы форумов, которая использовала PHP и MySQL. Я был очень доволен тем, что смог реализовать, и мои пользователи тоже.

Раньше я никогда не работал с Ruby on Rails (за исключением того, как я с трудом осваивал процесс импорта данных, чтобы загрузить их в Discourse в первый раз :joy:).

Предполагаю, что прежде чем углубляться в документацию и руководства по разработке здесь, мне нужно сначала освоить базовые вещи.

Стоит ли сначала изучить Ruby on Rails?

Нужно ли мне также изучать Ember.js? Честно говоря, я никогда с ним не работал, но понимаю, что он используется в ядре Discourse.

Также я новичок в Postgres.

Буду благодарен за любые советы и рекомендации по следующим шагам.

Отлично!

Есть несколько полезных постов на эту тему. Я дам ссылку на свой, так как в нём есть ссылки на эти материалы. How can I make my own Discourse plugins? - #2 by merefield

(Хотя лично я сейчас рекомендую VSCode)

Один из способов начать — помогать с поддержкой существующих плагинов, отправляя PR (так начал и я): начните с простых мелких задач, а затем переходите к решению более серьёзных проблем и, возможно, добавлению новых функций.

Если у вас есть идея для плагина или компонента темы, которая относительно проста, начните с неё. Личные творческие цели могут быть очень мотивирующими.

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

Будьте терпеливы. EmberJS — довольно хитрое существо, в котором непросто разобраться.

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

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

Возможно, лучший совет: просто делайте! Единственный способ научиться — по-настоящему запачкать руки. Не бойтесь совершать ошибки и никогда не позволяйте разочарованию останавливать вас. Продолжайте двигаться вперёд, и в конце концов всё заработает. Старайтесь решать задачи самостоятельно как можно больше, но всегда можно обратиться за помощью к другим, когда это действительно необходимо.

Я потратил много времени на изучение Rails. Но множество вещей происходит на стороне Ember/JavaScript. Мой совет — начать именно оттуда с того, что можно сделать в компонентах темы. Они гораздо безопаснее, проще в использовании и позволяют реализовать гораздо больше.

Какой лучший способ начать изучать Ember.js? Есть ли онлайн-курсы, которые вы рекомендуете?

Я лучше усваиваю материал с помощью структурированного курса, чем просто экспериментируя самостоятельно, так как это заставляет меня изучать основы.

Прочитайте Ember.js Guides - Guides and Tutorials - Ember Guides

Также ознакомьтесь с https://guides.rubyonrails.org/

После того как я недавно начал разбираться в этом, я согласен с Джей @pfaffman.

Лучшее место для старта — это компоненты темы.

Вот несколько причин (другие могут привести более убедительные, а это мои, OTTOMH):

  • Компоненты темы легко разрабатывать, и изменения можно быстро увидеть без сложной настройки веб-разработки.

  • Компоненты темы очень мощные, с их помощью можно сделать многое, включая простое подключение библиотек JavaScript.

  • В компоненты темы легко добавлять собственный код JavaScript и селекторы, поэтому вы можете использовать инспектор для создания селекторов и вставки элементов, таких как div (ваши любимые div).

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

Это логичный путь для улучшения ваших навыков разработки в Discourse и освоения основ.

Извините, я, кажется, упустил этот пункт. Он значительно расширен, и здесь достаточно материала, чтобы погрузиться в него: Developing Discourse Themes & Theme Components

Моя лучшая рекомендация, дополняющая уже отмеченные в этой теме, — изучить множество тем и компонентов кода на Discourse · GitHub и попытаться понять, как они работают. Клонируйте их, ломайте, разбиритесь в том, что происходит. Именно так я учился, параллельно работая над небольшими проектами здесь и там.

Хорошим началом будет посмотреть на GitHub - literatecomputing/feverbee-engagement-theme: Theme component based on expert.feverbee.com · GitHub и очистить его, удалив все лишнее, что туда не относится. А затем отправить pull request. :slight_smile:

Я понимаю, что вы имеете в виду, @pfaffman. :grin: Тем не менее, я не думаю, что вам сейчас нужно, чтобы я чистил ваш код, но я согласен, что создание PR — отличная отправная точка. Сначала мне нужно разобраться с ресурсами, которые уже были упомянуты в этой ветке.

Моя главная задача сейчас — переключиться с моего опыта в стеке LAMP на то, как называется стек Discourse. LNPR (Linux, Nginx, Postgres, Ruby/Rails)? Ха-ха.

Не могу винить человека за попытку. :wink:

Но если серьезно, эта тема делает множество вещей, которые дают представление о возможностях тем. Возможность создать совершенно новый список тем — это удивительно. Привести её в порядок (там много кода, который просто не должен там быть, но когда я попытался его удалить, что-то сломалось, и в итоге я оставил всё как есть, вместо того чтобы искать, где я ошибся в закрывающей скобке или . . . в чём-то ещё), даже просто для себя, стало бы отличным упражнением. Чтобы вы лучше поняли контекст и могли оценить, насколько мои советы могут быть вам полезны, скажу, что я человек с дипломом по компьютерным наукам, который перестал изучать HTML примерно в 1998 году. Я теоретически понимаю, что может делать CSS, но до сих пор совершенно запутался в JavaScript и не понимаю, где заканчивается JavaScript и начинается Ember. Я часто пытаюсь внести изменения, которые, как мне кажется, будут тривиальными, но в итоге всё ломается.

Удачи!

Я тоже из той же среды LAMP (то есть WordPress). Эти вещи сложны, но их можно понять, если уделить им достаточно времени.