Hasta dónde podemos llevar la personalización de Discourse?

Me intriga saber hasta qué punto podemos personalizar Discourse, no solo la interfaz de usuario, sino también reorganizando elementos, agregando nuevas funciones, etc., sin que nada se rompa cuando Discourse se actualiza (o al menos, que no se rompa tanto).

Me encanta todo lo relacionado con Discourse, pero hay algunas cosas que sé que eventualmente querré implementar o cambiar. Me gustaría tener mi propia aplicación móvil, en lugar de depender de la de Discourse. Algo más personalizado y dedicado a mi comunidad.

Tampoco me gusta que los teléfonos móviles antiguos muestren el feo texto en Times New Roman y una versión muy limitada de Discourse. Entiendo que las cosas avanzan, pero me pregunto si realmente necesitábamos volver a ese aspecto poco atractivo para indicar que algo ya no está soportado. ¿Y romper el acceso a funciones que probablemente ya no existen, pero que son cruciales para una comunidad?

También quiero personalizar otras cosas que no sean solo la interfaz de usuario, implementar nuevas funciones, reorganizar elementos, etc. Básicamente, usar la base de datos y la mayor parte del “esqueleto” de Discourse, y hacerlo lo más parecido posible a mi propio estilo, en lugar de sentir que “es solo otro foro de Discourse, con colores diferentes”.

Supongo que mucho se puede personalizar mediante componentes, plugins, etc., pero me pregunto cuáles son los límites. Especialmente cuando se trata de que las cosas se rompan cuando Discourse se actualiza.

Esto es exactamente lo que estoy haciendo ahora mismo y, viniendo de un entorno de WordPress durante 15 años, es como viajar en el tiempo. Sin embargo, estoy empezando a aprender algunas cosas con la ayuda del temido ChatGPT y descubriendo que no es tan difícil si entiendes GitHub, puedes editar archivos y usar CSS, etc.

Sí, trabajo con Git/GitHub y tengo una comprensión “básica” de cómo funcionan las cosas (últimamente he estado aprendiendo más mientras desarrollo otros proyectos por mi cuenta). Supongo que se puede lograr mucho, pero siempre existe ese desafío: lo que construimos contra la versión XYZ de Discourse hoy, puede romperse mañana cuando se actualice, lo cual es una lástima, especialmente si no te das cuenta de qué se rompió…

Así que, personalizar lo mínimo posible se siente más seguro, aunque no tan “personalizado”. Supongo que se trata de decidir cuál es más valioso.

¿Estás usando ChatGPT o Codex? He estado usando Claude Code CLI en GitHub Codespaces y es un placer. Y como mantengo todo lo que quiero que Claude haga, cómo debe comportarse, etc., en el archivo CLAUDE.md, rara vez alucina, o al menos, no tanto. Ese archivo va creciendo a medida que encuentro nuevas cosas que quiero que Claude haga/no haga.

Eso debería ser una sola línea de CSS en un tema para cambiarlo.

Bastante, siempre que utilices los ganchos de extensión existentes.

¿Has visto los sitios en Discourse customers | Discourse - Civilized Discussion y https://discover.discourse.com/, como Epic Developer Community Forums y https://community.robotime.com/ ?

Para ser sincero, me deshice de Claude porque no generaba imágenes y no funcionaba bien con Open Router, y como tenía montones de suscripciones, cancelé todas excepto la de GPT.

Solo mencioné eso como parte del cambio general, de una plataforma que simplemente funcionaba, a que de repente deja de funcionar, o al menos no exactamente como solía hacerlo. Empecé a evitar ir a foros que usan Discourse por eso. Sé que eventualmente tendré que actualizar mi teléfono, pero este aún funciona, así que…

Este se ve bastante bien: https://forums.unrealengine.com/
Lo guardé en mis notas para referencia futura. ¡Gracias!
Hay otros que parecen interesantes, pero siempre siento que sé que es Discourse. Sé que estoy pensando demasiado en lugar de construir, pero solo me preguntaba hasta qué punto realmente podemos personalizarlo. Como dije, creo que se puede hacer mucho, especialmente cuando se trata de la interfaz de usuario. Me pregunto si las características seguirán funcionando bien cuando Discourse actualice. Tengo que hacer algunas pruebas.

