Gostaria de começar a desenvolver para o Discourse, por onde devo começar?

Há muitos anos, eu desenvolvia plugins para uma plataforma de fóruns legada que usava PHP e MySQL. Fiquei muito satisfeito com algumas das coisas que consegui fazer, e meus membros também.

Nunca trabalhei com Ruby on Rails antes (com exceção de ter lutado no processo de script de importação para trazer meus dados para o Discourse pela primeira vez :joy:).

Suponho que, antes de mergulhar em parte da documentação e dos guias de desenvolvimento aqui, eu precise primeiro aprender o básico.

Devo aprender Ruby on Rails primeiro?

Preciso também aprender Ember.js? Admito que nunca toquei nisso, mas sei que ele é utilizado no núcleo do Discourse.

Também sou novo no Postgres.

Qualquer conselho e sugestão de próximos passos serão muito bem-vindos.

Ótimo!

Existem alguns posts úteis sobre isso. Vou te enviar o meu, já que ele faz referência a esses. How can I make my own Discourse plugins? - #2 by merefield

(Embora eu pessoalmente recomende o VSCode atualmente)

Uma maneira de começar é ajudar a dar suporte a um plugin existente enviando PRs (foi assim que eu comecei), começando de forma simples com problemas menores e, em seguida, avançando para resolver questões mais complexas e talvez adicionar novos recursos.

Se você tiver uma ideia para um plugin ou Componente de Tema que seja razoavelmente simples, comece por ela. Metas criativas pessoais podem ser muito motivadoras.

Não se comprometa com mais do que consegue lidar no início e comece de forma simples, pois a última coisa que você quer é perder a motivação: isso pode ser difícil, especialmente quando se deseja fazer mudanças fundamentais.

Seja paciente. O EmberJS é um bicho particularmente complicado de dominar.

Meu conselho é começar com Componentes de Tema e só mais tarde partir para os Plugins.

Sempre use a enorme biblioteca de plugins e Componentes de Tema existentes como ajuda. Talvez alguém já tenha resolvido algo semelhante anteriormente? Como eles fizeram? Dê uma olhada no código. Sempre siga os padrões estabelecidos pelo núcleo do Discourse. O código-fonte do Discourse também é um recurso inestimável.

Talvez o melhor conselho seja: apenas faça! A única maneira de aprender é realmente se sujar as mãos. Não tenha medo de cometer erros e nunca deixe a frustração te impedir. Continue insistindo e as coisas eventualmente funcionarão. Tente resolver as coisas por conta própria o máximo possível, mas você sempre pode pedir ajuda a outras pessoas quando realmente precisar.

Demorei muito tempo para aprender o Rails. Mas muita coisa acontece no lado do Ember/JavaScript. Meu conselho é começar por aí, com as coisas que você pode fazer nos componentes de tema. Eles são muito mais seguros, mais fáceis de usar e conseguem fazer muito mais.

Qual é a melhor maneira de começar a aprender Ember.js? Vocês recomendam algum curso online?

Eu aprendo melhor com um curso estruturado do que apenas experimentando por conta própria, porque isso me obriga a aprender os fundamentos.

Leia Ember.js Guides - Guides and Tutorials - Ember Guides

Considere também https://guides.rubyonrails.org/

Depois de começar a me aprofundar nisso recentemente, concordo com o Jay @pfaffman.

O melhor lugar para começar é com componentes de tema

Algumas razões (outros podem dar razões melhores, aqui estão as minhas, OTTOMH):

  • componentes de tema são fáceis de desenvolver e as mudanças podem ser vistas rapidamente sem uma configuração super avançada de desenvolvimento web

  • componentes de tema são poderosos e muito pode ser feito com eles, incluindo a adição fácil de bibliotecas javascript

  • componentes de tema são fáceis para adicionar seu próprio código Javascript e seletores, então você pode facilmente usar o inspetor para ajudá-lo a criar um seletor e inserir elementos como divs (suas divs favoritas).

Depois, quando você se familiarizar e se divertir com componentes de tema, você pode começar a se aprofundar no desenvolvimento de plugins.

É uma maneira lógica / progressão para melhorar suas habilidades de desenvolvimento no Discourse e aprender o básico.

Desculpe, acho que esqueci de incluir este, que foi bastante expandido. Há bastante material aqui para você se dedicar: Developing Discourse Themes & Theme Components

Minha melhor recomendação, além das ótimas já mencionadas neste tópico, é ler o código de vários temas/componentes em Discourse · GitHub e tentar entender o que está acontecendo. Clone-os, quebre-os, descubra como funcionam. Foi assim que aprendi, junto com o trabalho em pequenos projetos aqui e ali.

Um bom lugar para começar seria dar uma olhada em GitHub - literatecomputing/feverbee-engagement-theme: Theme component based on expert.feverbee.com · GitHub e limpá-lo, removendo tudo o que é extra e não pertence ali. Depois, envie um PR. :slight_smile:

Vejo o que você está fazendo aí, @pfaffman. :grin: Dito isso, não acho que você queira que eu limpe seu código agora, mas concordo que enviar PRs pode ser um ótimo ponto de partida. Primeiro, preciso me aprofundar em alguns dos recursos já compartilhados neste tópico.

Meu maior desafio agora será migrar do meu background em LAMP para o que quer que seja a pilha do Discourse. LNPR (Linux, Nginx, Postgres, Ruby/Rails)? Haha.

Não dá para culpar um cara por tentar. :wink:

Mas, falando sério, esse tema faz várias coisas que te dão uma ideia do que os temas podem fazer. Conseguir criar uma lista de tópicos totalmente nova é incrível. Arrumá-lo (há toneladas de código que simplesmente não pertencem ali, mas quando tentei removê-lo, quebrei coisas e acabei deixando como estava, em vez de descobrir onde eu tinha estragado um parêntese de fechamento ou… algo assim), mesmo que só para você, seria um ótimo exercício. Para te dar mais contexto e saber se meu conselho provavelmente será útil para você, isso vem de alguém com diploma em Ciência da Computação que parou de aprender HTML por volta de 1998. Entendo teoricamente o que o CSS pode fazer e continuo bastante confuso quanto ao JavaScript, sem entender onde o JavaScript termina e o Ember começa. Frequentemente tento fazer mudanças que acho que serão triviais e acabo quebrando tudo.

Boa sorte!

Eu também tenho a mesma experiência com LAMP (ou seja, WordPress). Essas coisas são difíceis, mas podem ser compreendidas se você dedicar tempo suficiente a elas.