Hace muchos años desarrollaba complementos para una plataforma de foros heredada que usaba PHP y MySQL. Me sentí muy satisfecho con algunas de las cosas que pude hacer, y mis miembros también.
Nunca había trabajado con Ruby on Rails antes (salvo por luchar con el proceso del script de importación para conseguir que mis datos entraran en Discourse por primera vez ).
Supongo que, antes de adentrarme en parte de la documentación y las guías de desarrollo que hay aquí, necesito primero cubrir algunos conceptos básicos.
¿Debería aprender Ruby on Rails primero?
¿También necesito aprender Ember.js? Admito que nunca lo he tocado, pero entiendo que se utiliza en el núcleo de Discourse.
También soy nuevo en Postgres.
Cualquier consejo y los siguientes pasos sugeridos serán muy apreciados.
Una forma de empezar es ayudar a mantener un plugin existente enviando PRs (así es como yo empecé): comienza con problemas sencillos y luego pasa a resolver cuestiones más complejas e incluso a añadir nuevas funcionalidades.
Si tienes una idea para un plugin o un componente de tema que sea razonablemente sencillo, empieza por ahí. Los objetivos creativos personales pueden ser muy motivadores.
No te metas en algo más grande de lo que puedes manejar al principio; empieza con cosas sencillas, porque lo último que quieres es perder la motivación: esto puede ser difícil, especialmente cuando quieres hacer cambios fundamentales.
Ten paciencia. EmberJS es un animal particularmente complicado de dominar.
Mi consejo es que empieces con componentes de tema y luego, más adelante, pases a los plugins.
Aprovecha siempre la enorme biblioteca de plugins y componentes de tema existentes como ayuda. ¿Quizás alguien ya resolvió algo similar? ¿Cómo lo hizo? Echa un vistazo al código. Sigue siempre los estándares que establece el núcleo de Discourse. El código fuente de Discourse también es un recurso invaluable.
Quizás el mejor consejo sea: ¡simplemente hazlo! La única forma de aprender es ensuciarse las manos, de verdad. No tengas miedo a cometer errores y no dejes que la frustración te detenga. Sigue adelante y, al final, las cosas funcionarán. Intenta resolver las cosas por tu cuenta tanto como sea posible, pero no dudes en pedir ayuda a otros cuando lo necesites realmente.
Pasé mucho tiempo aprendiendo Rails. Pero ocurren muchas cosas en el lado de Ember/JavaScript. Mi consejo sería empezar por ahí con cosas que puedas hacer en los componentes del tema. Son mucho más seguros, más fáciles de usar y pueden hacer muchísimo más.
Después de empezar a adentrarme en esto recientemente, estoy de acuerdo con Jay @pfaffman.
El mejor lugar para empezar es con componentes del tema
Algunas razones (otros pueden dar mejores razones, aquí están las mías, OTTOMH):
Los componentes del tema son fáciles de desarrollar y los cambios se pueden ver rápidamente sin necesidad de una configuración web súper avanzada.
Los componentes del tema son potentes y se puede hacer mucho con ellos, incluyendo añadir librerías javascript fácilmente.
Los componentes del tema son fáciles para añadir tu propio código Javascript y selectores, por lo que puedes usar fácilmente el inspector para ayudarte a crear un selector e insertar elementos como divs (tus divs favoritos).
Luego, después de familiarizarte con los componentes del tema y divertirte con ellos, puedes empezar a profundizar en el desarrollo de plugins.
Es una forma lógica / progresión para mejorar tus habilidades de desarrollo en Discourse y aprender los fundamentos.
Mi mejor recomendación, además de las excelentes que ya se han mencionado en este tema, es que leas el código de muchos temas y componentes en Discourse · GitHub e intentes entender qué está sucediendo. Clónalos, rómpelos y descubre cómo funcionan. Es así como yo aprendí, junto con trabajar en pequeños proyectos de vez en cuando.
Veo lo que estás haciendo, @pfaffman. Dicho esto, no creo que quieras que limpie tu código todavía, pero estoy de acuerdo en que enviar PRs podría ser un gran punto de partida. Primero, necesito profundizar en algunos de los recursos que ya se han compartido en este hilo.
Mi mayor desafío en este momento será pasar de mi experiencia en LAMP a lo que se conoce como la pila de Discourse. ¿LNPR (Linux, Nginx, Postgres, Ruby/Rails)? Jaja.
Pero en serio, ese tema hace muchas cosas que te dan ideas sobre lo que pueden hacer los temas. Poder crear una lista de temas completamente nueva es increíble. Limpiarlo (hay un montón de código que simplemente no pertenece, pero cuando intenté eliminarlo, rompií cosas y finalmente lo dejé así en lugar de buscar dónde había cometido un error con un paréntesis de cierre o… algo así), incluso solo para ti mismo, sería un ejercicio bastante bueno. Para darte más contexto y saber si mi consejo probablemente te sea útil, esto viene de alguien con un título en Ciencias de la Computación que dejó de aprender HTML alrededor de 1998. Entiendo teóricamente lo que puede hacer CSS, pero sigo completamente desconcertado por JavaScript y no entiendo dónde termina JavaScript y dónde comienza Ember. Frecuentemente intento hacer cambios que creo que serán triviales y termino rompiendo el mundo.
Yo también provengo de una experiencia similar con LAMP (es decir, WordPress). Esto es difícil, pero se puede entender si le dedicas suficiente tiempo.