Una profecía autocumplida aquí :slight_smile:

Casi nunca necesito imágenes, así que eso nunca fue un problema para mí. Y en las muy pocas ocasiones en que las necesité, le pedí a ChatGPT. El 50 % de las veces, dependiendo de lo que le pida, nunca obtengo algo que se asemeje remotamente a lo que tengo en mente, así que al final termino haciéndolo yo mismo en Photoshop.

Pero Claude Code me ha sido de gran ayuda. Súper rápido.

Si ChatGPT funciona para lo que tú haces, entonces esa es, sin duda, la herramienta adecuada. Mientras funcione, eso es lo que importa.

No es que crea que Discourse se vea mal, simplemente quiero darle más de mi propio estilo, incluso en cuanto a su estructura y a cómo se implementan y muestran algunas funciones.

De nuevo, tal vez estoy pensando demasiado, pero definitivamente necesito hacer algunas pruebas y ver cómo funciona.

Creo que se ha quedado atascado en el pasado con muchos de los temas, etc. De hecho, ya me quejé de esto hace un tiempo.

El otro problema es que los foros se verán igual, porque eso es lo que son: una lista de títulos. Mira Facebook, Reddit y X. Todas sus tarjetas de temas se parecen hasta cierto punto.

No soy un experto, pero desde mi punto de vista, Discourse es altamente personalizable. No solo eso, sino que los desarrolladores parecen crear constantemente nuevas y más fáciles formas de personalizarlo. Discourse también parece tener cuidado de proporcionar advertencias cuando habrá cambios que podrían afectar las cosas que la gente ha hecho para personalizarlo.

Las posibilidades existen para crear algo mucho más que «solo otro foro de Discourse, con colores diferentes» y realmente me asombra lo mucho que se puede cambiar usando solo componentes de temas y plugins proporcionados por el equipo de desarrollo oficial. Y como el personal de soporte te dirá, cualquier cosa en la interfaz está disponible a través de la API, lo que significa que si quieres «usar la base de datos y la mayor parte del «esqueleto» de Discourse», nada te lo impide.

Dicho todo esto… me gustan tus ideas mencionadas en el otro hilo sobre construir comunidad, compartir y dar a las personas un lugar para compartir. Esa es la base de lo que estoy tratando de hacer. También mencionaste que eres músico, un músico que quizás disfrute del desarrollo de software. Una vez que construyas un sitio web completamente a medida, serás responsable de mantenerlo y las cosas (relacionadas con Discourse y otras) se romperán y tendrás que dedicar tu propio tiempo o pagar a alguien para que lo arregle.

Inicia algunos nuevos temas. Usa solo una sola idea en cada tema. Dile al foro lo que quieres y pide sugerencias sobre cómo lograr tu idea. Desglosarlo en características individuales ayudará a las personas a hacer lluvia de ideas para soluciones, pero también te dará un enfoque más estructurado y te ayudará a definir tu objetivo con mayor claridad.

Echa un vistazo a ask.discourse.org

Es una IA construida específicamente para Discourse

y… no te ofendas, toma esto como un consejo sobre lo que vale tu propio tiempo, considera contratar a un desarrollador profesional. Hay varios que frecuentan este foro y el mercado es una categoría proporcionada específicamente para este tipo de consultas donde puedes proporcionar tu idea y los desarrolladores pueden pujar por realizar el trabajo

Sí, siempre digo que todo se puede hacer, de una u otra manera, cuando se trata de algo digital. Así que supongo que necesito hacer alguna investigación sobre esto y dar un paso a la vez. Supongo que el siguiente paso es recuperar mi Discourse. Lo tenía instalado en algún momento, pero luego decidí desinstalarlo hasta que estuviera listo para concentrarme de verdad en ello.

Sí, desde alrededor de 2001. Pero más recientemente, especialmente con la ayuda de Claude Code, he podido crear herramientas útiles para mí y, eventualmente, poner algunas a disposición de otros también.
No trato de ser un desarrollador ni gastar demasiado en ello, pero definitivamente es algo que disfruto. Ser creativo todo el tiempo puede ser muy agotador. Tener algo más binario como el software es muy gratificante.

