# Discourse

Discourse es un sistema de foros y listas de correo de código abierto creado en 2013 por Jeff Atwood, Robin Ward y Sam Saffron. La aplicación funciona con Ember.js y Ruby on Rails. PostgreSQL es el sistema de gestión de bases de datos.
Desde el punto de vista de la usabilidad, Discourse se separa de la manera convencional en la que los foros suelen funcionar. Incluye funcionalidades popularizadas recientemente por las principales redes sociales. Estas funcionalidades incluyen, por ejemplo, desplazamiento infinito, actualizaciones en tiempo real, enlaces extendidos y arrastrar y soltar para adjuntar. Sin embargo, el proyecto tiene un objetivo principalmente social y no técnico: mejorar la calidad de los debates en internet por medio de un mejor software para foros.
El código fuente se ofrece bajo la licencia Licencia Pública General de GNU versión 2. Por lo tanto, cualquiera alojar Discourse en su servidor. Además, la empresa de los fundadores ofrece servicios de alojamiento especializado en foros de Discourse, y en julio de 2020 daban servicio a más de 1500 foros. En una entrevista en mayo de 2017, el cofundador Jeff Attwood mencionó que el beneficio mensual era de aproximadamente 120 000 dólares. Con el beneficio obtenido de este servicio, la empresa paga los salarios de sus empleados a tiempo completo, que mantienen el software y desarrollan nuevas funcionalidades. Todo el mundo se beneficia, incluyendo las personas que alojen Discourse en sus servidores. Esto es un ejemplo de un modelo de negocio para software de código abierto, donde una empresa ofrece servicios profesionales sobre su programa de código abierto.
Discourse ha recibido inversiones de First Round Capital y Greylock Partners. En agosto de 2021, la empresa que desarrolla Discourse (Civilized Discourse Construction Kit) anunció que había conseguido 20 millones de dólares en inversiones de empresas de capital de riesgo.

## Requisitos de instalación

El único método oficial de instalación en entornos de producción es a través de imágenes de Docker para GNU/Linux x86_64. Discourse funciona a través de un script lanzadera para configurar los contenedores, y también incluye un complemento para el foro que permite a los administradores actualizar Discourse y hacer copias de seguridad desde la interfaz web.
La imagen de Docker incluye el servidor web (basado en nginx y Unicorn), PostgreSQL como sistema de gestión de bases de datos, Redis para el caché y Sidekiq para tareas en segundo plano. El script lanzadera lo ejecuta todo en un mismo servidor, pero es posible configurarlo para que se ejecuten en servidores distintos. Los desarrolladores de Discourse no dan soporte oficial para otras formas de ejecutar el sistema de foros. Como excepción, sí dan soporte a usar un servidor web separado con un balanceador de carga para que Discourse pueda funcionar junto a otra web en el mismo dominio.
Discourse también necesita un servidor de correo, pero no incluye uno con la instalación. Los desarrolladores recomiendan comprar acceso a un servicio de servidores de correo con buena reputación para asegurar que los mensajes de correo lleguen lo más rápido posible a las bandejas de entrada de los usuarios. También permite recibir correos para, por ejemplo, permitir que los usuarios respondan a un mensaje respondiendo al correo electrónico de notificación (aunque no es obligatorio activarlo). Para ello, incluye una imagen de Docker opcional con un servidor de correo que solo recibe mensajes, aunque también es posible conectarse con POP3 o IMAP a servidores de correo externos.

## Funcionalidades

