Discourse
Figura 1: Portada de https://www.discourse.org/
Discourse es la plataforma de debate 100% de código abierto, construida para la próxima década de Internet. Úsalo como una lista de correo, un foro de discusión, una sala de chat de larga duración y mucho más.
Texto original: Discourse is the 100% open source discussion platform built for the next decade of the Internet. Use it as a mailing list, discussion forum, long-form chat room, and more!
Metadatos
Nombre
Discourse
URL
URL repositorio
https://github.com/discourse/discourse
Resumen (Inglés)
A platform for community discussion. Free, open, simple.
Resumen (Castellano)
Una plataforma para el debate en comunidad. Libre, abierta, simple.
Lenguaje
Ruby on Rails
Fecha primer commit
Octubre de 2011
Versión analizada
1.9.0.beta7
Nº de versiones
233
Nº de tablas en la BBDD
129
Nº de contribuidores
600
Nº de stars
22777
Licencia
GPLv2
Mantenido
Sí
Diseño responsivo
Sí
Funcionalidades
Las principales funcionalidades son:
Conversaciones continuadas en la misma página (sin paginación).
Sistema de notificaciones y alertas de forma granular (por categorías, por hilos, sólo cuando se mencione al usuario, en ningún momento, etc).
Interfaz simple con todas las publicaciones de la misma conversación ordenadas cronológicamente y a su vez permitiendo guardar el anidado de las respuestas.
Diseño adaptado a portátiles, tablets y móviles
Al agregar un enlace en un post se expande automáticamente dando información contextual de forma similar a como lo hacen en Facebook y Twitter.
Inicio de sesión único permitiendo integrar Discourse con el registro de usuarios de otros sistemas. Inicio de sesión a través de Google, Facebook, Twitter, Yahoo, GitHub, y otras redes sociales comunes.
Los usuarios pueden obtener más permisos a traveś de un sistema de confianza y dependiendo de las acciones que vayan realizando.
Moderación a demanda de la comunidad
Protecciones anti-spam heurísticas y a través del servicio externo de Akismet
Resumen automático de posts largos mostrando solo los más interesantes y populares
Insignias: promueve los comportamientos positivos de la comunidad a través de insignias por defecto a ciertas acciones (por ejemplo al reportar una publicación, al realizar máś de 10 publicaciones, al darle cierta cantidad de likes, etc.). Se pueden definir insignias nuevas.
Emoji: cuenta con cuatro diferentes conjuntos y se pueden definir Emojis propios.
Permite responder/participar por correo electrónico.
API exhaustiva. Por su propia arquitectura, al ser una aplicación Javascript, todos los contenidos mostrados se consiguen a través de una API.
Actualizaciones en un click a través del administrador web.
Traducido a 25 idiomas
Optimizado para SEO para indexación por buscadores
Distintas opciones de formateo en las publicaciones: Markdown, BBCode, y formateo HTML
Además cuenta con:
Backups automáticos
Soporte para CDN (Content Delivery Network)
Avatares
Uso del correo electrónico para:
Invitaciones.
Listas de correo.
Notificaciones.
Publicación anónima
Adjunto de ficheros
Encuestas embebidas
Notificaciones de escritorio y alertas a los usuarios de acciones
Autoguardado de borradores
Historial de revisión de publicaciones
Mensajería privada
Subida de imágenes a través de arrastrar y soltar
Edición colaborativa de publicaciones (wiki)
Permite la moderación en masa y la moderación previa (por aprobación manual) de publicaciones.
Espacios privados
Panel de control de estadísticas
Posibilidad de promocionar las publicaciones (“pin”)
Seguimiento de enlaces de entrada y salida
Versatilidad a través de las configuraciones de su administración
Extensión a través de plugins creados por la comunidad
Personalización de la interfaz a alto nivel (colores y tipografías) y a bajo nivel (HTML, CSS, Javascript)
Instalación automatizada a través de imágenes docker
Sistema de backups integrado en el sistema
API de todo el sistema
Estadísticas en el administrador
Memoria de que publicaciones ha leído cada usuario
Se trata pues de uno de los aplicativos que cuenta con más funcionalidades, destacando aquellas orientadas la versatilidad en la configuración global y granular, el sistema de backups automatizado, así como la facilidad de instalación a través de imágenes docker y otras características que hacen de este aplicativo uno de los más ambiciosos en su género.
Las amplias funcionalidades del aplicativo hacen que pueda ser usuado en entornos muy diversos más allá de los estrictamente relacionados con la participación ciudadana.
Implantación
Cuenta con más de 600 instalaciones de distintas comunidades, desde Videojuegos (Gearbox Software, Turtle Rock Studios), Educación (Udacity, Codecademy), Programación (Facebook React, Twitter Developers, Github Atom, Docker), Productos (Samsung SmartThings, Patreon, Bank of New Zealand ), Media (Imgur, BoingBoing) entre otros tipos.
Arquitectura
Es una aplicación javascript escrita con el framework Ember.js, con un backend escrito en Ruby on Rails para la persistencia de contenidos en la base de datos. Cuenta con un instalador que facilita todo el proceso, a través de scripts que descargan y configuran imágenes docker para la instalación del sistema. Cuenta con un asistente de instalación en el que se preguntan las principales opciones.
/var/discourse$ sudo ./discourse-setup Ports 80 and 443 are free for use Found 3GB of memory and 2 physical CPU cores setting db_shared_buffers = 768MB setting UNICORN_WORKERS = 4 Hostname for your Discourse? [discourse.example.com]: Email address for admin account(s)? [me@example.com,you@example.com]: SMTP server address? [smtp.example.com]: SMTP port? [587]: SMTP user name? [user@example.com]: SMTP password? [paword ENTER to continue, ‘n’ to try again, Ctrl+C to exit:
Los desarrolladores han optado por no incluir en el aplicativo un servidor SMTP para el envío de correo electrónico, debiéndose por tanto proveer ese servicio externamente.
Figura 2 : Esquema de arquitectura de Discourse
Modelo de datos
Modelos relevantes
Sus principales modelos son Categories, Groups, Posts y Topics.
Tablas
Cuenta con 129 tablas:
|
api_keys
application_requests
badge_groupings
badge_types
badges
categories
categories_web_hooks
category_custom_fields
category_featured_topics
category_featured_users
category_groups
category_search_data
category_tag_groups
category_tags
category_users
child_themes
color_scheme_colors
color_schemes
custom_emojis
developers
directory_items
draft_sequences
drafts
email_change_requests
email_logs
email_tokens
embeddable_hosts
facebook_user_infos
github_user_infos
given_daily_likes
google_user_infos
group_archived_messages
group_custom_fields
group_histories
group_mentions
group_users
groups
groups_web_hooks
incoming_domains
incoming_emails
incoming_links
incoming_referers
|
instagram_user_infos
invited_groups
invites
message_bus
muted_users
notifications
oauth2_user_infos
onceoff_logs
optimized_images
permalinks
plugin_store_rows
post_action_types
post_actions
post_custom_fields
post_details
post_replies
post_revisions
post_search_data
post_stats
post_timings
post_uploads
posts
queued_posts
quoted_posts
remote_themes
scheduler_stats
schema_migration_details
schema_migrations
screened_emails
screened_ip_addresses
screened_urls
search_logs
single_sign_on_records
site_settings
stylesheet_cache
tag_group_memberships
tag_groups
tag_users
tags
theme_fields
themes
top_topics
|
topic_allowed_groups
topic_allowed_users
topic_custom_fields
topic_embeds
topic_invites
topic_link_clicks
topic_links
topic_search_data
topic_tags
topic_timers
topic_users
topic_views
topics
translation_overrides
twitter_user_infos
unsubscribe_keys
uploads
user_actions
user_api_keys
user_archived_messages
user_auth_token_logs
user_auth_tokens
user_avatars
user_badges
user_custom_fields
user_emails
user_exports
user_field_options
user_fields
user_histories
user_open_ids
user_options
user_profile_views
user_profiles
user_search_data
user_stats
user_visits
user_warnings
users
versions
watched_words
web_hook_event_types
web_hook_event_types_hooks
web_hook_events
web_hooks
Gráficos UML
Figura 3: Tablas de la base de datos de Discourse
Figura 4: Tablas de la base de datos de Discourse
Figura 5: Tablas de la base de datos de Discourse
Figura 6: Tablas de la base de datos de Discourse
Figura 7: Tablas de la base de datos de Discourse
Figura 8: Tablas de la base de datos de Discourse
Figura 9: Tablas de la base de datos de Discourse
Figura 10: Tablas de la base de datos de Discourse
Figura 11: Tablas de la base de datos de Discourse
Figura 12: Tablas de la base de datos de Discourse
Figura 13: Tablas de la base de datos de Discourse
Figura 14: Tablas de la base de datos de Discourse
Figura 15: Tablas de la base de datos de Discourse
Figura 16: Tablas de la base de datos de Discourse
Figura 17: Tablas de la base de datos de Discourse
Conclusiones
Se trata de un aplicativo que incorpora una gran variedad de funcionalidades que lo convierten en uno de los aplicativos más versátiles en el ámbito de las ‘aplicaciones de debate’.
Esa versatilidad y amplitud de las funcionalidades del aplicativo hacen que pueda ser usado en entornos muy diversos más allá de los estrictamente relacionados con la participación ciudadana en cuestiones de gobierno.
Se destaca especialmente la cantidad de información y presentación visual que cuenta en el panel de control de administración, facilitando la revisión y moderación de contenidos nuevos así como de información general de la plataforma:
Figura 18 : Administrador: Panel de control
Por otro lado algo especialmente útil es la explicación que cuenta cada uno de sus configuraciones en un panel de administración especialmente completo:
Figura 19: Administrador: Configuraciones
Al mismo tiempo, la amplitud y alcance de las funcionalidades del aplicativo pueden suponer una dificultad para integrarlo en procesos integrales de participación ciudadana, a los que puede, si acaso, complementar en el ámbito estricto del debate como uno de los componentes claves de dichos procesos.
Destaca por último la integración en el aplicativo de las propias explicaciones de uso del mismo en los contenidos iniciales de la plataforma una vez instalada, facilitando así tanto la visualización del aspecto final de la misma una vez dotada de contenidos como el aprendizaje en el uso de la configuración de la plataforma.
Figura 20 (D.1 Discourse): Página principal con sesión de administrador iniciada
A nivel de captación de usuarios es especialmente destacable el uso de respuestas a las publicaciones de forma directa a través de correo electrónico, sin necesidad de tener que abrir la aplicación para responder, así como el uso de Emojis, al igual que Loomio, la otra aplicación de este tipo en este análisis.
Se recomienda su revisión por parte del equipo Decidim por la cantidad de funcionalidades ya calendarizadas para su futuro desarrollo, especialmente destacables:
Funcionalidades a destacar:
Inicio de sesión integrado con sistemas externos
Versatilidad a través de las configuraciones de su administración
Extensión a través de plugins creados por la comunidad
Personalización de la interfaz a alto nivel (colores y tipografías) y a bajo nivel (HTML, CSS, Javascript)
Sistema de notificaciones y alertas de forma granular (por categorías, por hilos, sólo cuando se mencione al usuario, en ningún momento, etc)
Permisos a nivel de grupos y categorías
Emojis
Responder a través de correo electrónico
Mensajería privada
Instalación automatizada a través de imágenes docker
Sistema de backups integrado en el sistema
API de todo el sistema
Estadísticas en el administrador
Memoria de que publicaciones ha leído cada usuario
Capturas de pantallas
Figura 21: Pantalla de registro inicial post-instalación
Figura 22: Registro inicial con correo dado durante la instalación
Figura 23: Página inicial
Figura 24: Página de un Tema
Figura 25: Creación de cuenta
Figura 26: Inicio de sesión
Figura 27: Página principal con sesión de administrador iniciada
Figura 28: Guía de Inicio Rápido para Administradores I
Figura 29: Guía de Inicio Rápido para Administradores II
Figura 30: Guía de Inicio Rápido para Administradores III
Figura 31: Guía de Inicio Rápido para Administradores IV
Figura 32: Guía de Inicio Rápido para Administradores V
Figura 33: Guía de Inicio Rápido para Administradores VI
Figura 34: Explicación de categoría Lounge (“Salón”)
Figura 35: Tema para subir imágenes
Figura 36: Política de privacidad por defecto
Figura 37: Guía de la comunidad por defecto
Figura 38: Términos de uso por defecto
Figura 39: Opciones de un Tema para administradores
Figura 40: Opciones de un Tema para todos los usuarios
Figura 41: Opciones de una Publicación para usuarios
Figura 42: Opciones de una Publicación para administradores
Figura 43: Menú superior
Figura 44: Administrador: Panel de control
Figura 45: Administrador: Configuraciones
Figura 46: Administrador: Panel de usuarios
Figura 47: Administrador: Panel de insignias
Figura 48: Administrador: edición de insignias I
Figura 49: Administrador: edición de insignias II
Figura 50: Administrador: gestión de grupos
Figura 51: Administrador: configuración de correo electrónico
Figura 52: Administrador: registros de acciones
Figura 53: Administrador: personalización de temas
Figura 54: Administrador: personalización de textos
Figura 55: Administrador: personalización de plantillas de correos electrónicos
Figura 56: Administrador: personalización de campos de usuario
Figura 57: Administrador: personalización de campos de usuario (tipos de campos)
Figura 58: Administrador: personalización de Emojis
Figura 59: Administrador: personalización de URLs
Figura 60: Administrador: configuración de integración por iframe
Figura 61: Administrador: descarga de copias de seguridad
Figura 62: Administrador: gestión de plugins
Figura 63: Formulario de publicación de entradas I
Figura 64: Formulario de publicación de entradas II
Figura 65: Configuración de categorías I
Figura 66: Configuración de categorías II
Figura 67: Configuración de categorías III
Figura 68: Configuración de categorías IV
Figura 69: Configuración de categorías V
Figura 70: Configuración de categorías VI
Figura 71: Configuración de categorías VII