Para nada ofendido. Cualquier comentario es valioso. Y estoy de acuerdo en que una de las cosas que he estado analizando con más frecuencia es cuánto vale mi tiempo para no gastarlo haciendo ciertas cosas y contratar a alguien más, y qué es lo que realmente disfruto hacer, independientemente del tiempo y el esfuerzo. Es por eso que desarrollar nuevas herramientas ha sido tan gratificante para mí. De hecho, disfruto viendo cómo las cosas se hacen realidad, así que nunca es tiempo perdido.

Sí, Internet se ha vuelto muy “genérico”. Creo que la mayor parte de esto se debe a que se prioriza la funcionalidad por encima del estilo. No que eso sea un problema, pero tener algo único también es importante.

Y estoy de acuerdo con tu otro tema. Hay mucho margen de crecimiento para Discourse. Una de las cosas que más me gustan de Discourse es que realmente se siente como una plataforma en crecimiento, con el equipo interactuando aquí, compartiendo la hoja de ruta con nosotros, etc. No es como una plataforma estéril donde nadie sabe lo que está pasando. Y eso es algo que valoro mucho aquí.

Es es, sin duda, una de las mejores plataformas de back end que he usado.

Hay muy pocos límites. La única limitación importante es que las plantillas no pueden sobrescribirse y necesitas añadir nuevas cosas a las vistas existentes mediante Plugin Outlets. Dicho esto, hacer eso en combinación con algo de CSS suele ser suficiente.

Puedes crear nuevas rutas y tener control total sobre cómo se estructuran.

El back end es más flexible.

Así que, utiliza las APIs oficiales tanto como sea posible y la reestructuración será más limitada, pero nunca eliminarás por completo el trabajo de mantenimiento.

No es razonable esperar que no haya mantenimiento… solo mira mi cuenta de GitHub y algunas de mis extensiones populares y verás muchos commits de “COMPATIBILIDAD:” :slight_smile:

Es una buena práctica mantener un servidor de staging donde puedas probar las actualizaciones y ver si alguna de tus personalizaciones falla: cuanto más personalizado sea tu sitio, mayor será la necesidad de algún tipo de instancia de staging, aunque el uso de una instancia de desarrollo puede ayudar.

Es es difícil decir qué tan “segura” es una personalización sin conocer los detalles… pero, en general, cuanto más personalices, más mantenimiento tendrás que realizar.

Si agregas algo como un componente personalizado a un punto de extensión de un plugin o reemplazas completamente un componente de Discourse… por lo general, estos deberían seguir funcionando porque estás insertando código personalizado en un punto de extensión (y tratamos de preservar estos puntos porque mucha gente los utiliza).

En CSS, deberías aprovechar las --variables existentes para cambiar cosas cuando sea posible, porque a veces tenemos que cambiar la estructura del contenido, pero incluso si lo hacemos, podemos reutilizar las mismas variables.

Así que este es un camino más seguro:

.d-header {
   --title-color--header: red;
}

Esto es menos seguro:

.d-header {
    .extra-info-wrapper .topic-link {
      color: red;
    }
}

Hemos estado alejando a la plataforma de los antiguos métodos de personalización que eran más propensos a romperse, como las sobrescrituras de plantillas y el uso de modifyClass. También estamos trabajando en APIs más estables… pero todo seguirá necesitando un poco de mantenimiento de vez en cuando.

Gracias por los comentarios.
Creo que debo reflexionar bien sobre ese servidor de preproducción. Sin duda, es un buen enfoque.

Por ahora, creo que el primer paso es instalar Discourse de nuevo, crear contenido y, cuando llegue el momento, empezar por lo sencillo, aquello que no requiera cambios importantes y pueda hacerse con componentes. Veré hasta dónde puedo llegar con ello. Después, empezaré a pensar en el servidor de preproducción.

¡Gracias!

Ese consejo sobre las variables es realmente valioso.
Supongo que solo necesito sentarme algún día, hacer una lista de todas las cosas que quiero cambiar/implementar y abordarlas una por una, empezando por las que se pueden modificar mediante componentes, para ver hasta dónde puedo llegar.

Es cierto,

Actualmente estoy realizando una ingeniería de estabilidad sistemática en Discourse,

y he utilizado algunos componentes de temas y he escrito otros por mi cuenta para personalizarlo, con el fin de adaptarlo a las costumbres culturales de mis usuarios locales.