Ciao @leighno5,
Dal mio punto di vista e basandomi sulla mia esperienza personale, scrivere plugin in Ruby per fare ciò che stai facendo nel tuo “fork” è molto più semplice se si parte da un plugin, una volta che si comprende Ruby e Rails a sufficienza da poter scrivere facilmente un plugin per Discourse (o modificare qualsiasi classe di Rails).
Se non si conoscono abbastanza bene Rails e Ruby da poter scrivere un plugin per Discourse, la mia esperienza è che forkare Discourse e intervenire sul core è un approccio “fuori strada”.
Immagino che l’analogia sia questa (scusa per l’idea così semplice):
“Qualcuno trova difficile camminare; quindi decide di correre invece.”
Fammi spiegare, se non ti dispiace:
Prima di iniziare a scrivere applicazioni Rails (niente a che vedere con Discourse) e di provare a scrivere plugin per Discourse, ero un po’ perso; e, credo, ero anche un po’ infastidito da Discourse. È come quando si vuole colpire una pallina da golf per la prima volta: non va dritta e ci vuole molto lavoro per colpirla al centro del fairway. Forkare Discourse è come tirare fuori il driver lungo dal range di pratica prima di saper fare chip e putt con i ferri corti!
Ho preso una pausa dal lavorare su Discourse (molti mesi fa) e ho lavorato per un po’ costruendo effettivamente diverse applicazioni Rails da zero; e solo allora ho iniziato a sviluppare una conoscenza “istintiva” di Rails. Dopo di che, quando ho deciso di modificare Discourse (attualmente sto eseguendo in produzione 6 plugin personalizzati che ho scritto per Discourse), tutto è diventato intuitivo e i plugin che modificavano il core di Ruby sono diventati troppo semplici.
Ruby è molto flessibile. Possiamo sovrascrivere qualsiasi classe, qualsiasi oggetto. Possiamo ridefinire ogni aspetto di Ruby. Con un po’ di esperienza, iniziamo a dire “WOW”, non sapevo che Ruby fosse così flessibile (e potente), e iniziamo a “diventare pericolosi” perché possiamo volare come Superman con Ruby e Rails. Siamo all’inizio del nostro viaggio in Ruby e Rails in quel momento, non alla fine!
Con le conoscenze di Ruby e Rails che ho acquisito nel 2020, sapendo quello che so ora, non forkerei mai Discourse e apporterei modifiche al core di Ruby e Rails come stai proponendo tu, perché i plugin sono semplicemente troppo facili per sovrascrivere e modificare le classi di Ruby, quando si comprendono le basi delle classi di Ruby e le basi della metaprogrammazione.
Credo di voler dire, scusa per essere così diretto, che se qualcuno pensa di dover hackerare il core di Discourse per apportare alcune modifiche minori a Ruby, allora non conosce abbastanza Ruby e Rails; perché se lo conoscesse, non hackererebbe il core e scriverebbe semplicemente un rapido plugin per sovrascrivere le classi e amerebbe il monkey-patching.
D’altra parte, se volessi fare qualcosa di folle e diventare infelice, come sostituire EmberJS di Discourse con React e Ant Design, allora il fork sarebbe l’unica strada da percorrere! Tuttavia, a mio avviso, “Discourse” non è definito dalle “librerie Javascript”. Discourse è definito dalle competenze del team di sviluppo core (le persone) e dalla loro attenzione ai dettagli, dal servizio clienti, dall’approccio di squadra allo sviluppo di codice open source, dalla loro pipeline di funzionalità SPA e da tutto il loro duro lavoro! Sarebbe un po’ pazzo (a mio avviso) buttare via tutto quel potenziale intellettuale solo perché potremmo preferire Ant Design (con React) o VueJS rispetto a Ember.
La stessa cosa è ancora più vera se stiamo solo modificando il core di Discourse qui e là! Sarebbe un po’ “matto” forkarlo per farlo, buttando via le “persone” che sono il “vero” Discourse (non il codice).
Sto parlando solo del mio viaggio personale nel 2020 nell’apprendimento di Ruby e Rails. Ora, le cose stanno diventando facili (le basi) e sono “pericoloso”, LOL. Posso “giocare con il monkey patching su qualsiasi cosa”, il che non è sempre una buona cosa; ed è proprio per questo che servono i plugin di Discourse.
Mantieni il core solido come una roccia e divertiti a “giocare” con Discourse tramite i plugin.
Spero che questo aiuti.
Nota: mentre scrivevo questa risposta, hai scritto:
Questo in un certo senso conferma il mio punto, non credi?
Scrivere un “plugin” in Discourse significa scrivere “codice Ruby” (a un certo livello) e per altri va molto più a fondo (in EmberJS).
Prima di iniziare a scrivere plugin per Discourse, il mio consiglio amichevole, che potrebbe sembrarti privo di valore, è di sviluppare prima alcune applicazioni Ruby on Rails. Impara a muoverti tra Ruby e Rails, almeno le basi; dopo di che, avrai già risposto alla tua stessa domanda qui sopra.
Il percorso più breve per scrivere plugin per Discourse, a mio avviso, è imparare prima Rails.
Spero che questo aiuti!