Vorrei iniziare a sviluppare per Discourse, da dove dovrei cominciare?

Molti anni fa sviluppavo plugin per una piattaforma di forum legacy basata su PHP e MySQL. Ero molto soddisfatto di alcune delle cose che riuscivo a realizzare, e lo erano anche i miei membri.

Non ho mai lavorato con Ruby on Rails prima d’ora (a parte le difficoltà incontrate durante il processo di importazione dello script per trasferire i miei dati su Discourse la prima volta :joy:).

Immagino che, prima di immergermi nella documentazione e nelle guide di sviluppo presenti qui, abbia bisogno di acquisire alcune nozioni di base.

Dovrei imparare prima Ruby on Rails?

Devo anche imparare Ember.js? A dire il vero, non l’ho mai toccato, ma so che è utilizzato nel core di Discourse.

Sono anche nuovo a Postgres.

Apprezzerei qualsiasi consiglio e suggerimento sui prossimi passi da compiere.

Ottimo!

Ci sono alcuni post utili a riguardo. Ti linkerò al mio, poiché fa riferimento a questi: How can I make my own Discourse plugins? - #2 by merefield

(Anche se personalmente ti consiglierei ora VSCode)

Un modo per iniziare è contribuire al supporto di un plugin esistente inviando PR (è così che ho iniziato io), partendo da piccoli problemi e poi passando a risolvere questioni più complesse e magari aggiungendo nuove funzionalità.

Se hai un’idea per un plugin o un componente tema abbastanza semplice, inizia da quello. Gli obiettivi creativi personali possono essere molto motivanti.

Non sottovalutare la difficoltà all’inizio: inizia in modo semplice, perché l’ultima cosa che vuoi è perdere la motivazione. Queste cose possono essere difficili, soprattutto quando si vogliono apportare modifiche fondamentali.

Sii paziente. EmberJS è un animale particolarmente ostico da comprendere.

Il mio consiglio è di iniziare con i componenti tema e passare ai plugin un po’ più tardi.

Usa sempre l’enorme libreria di plugin e componenti tema esistenti come aiuto. Forse qualcuno ha già risolto qualcosa di simile? Come l’ha fatto? Dai un’occhiata al codice. Segui sempre gli standard stabiliti dal core di Discourse. Il codice sorgente di Discourse è anche una risorsa preziosissima.

Forse il miglior consiglio è: fallo! L’unico modo per imparare è davvero sporcarsi le mani. Non aver paura di sbagliare e non lasciare mai che la frustrazione ti fermi. Continua a lavorare e alla fine funzionerà. Cerca di risolvere le cose da solo il più possibile, ma puoi sempre chiedere aiuto agli altri quando ne hai assolutamente bisogno.

Ho passato molto tempo a imparare Rails. Ma molte cose accadono dal lato Ember/JavaScript. Il mio consiglio è di iniziare da lì con le funzionalità che puoi implementare nei componenti del tema. Sono molto più sicuri, più facili da usare e possono fare davvero tantissimo.

Qual è il modo migliore per iniziare a imparare Ember.js? Consigliate qualche corso online?

Imparo meglio con un corso strutturato piuttosto che sperimentare da solo, perché mi costringe a imparare i fondamenti.

Leggi Ember.js Guides - Guides and Tutorials - Ember Guides

Considera anche https://guides.rubyonrails.org/

Dopo aver iniziato a occuparmene recentemente, concordo con Jay @pfaffman.

Il punto di partenza migliore è con i componenti del tema.

Alcuni motivi (altri potrebbero darne di migliori, ecco i miei, a memoria):

  • I componenti del tema sono facili da sviluppare e le modifiche possono essere visualizzate rapidamente senza bisogno di un ambiente di sviluppo web avanzato.

  • I componenti del tema sono potenti e si può fare molto con essi, incluso l’aggiunta semplice di librerie javascript.

  • I componenti del tema permettono di aggiungere facilmente il proprio codice JavaScript e selettori, così puoi usare comodamente l’ispettore per creare un selettore e inserire elementi come i div (i tuoi div preferiti).

Dopo aver preso confidenza con i componenti del tema e averci divertito, puoi iniziare ad approfondire lo sviluppo dei plugin.

È un modo logico e progressivo per migliorare le tue competenze nello sviluppo di Discourse e imparare le basi.

Scusa, credo di aver saltato questo, che è stato notevolmente ampliato: c’è materiale a sufficienza per tenerti impegnato: Developing Discourse Themes & Theme Components

Il mio miglior consiglio, oltre a quelli già menzionati in questo argomento, è leggere il codice dei molti temi/componenti su https://github.com/discourse e cercare di capire cosa succede. Clonali, rompili, scopri come funzionano. È così che ho imparato, lavorando su piccoli progetti qua e là.

Un buon punto di partenza sarebbe dare un’occhiata a GitHub - literatecomputing/feverbee-engagement-theme: Theme component based on expert.feverbee.com · GitHub e ripulirlo eliminando tutto il materiale superfluo che non vi appartiene. Poi invia una PR. :slight_smile:

Vedo cosa stai facendo, @pfaffman. :grin: Detto questo, non credo che tu voglia che io pulisca il tuo codice per ora, ma concordo che inviare PR potrebbe essere un ottimo punto di partenza. Prima di tutto, devo approfondire alcune delle risorse già condivise in questo thread.

La mia sfida più grande al momento sarà passare dal mio background LAMP a quello che viene chiamato lo stack di Discourse. LNPR (Linux, Nginx, Postgres, Ruby/Rails)? Haha.

Non si può biasimare un tizio che ci prova. :wink:

Ma sul serio, quel tema fa un sacco di cose che ti danno un’idea di ciò che i temi possono fare. Poter creare un’intera nuova lista di argomenti è incredibile. Ripulirlo (c’è un mucchio di codice che semplicemente non c’entra, ma quando ho provato a rimuoverlo ho rotto qualcosa e alla fine l’ho lasciato piuttosto che cercare dove avessi sbagliato una parentesi chiusa o… qualcosa del genere), anche solo per te stesso, sarebbe un ottimo esercizio. Per darti più contesto e capire se il mio consiglio potrebbe esserti utile, sappi che parlo io, laureato in informatica, che ho smesso di imparare l’HTML intorno al 1998. Capisco teoricamente cosa può fare il CSS, ma rimango completamente perplesso riguardo a JavaScript e non capisco dove finisce JavaScript e inizia Ember. Spesso provo a fare modifiche che penso saranno banali e finisco per mandare in tilt tutto.

In bocca al lupo!

Anch’io provengo dallo stesso background LAMP (cioè WordPress). Queste cose sono difficili, ma si possono comprendere se ci si dedica abbastanza tempo.