Discourse ha sido diseñado desde el principio para funcionar con dispositivos con pantalla táctil de alta resolución, gracias a un diseño especial para móviles.
Los usuarios reciben notificaciones en tiempo real cuando otra persona les responda directamente, mencione, mande un mensaje personal o enlace a alguno de sus mensajes. Los nuevos mensajes y temas aparecen en las pantallas conforme se publican en tiempo real.
Para crear un tema o responder, Discourse ofrece un editor flotante que permite escribir a la vez que se lee el foro por detrás, y permite incluso navegar a otros temas y mensajes sin cerrar el editor. Los borradores se van guardando automáticamente para evitar que los usuarios pierdan su trabajo debido a un cierre accidental del navegador.
Los temas se pueden anclar arriba del todo en la lista de todos los temas o en una única categoría, e incluyen un resumen corto del contenido del tema. También es posible transformar un tema a un encabezado y que aparezca en la parte superior de todas las páginas. El estilo de los encabezados se puede personalizar para que coincidan con la estética del foro. Los usuarios pueden elegir dejar de ver los encabezados en cualquier momento. También es posible añadir un aviso no ocultable para situaciones urgentes.
Es posible adjuntar imágenes arrastrándolas y soltándolas en el editor o pegándolas. El sistema genera una previsualización de las imágenes grandes, y al pulsar sobre ella se abre una vista especial con la imagen a tamaño completo. Si se activa un ajuste, las imágenes alojadas fuera del foro se descargan e incrustan en el tema para preservar el contenido en el futuro.
Discourse es compatible con la tecnología OpenGraph y oEmbed. Las URL de páginas externas que ofrezcan esta estructura de datos se expanden para incluir un resumen de su contenido.
Existe un botón "Resumir" para generar resúmenes de temas largos, para que los usuarios vean solo las respuestas más populares.
Discourse también cuenta con herramientas para que la comunidad ayude a moderarse a sí misma, por medio de un sistema de denuncias que puede ocultar automáticamente las publicaciones marcadas como inadecuadas hasta que alguien con permisos de administración las revise.

### Narrative bot

Discobot es un bot conversacional personalizable que sirve com guía para las cuentas recién registradas. Permite aprender de forma interactiva a usar las funcionalidades de Discourse como el botón de "Me gusta", añadir mensajes a marcadores, usar emojis, mencionar a otras personas, usar formato básico, adjuntar imágenes o denunciar publicaciones.

### Etiquetas

Disccourse incluye un sistema de etiquetas. Al crear un tema, es posible elegir qué etiquetas ponerle. Es posible etiquetar un tema con más de una etiqueta, ajustar el nivel de notificaciones para temas con ciertas etiquetas, ver una lista con todas las etiquetas o filtar temas por etiqueta. Las personas con permisos de administración pueden decidir si dejar que se puedan crear o no nuevas etiquetas, quién puede crearlas, qué etiquetas se pueden usar en cada categoría y crear grupos de etiquetas.

### Grupos

Los grupos tienen más funciones dentro de Discourse más allá de simplemente agrupar cuentas. Cada cuenta puede tener un grupo primario que se muestra visualmente junto a cada mensaje que publica, y se puede ajustar con CSS. Por otro lado, los grupos son la única manera para controlar los permisos para ver o publicar en una categoría.
Al instalar Discourse, el sistema crea una serie de grupos automáticos: administrators (administradores), moderators (moderadores), staff (personal, una combinación de los dos anteriores) y varios otros relacionados con los niveles de confianza de los usuarios. Es posible crear más grupos, que pueden ser públicos o privados, y que pueden ajustarse para que los usuarios se unan a ellos por sí mismos o mandando una solicitud a la persona marcada como dueña del grupo. También se puede configurar a qué grupos se añadirán las cuentas al registrarse en el foro, bien según el correo electrónico de registro o a través de un enlace especial de invitación.
Por ejemplo, un foro para un videojuego popular podría crear un grupo para empleados de la empresa desarrolladora, y usar la funcionalidad de grupo primario para añadir un estilo especial a los mensajes de los empleados para que destacen y sean reconocibles como oficiales. Los foros de EVE Online usan la funcionalidad de esta manera.

## Aplicación móvil

Existe una aplicación de Discourse para móviles Android e iOS. Es de código abierto y está desarrollada con React Native. Fue lanzada en noviembre de 2016, y permite mantenerse al día de los nuevos temas y mensajes sin leer en varios temas que funcionen con Discourse. Es posible recibir notificaciones push, pero solo para foros alojados oficialmente por la empresa desarrolladora de Discourse.