Plataformas de participación (VIII Discourse)

Plataformas de participación (VIII Discourse)

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

https://www.discourse.org/

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

Framework

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

Diseño responsivo

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