Hola @leighno5
Mis pensamientos para ti, basados en mi experiencia personal, son que escribir plugins en Ruby para lograr lo que estás haciendo en tu “fork” es mucho más fácil hacerlo mediante un plugin, siempre y cuando entendamos Ruby y Rails lo suficiente como para escribir fácilmente un plugin para Discourse (o modificar cualquier clase de Rails).
Si no entendemos Rails y Ruby lo suficientemente bien como para escribir un plugin de Discourse, mi experiencia es que bifurcar Discourse y hacer modificaciones en el núcleo es un camino “equivocado”.
Supongo que la analogía sería esta (perdona por esta idea tan sencilla):
“Alguien encuentra difícil caminar; así que decide correr en su lugar.”
Déjame explicarlo, si no te importa:
Antes de empezar a escribir aplicaciones en Rails (nada que ver con Discourse) y de intentar escribir plugins para Discourse, me sentía un poco perdido; incluso creo que estaba un poco molesto con Discourse. Es como cuando quieres golpear una pelota de golf por primera vez; no va en línea recta y requiere mucho trabajo para que la pelota caiga en el medio del fairway. Bifurcar Discourse es como sacar el driver grande en el campo de práctica antes de saber hacer chips y putts con los hierros cortos.
Tomé un descanso de las modificaciones en el núcleo de Discourse (hace muchos meses) y trabajé un tiempo construyendo varias aplicaciones de Rails desde cero; y entonces (y solo entonces) empecé a desarrollar un conocimiento “instintivo” sobre Rails. Después de eso, cuando decidí modificar Discourse (actualmente ejecuto 6 plugins personalizados que escribí en producción para Discourse), todo se volvió intuitivo y los plugins que modificaban el núcleo de Ruby se volvieron demasiado simples.
Ruby es muy flexible. Podemos sobrescribir cualquier clase, cualquier objeto. Podemos redefinir cada aspecto de Ruby. Con algo de experiencia, empezamos a pensar: “¡WOW!, no sabía que Ruby era tan flexible (y poderoso)” y empezamos a “volvernos peligrosos” porque podemos volar como Superman con Ruby y Rails. En ese momento, estamos al principio de nuestro viaje con Ruby y Rails, ¡no al final!
Con el conocimiento de Ruby y Rails que he adquirido en 2020, sabiendo lo que sé ahora, nunca bifurcaría Discourse y haría cambios en el núcleo de Ruby y Rails como estás proponiendo, porque los plugins son simplemente demasiado fáciles para sobrescribir y modificar las clases de Ruby, cuando entendemos los fundamentos de las clases de Ruby y los conceptos básicos de la metaprogramación.
Creo que lo que estoy diciendo, disculpa ser tan directo, es que si alguien piensa que necesita modificar el núcleo de Discourse para hacer algunos cambios menores en Ruby, entonces no entiende Ruby y Rails lo suficiente; porque si lo hiciera, no modificaría el núcleo y simplemente escribiría un plugin rápido para sobrescribir las clases y disfrutaría del monkey-patching.
Por otro lado, si quisiera hacer algo loco y ser infeliz, como reemplazar EmberJS de Discourse por React y Ant Design, ¡entonces bifurcar sería la única opción! Sin embargo, en mi opinión, “Discourse” no está definido por las “librerías de Javascript”. Discourse está definido por las habilidades del equipo de desarrollo principal (las personas) y su atención al detalle, servicio al cliente, enfoque de equipo en el desarrollo de código de código abierto, su pipeline de características SPA, y todo su arduo trabajo. Sería un poco loco (en mi mente) desechar todo ese poder intelectual solo porque quizás nos guste más Ant Design (con React) o VueJS que Ember.
Esto es igualmente cierto, e incluso más, si solo vamos a modificar el núcleo de Discourse aquí y allá. Sería un poco “locura” bifurcarlo para hacer eso, desechar a las “personas” que son el “verdadero” Discourse (no el código).
Solo hablo desde mi viaje personal en 2020 aprendiendo Ruby y Rails. Ahora, lo básico se está volviendo fácil y me estoy volviendo “peligroso”, LOL. Puedo “hacer monkey-patching con cualquier cosa”, lo cual no siempre es bueno; y para eso están los plugins de Discourse.
Mantén el núcleo sólido como una roca y disfruta “jugando” con Discourse mediante plugins.
Espero que esto ayude.
Nota: mientras escribía esta respuesta, tú escribiste:
Esto de alguna manera confirma mi punto, ¿no crees?
Escribir un “plugin” en Discourse es escribir “código Ruby” (en un nivel) y para otros va mucho más profundo (en EmberJS).
Antes de empezar a escribir plugins para Discourse, mi consejo amigable, aunque quizás parezca sin valor para ti, es que primero desarrolles algunas aplicaciones de Ruby on Rails. Aprende a moverte por Ruby y Rails, al menos lo básico; después de eso, habrás respondido tu propia pregunta anterior.
Esta mañana estuve en una llamada de conferencia con un cliente durante tres horas revisando una aplicación de Rails, validaciones, modelos, etc., y luego, mientras tomaba un descanso después de codificar algunas de las acciones derivadas de la llamada, leí tu publicación.
En mi opinión, el camino más corto para escribir plugins de Discourse es aprender Rails primero.
¡Espero que esto ayude!