Lascia che io amplifichi quanto detto da @Stephen.
Come sviluppatore di plugin, posso dirti che mantenere il codice aggiornato per garantire la compatibilità con il core non è un compito banale e richiede una strategia attenta. I plugin vengono solitamente mantenuti in linea con il ramo “tests-passed”. Potresti optare per un ramo più lento, ma ciò significherebbe che anche i tuoi clienti lo sarebbero. Va bene, comunque. Tuttavia, avrai bisogno di un tempo di anticipo per aggiornare la tua applicazione dopo ogni rilascio stabile. Questo comporterà molto lavoro e potrebbe causare ritardi significativi negli aggiornamenti per i clienti.
Come i plugin, corri sempre il rischio che qualcosa si rompa dopo un cambiamento significativo nel core.
Affermi che il core di Discourse è stabile. Forse più di quanto non lo fosse all’inizio, ma dai un’occhiata accurata al repository: si muove (anche se gran parte di ciò riguarda l’app web). Basta guardare quanti commit vengono effettuati ogni giorno. Osserva il numero di PR aperte. Prendi un solo file, ad esempio Topic.hbs, e considera come intendi stare al passo solo con quello? Anche il fork del codice base di Discourse viene sconsigliato proprio per questa sfida. E si tratterebbe di una riscrittura nativa?
Userai solo la loro API? Allora va bene, ma come implementerai i plugin più popolari? Alcuni di essi apportano modifiche visive significative, molte delle quali utilizzano il monkey-patching con, ad esempio, JQuery o plugin outlet, che non potrai riutilizzare se passerai a una soluzione nativa. Dovrai reimplementarli con codice nativo?
I plugin sono solo la punta dell’iceberg. Ciò che proponi presumibilmente copre l’intera gamma delle funzionalità front-end per gli utenti. Tutto questo dovrà essere testato, con casi di test. Solo a pensarci fa impressione.
E com’è grande il tuo team? Ancora una volta, guarda quanti sviluppatori stanno facendo commit sul core. Aggiungi la popolazione degli autori di plugin inclusi nel perimetro. Questo ti dà un’altra metrica per la dimensione della sfida.
Dovrai avere una velocità che tenga il passo con i rilasci di Discourse (!), altrimenti tutti i tuoi clienti inizieranno a sentirsi bloccati rispetto alle nuove funzionalità.
Dovrai giustificare ogni ora che trascorri e recuperarla in termini di ricavi (e va bene, devi mettere il cibo in tavola come tutti noi).
Comunque, penso che potresti provare a implementare questa soluzione con l’obiettivo di crearne una demo. Inizierei con “solo” l’app core. Questo ti darà rapidamente un’idea di quanto sia grande il compito. Oppure, conta semplicemente quante chiamate API dovrai supportare.
Sono sicuro che tu abbia già pensato a tutto questo. Non voglio essere negativo, ma stai proponendo un lavoro considerevole, da svolgere in modo continuo e brutalmente incessante.
Che ne dici di guardare l’app ufficiale e vedere cosa puoi fare con quella?