Preguntas sobre la arquitectura técnica de Discourse

Hola

Hace mucho tiempo fui un técnico, pero ya no. He dicho en otros lugares que estoy interesado en el diseño de comunidades digitales. Sociología construida con tecnología.

No sé cuál es la arquitectura de Discourse, pero sé que tiene temas y plugins. Si hay otras partes, las desconozco.

Ayuda Por Favor :slight_smile:

He intentado buscar en el par de diversas maneras, pero no obtengo nada que sugiera “aquí está el 101 de qué/por qué. Por ejemplo: hay una capa de presentación, una capa de almacenamiento y un proceso de selección entre las dos que utiliza esta información para establecer el contexto para seleccionar de una a otra. Tal cual, obtienes x y z. Un plugin es un… cualquiera en el directorio se cargará al inicio del proceso del servidor (o lo que sea) se enganchan a la interfaz de usuario/backend/frontend, etc. por…, los que existen son…, un tema afecta a la capa de presentación (?) de lo que viene tal cual más plugins de las siguientes maneras…”

¿Existe tal descripción que alguien no pueda indicarme y que me lleve de 0 a una comprensión suficiente para poder encontrar lo que existe actualmente y tener suficiente entendimiento para tener un pensamiento imaginativo?

Porque

entonces podré usarlos como bloques de construcción conceptuales en el diseño de comunidades para diferentes propósitos.

Estoy interesado en…:
si Discourse podría ser “endurecido” para cumplir con los estándares de #grado_médico - no, no sé cuáles son en ninguna jurisdicción en particular todavía, pero sé que serán necesarios para los propósitos de interés y diferentes en las geografías.

Estoy interesado en la interfaz con herramientas de rehabilitación instrumentadas y en la codificación para la extracción de datos anonimizados (#cumplimiento_gdpr) de métricas de progreso y eficacia, hay datos de mejora para la investigación.

Estoy interesado en cómo las mejores publicaciones pueden subir a la cima como la crema, de modo que los nuevos usuarios no se enfrenten a una experiencia de usuario de Discourse que les resulte ajena en un tema para el que acaban de descubrir una necesidad aguda en un momento de desorientación, con un cuerpo de información delante de ellos que llega a miles de publicaciones e hilos con solo una estructura jerárquica que es académica y no visceral para ellos…

Las estructuras jerárquicas en general se exploran mejor para temas de interés potencial si uno puede tomar un respiro primero, pero generalmente solo admiten patrones de búsqueda en profundidad, primero, donde la presunción es que uno ya conoce el tema, eso podría ser ligeramente mejorado por hashtags, que es otro tema en mi lista de lectura.

¿Quizás algo de la IA de los bots tiende un puente? Otro elemento de la lista… :slight_smile:

También estoy viendo algunos videos a través del blog con @jonobacon y tal vez pueda hacer preguntas más inteligentes cuando termine de verlos.

Para pensar creativamente en el contexto de Discourse, necesito comprender mejor qué componentes y qué interfaces existen.

¿Puedes ayudarme a indicarme :-)?
Gracias de antemano.

2 Me gusta

Explorar los plugins, temas y componentes de temas existentes puede darte una idea de lo que es posible en cuanto a personalización:

6 Me gusta

:wave: Hola @51mon: si estás interesado en el desarrollo de foros de Discourse, la información aquí puede ser de tu interés. :slight_smile:

2 Me gusta

Gracias :slight_smile:

Creo que me has dado un diccionario cuando esperaba una guía sobre cómo leer. ¿Tienes una introducción más suave sobre el tema de qué son estas cosas y cómo funcionan en lugar de qué hacen?

Hay mucho material en tus enlaces, pero no hay nada en la descripción general que explique la arquitectura de Discourse. En este momento, me preocupa menos qué capacidades se proporcionan en los complementos, etc. Todavía estoy tratando de averiguar qué son realmente.

2 Me gusta

Gracias, echaré un vistazo :slight_smile:

Soy un poco reacio, ya que se titulan “desarrollando…” y no me interesa escribir código, quiero entender la arquitectura.

Miraré porque no está claro en este momento si los textos satisfarán mi necesidad (cruzo los dedos).

Te informaré, a menos que, por supuesto, tengas otras sugerencias :). ?

1 me gusta

@51mon Supongo que has estudiado estos?

7 Me gusta

No :)\nGracias\n\n~~ "~~\n[[Ediciones]]\n\n¡Ay! El enlace número uno me lleva al encabezado de 15 hilos\n\nLos enlaces dos y tres son páginas de ventas, pero al menos solo son una página; son listas de características, no descripciones arquitectónicas.\n\nY, ¡ay! Ni siquiera estoy seguro de qué es el último enlace, excepto una invitación a iniciar sesión en try.discourse.org, que tiene hilos con más de 100 entradas, además de uno con más de 1000 por sí solo.\n\nSin mapa. Debe ser un poco como se sintió Cook cuando avistó Australia y luego pasó días navegando por su costa.\n\nEditar\nLa lista de características\n\nLa página nombra una larga lista de cosas. Algunas de las cosas son conceptuales. Cuando un nombre se refiere a un concepto que no se describe, solo te dice que hay una cosa aquí, pero no transmite ninguna comprensión o qué es la cosa; así que sé por las características que hay muchas :), pero no tengo un concepto de lo que puedo hacer con muchas de las características nombradas.\nEs bueno para establecer amplitud, una buena ayuda para la memoria para aquellos que ya saben, pero difícil para alguien que busca comprender obtener comprensión.\nAdemás, no tengo idea de esta lista de características si son complementos, temas, listos para usar, exclusivos de discourse o comunes en todas las plataformas.\nNo digo que deba hacer por esa página realmente en esta etapa, solo estoy tomando notas porque tengo un continente que explorar. Lo que mi OP estaba pidiendo era una imagen de la tierra vista desde la luna, hasta ahora ni siquiera he logrado subir a la cima del mástil del HMS Endeavor :grin:\n\nEl enlace número tres “qué es discourse” es una mezcla de discurso de ventas con otras cosas. Tampoco da arquitectura; no digo que deba hacerlo, pero como no lo hace, no es lo que estoy buscando.\nTampoco me convence del todo; por ejemplo, afirma que discourse eliminó la complejidad, sin embargo, el color rojo que se usa en la interfaz de usuario cambia según el número de me gusta frente a las publicaciones. Ese es un elemento muy esotérico de la interfaz de usuario. Además, ya sea que hagas clic en las listas de publicaciones no leídas en el título, el recuento de respuestas o un tercer campo, no sé cómo llamarlo, te lleva a diferentes lugares en un hilo. Todas estas son variaciones de la experiencia de usuario poco intuitivas, no anunciadas y no señalizadas que, hasta que sepas que existen en la interfaz de usuario, serán confusas.

2 Me gusta

Para ser honesto @51mon, no creo que entienda tu pregunta. ¿Podrías hacerla en términos sencillos y haré todo lo posible por darte una respuesta?

8 Me gusta

Qué amable tu acercamiento @JammyDodger, y lo haré cuando pueda, pero ahora mismo no puedo.

Creo que mi publicación inicial lo dijo claramente en mis oídos, pero claramente no te lo transmite claramente a tus oídos (¡ojos!).

Intentemos esto:

Si ambos estuviéramos de pie mirando un coche, podríamos tener una discusión como “puedes sentarte en él y te llevará al supermercado o a la playa”. O alternativamente, podríamos tener una conversación como “tiene ruedas y un motor que funciona con gasolina o una batería y un dispositivo de dirección y un dispositivo de frenado”.

La conversación sobre los frenos y los intermitentes y si la luz interior se enciende y se apaga automáticamente es una conversación de desarrollador. La conversación sobre ir a la playa y llevar a los niños a la escuela por la mañana y si puedes meter una silla de ruedas en la parte trasera o remolcar una caravana es una discusión orientada al usuario que roza lo técnico. Para remolcar una caravana necesitas instalar un enganche porque no viene de serie. Cuando compras el coche, tenías la opción de blanco o gris o negro o quizás azul. Son elecciones únicas, quizás sean temas de administración en el contexto del discurso.

Ahora, un aspecto entre muchos que me interesa es si podría potenciar una comunidad con Discourse donde la información que reside en algún lugar entre la administración y la acumulación de publicaciones de los colaboradores y los ID de usuario, etc., etc., podría necesitar cumplir con las regulaciones de grado médico para la protección de datos CIA (confidencialidad, integridad y disponibilidad). Pero no puedo evaluar esa pregunta cuando no sé cuál es la arquitectura subyacente.

Si esto no lo ha aclarado, tendrás que esperar hasta que haya leído todos los recursos que la gente me ha enviado para poder hacer una pregunta que sea inteligible para quienes puedan responderla, porque actualmente no puedo formular la pregunta mejor.
Gracias - :slight_smile:

Es un viaje de descubrimiento y estoy contento de que lleve algún tiempo. Cuando haya hecho los descubrimientos que necesito, es muy probable que los escriba y los done a la comunidad aquí con la esperanza de que ayuden a otros en el futuro.

Me temo que eso no lo ha aclarado mucho. :slight_smile: Espero que alguien más pueda intervenir y darle lo que necesita. :crossed_fingers:

¿Ya ha creado un foro para experimentar? Eso podría ayudarle a explorar sus ideas y a hacerse una idea de lo que es posible.

5 Me gusta

Hola @51mon.

Sospecho que parte del problema son las metáforas. Cualquier cosa que uno escriba a menudo será entendida por el autor. Sin embargo, otros pueden tener dificultades para entender.


Así que… aquí va:

Discourse Meta está diseñado en su núcleo para ser un marco comunitario base.

Proporciona una base básica… que de fábrica es bastante insípida.

Con tu edad y la mía, es posible que hayas estado involucrado o al tanto de los BBS electrónicos de Dos.

Un buen número eran derivados de Telegard BBS, también conocido como Telegard Hacks. (desviándose lateralmente…)

De vuelta al tema.

Entonces, quieres construir un foro de Discourse Meta para…

Este es tu punto de partida… Siéntate y piensa en una idea del propósito de tu comunidad y de lo que quieres que ofrezca en términos de funciones y características.

Luego da un paso atrás.

Para tener una idea más clara de a dónde puedes llegar. Explora la lista de comunidades que ya utilizan Discourse. En este momento no tengo un enlace a mano. Echar un vistazo a las comunidades existentes te dará una idea de lo que se puede lograr… y de cuán similares o muy diferentes pueden ser en alcance y función.

A partir de aquí, puedes anotar las características que diferentes comunidades tienen y que deseas en la idea de tu comunidad.

Puedes decidir si quieres alojamiento de pago que pueda facilitar la calidad de vida o ir a control total y autoalojar para tener control total de la potente extensibilidad de elegir los plugins que desees. Pero a costa de mantener tú mismo el VPS.

De cualquier manera, necesitarás investigar lo que necesitarás para tener las funciones y características disponibles para diseñar tu comunidad.

Así que, a partir de aquí, realicemos un experimento mental. Proporciona una idea de comunidad de ejemplo. Incluso podemos usar una comunidad existente y preguntarnos qué Plugin (si es necesario), Theme y Theme component necesitaríamos para lograr lo que tiene esta comunidad.

1 me gusta

Hola @Heliosurge
:slight_smile: Olvídate de esos BBS, recuerdo newsnet dirigido por UKC en Canterbury a través de líneas de acceso telefónico a 300 baudios y recuerdo servicios y clientes basados en NNTP como freeagent

Estoy completamente de acuerdo en que las analogías e incluso, de forma más general, las palabras cuando se organizan en oraciones a menudo solo encapsulan la comprensión entre los oídos del escritor. Incluso si crean comprensión en otros lugares, ¡no hay garantía de que sea la misma! :slight_smile:

Intentemos esto
Entiendo que discourse tiene un extremo de servidor que contiene una base de datos de publicaciones y usuarios, y tanto las publicaciones como los usuarios tienen atributos y están vinculados entre sí. Que esto está alojado en algún lugar, el host podría ser virtual, una red de entrega de contenido, etc.

Entiendo que en el extremo del cliente hay una capa de presentación que utiliza las publicaciones y las credenciales de autenticación y los derechos de acceso de un usuario y los enlaces para crear un feed. Veo que filosóficamente muchas de las estructuras utilizadas son jerárquicas. La jerarquía se oculta mediante muchos mecanismos de enlaces cruzados.

Supongo, creo que de manera segura, que el esquema de colores, etc. utilizado por el extremo del cliente está vinculado en tiempo de ejecución a un tema que se puede reemplazar para que la ejecución posterior se vincule a un nuevo tema y no cambie el contenido, pero sí cambie la apariencia de la presentación y posiblemente incluso algunos componentes estilísticos de navegación funcional, pero me vuelvo confuso y especulativo en este punto.

Soy consciente de que existen componentes de temas y actualmente tengo un modelo en mi cabeza que dice que una combinación de componentes de temas crea un tema, pero de nuevo estoy un poco inseguro al respecto. No tengo una idea de algunos ejemplos de lo que hace un componente de tema.

Tengo menos comprensión de los plugins. Entiendo la parte arquitectónica de que están en el lado del servidor y, por lo tanto, se encuentran en la instancia en ejecución que está sirviendo contenido. No veo del todo la interacción entre un tema y un plugin. Supongo que si extiendes las capacidades del lado del servidor, entonces tienes que extender la presentación del lado del cliente, pero esa parte es una incertidumbre sobre la incertidumbre.

Tampoco sé si el modelo arquitectónico completo está compuesto por: servidor, software de servicio, aplicación cliente/navegador, componentes de temas y plugins, o si hay otros componentes.

Tengo preguntas como “¿una comunidad estándar de discourse no se encuentra detrás de un muro de pago u otros mecanismos de monetización, se podría agregar uno?” Los datos se almacenan en un sistema con cierto grado del triunvirato de CIA: confidencialidad, integridad y disponibilidad. ¿Se puede fortalecer a los estándares requeridos para estándares de interoperabilidad de atención médica en ambos lados del Atlántico?

Este último requisito traslada la conversación hacia la ética y cómo el software apoya las preocupaciones legales, morales y culturales, creo que es relevante para este foro. La comprensión arquitectónica es un requisito previo para el diseño de la solución, al igual que la determinación de los principios filosóficos que dan forma a las instalaciones consideradas deseables, esenciales e indeseables/inaceptables/censurables, y la censura debe ser procesada.

1 me gusta

Entendido. La base de datos principal de temas agrupados por categorías y organizados con etiquetas, por ejemplo, aquí.

Hay 2 tipos de Theme

  • Básico: solo modifica la apariencia base de Discourse.
  • Tema completo: modifica la apariencia y viene preempaquetado con algunos Theme component para alterar lo que puede hacer con componentes para cambiar cómo funcionan las cosas.

Esta imagen: Invocar menú lateral.

En la parte inferior, donde resalté con la flecha, Expándelo. Tienes una colección de temas, desde básicos hasta completos. Experimenta, elige uno y observa cómo Meta se altera en términos de apariencia y sensación.

Prueba algunos diferentes y explora. Creo que esto ayudará a comprender mejor lo que los temas pueden hacer con y sin componentes.

Air Theme, por ejemplo, es un tema completo con componentes preinstalados.

2 Me gusta

Gracias
Creo que esta respuesta me ha demostrado que los temas se cargan en el lado del servidor y que el lado del cliente, al iniciarse, consulta qué temas están disponibles y luego, con cada recuperación de datos (¿o instanciación de una sesión?) que se presentará, proporciona un ID de tema que el servidor utiliza para codificar qué elementos HTML se reenviarán al cliente para su visualización.

Además, ha dicho que la aplicación necesita ser reconstruida. Supongo que es un proceso de edición de enlaces. ¿Al menos está describiendo un mecanismo estático, no bibliotecas enlazadas dinámicamente?

Todavía no tengo una idea de qué servicios podrían proporcionar los complementos y cómo interactuaría un tema, aparte de cambiar mi icono de un círculo a un cuadrado, que parece suceder cuando seleccioné el que usted llamó, ¿era aire?

A diferencia de las plataformas de foros más antiguas (vBulletin, phpBB), Discourse no es una colección de scripts del lado del servidor (php) y una base de datos separada.

Discourse consta de dos mitades: un backend que reside en Docker y una aplicación de javascript de una sola página que se sirve al dispositivo cliente.

Cualquier cosa que requiera un cambio en el backend afectará al contenedor de Docker, lo que en las instalaciones más básicas requiere un pequeño tiempo de inactividad. Eso es a lo que se refieren las personas cuando dicen que la aplicación necesita ser reconstruida. El archivo de configuración (un documento yml) que controla cómo se construye el contenedor necesita ser editado y luego se emite una reconstrucción al lanzador a través de SSH. La instalación de complementos significa una reconstrucción, mientras que los cambios simples en SMTP se parecen más a un reinicio.

La introducción de nuevos temas y componentes de temas son cambios efectivos en el frontend realizados dentro de la aplicación web en ejecución. No resultan en ningún tiempo de inactividad, ya que la aplicación y la base de datos subyacentes no cambian.

1 me gusta

Gracias Steven :slight_smile:

Tengo algunos déficits técnicos. ¡Mi experiencia práctica es anterior a Docker por una generación! De hecho, recuerdo cuando la justificación de Gosling de Java como un lenguaje ligero fue la publicación más candente del mes; en ese momento, yo era K&R C, ingres, oracle, sysadmin y dba.

Creo que estoy detectando el uso de las palabras “front end” y “back end” como procesos que se ejecutan en el servidor y no como “lado del servidor” y “lado del cliente”, ¿es correcto?

¿Tenemos procesos cooperativos con memoria compartida o tuberías o algo entre ellos en el servidor y luego un flujo de mensajes encapsulado en TCP que envía cosas a la IP que tiene el software cliente?

¿Alguien ha dibujado un diagrama de bloques de estas cosas de arquitectura?

Creo que esto definitivamente se ha alejado de Community :slight_smile: Deslicémoslo a Dev ya que se trata más de los elementos técnicos.

1 me gusta

Este tema parece ser una mezcla de dos ideas:

  1. “Un resumen/diagrama de alto nivel sería útil para diseñar mi instancia de Discourse”
  2. “Estoy intentando comparar la funcionalidad de Discourse con mis requisitos, pero no encuentro cierta información”.

El primer punto sobre la arquitectura se ha discutido un poco, sin embargo, desafortunadamente, todavía hay una ausencia de un diagrama de alto nivel. Esperemos que alguien con una mejor comprensión pueda dibujar algo para nosotros aquí con mermaid, sin embargo, al menos puedo (con suerte) brindar una pequeña guía para sus requisitos originales.

¿Puede Discourse cumplir con los requisitos y estándares de seguridad de la información médica/gubernamental/automotriz?

Necesitaría ser más concreto sobre cuáles son exactamente estos requisitos. Sin embargo, considerando que el mundo médico y automotriz no están muy separados, puedo compartir mi experiencia con la esperanza de que ayude. Como contexto, ejecuto una instancia de innersource para un gran proveedor automotriz en Alemania. Ha sido un dolor de cabeza legal, pero se puede lograr con un nivel ingenuo de persistencia, niveles idiotas de resiliencia y un equipo legal increíblemente servicial y paciente. En serio, sé extra amable con tu equipo legal :laughing:

Las preguntas más importantes que deberá responder son:

  1. ¿Quién accede a la información?
  • ¿El público?
  • ¿El personal?
  • ¿Una mezcla de personal y público?
  1. ¿Qué tipo de información habrá en la plataforma?
  • ¿Solo público?
  • ¿Mezcla de público e interno?
  • ¿Confidencial? – tenga en cuenta que en el momento en que planee alojar esto en la plataforma, las cosas se vuelven mucho más difíciles
  1. ¿Dónde se alojará?
  • ¿en el sitio?
  • ¿Por Discourse o por otro host?

En nuestro ejemplo, éramos solo internos (Personal), solo Información interna (es decir, compartir información de la empresa que no es confidencial) y originalmente autoalojado, pero nos mudamos a Discourse para el alojamiento.

En términos de alojamiento con Discourse, nuestra Oficina de Seguridad de la Información no vio problemas significativos cuando elegimos migrar.

También estamos distribuyendo esta información en varias naciones: China, India, Alemania, Rumania, EE. UU., Francia, etc. China fue un poco complicado, pero el equipo de Discourse hizo un trabajo fantástico para ayudarnos a superar los problemas de CDN que enfrentamos.

Tenga en cuenta que la pregunta número 3: “¿Dónde se alojará?” es la que responde a la mayoría de sus preguntas sobre protección de datos y seguridad.

Inicio de sesión y autorización

Para el inicio de sesión, probablemente querrá apoyarse en SAML. El equipo de Discourse lo ayuda a configurarlo si es un cliente empresarial con ellos. Nuestro IDP solo es accesible cuando está detrás de la VPN de nuestra empresa, lo que agrega una capa adicional de seguridad para nosotros (es decir, ni siquiera puede cargar la pantalla de inicio de sesión a menos que esté en nuestra red).

SSH

Además, una instalación estándar proporcionará cifrado ssh. No estoy en la CIA, así que no sé si necesitan más que eso. :male_detective: presuntamente

Interfaz de Discourse con otras herramientas

Apóyate en la API

Para la interfaz, la API de Discourse es tu amiga. Puedes obtener y establecer datos usando una clave API y algo de python.

Hay un gran conjunto de ejemplos aquí: Discourse REST API comprehensive examples

Anonimización de datos de usuario para cumplir con el GDPR

En términos de GDPR, podría extraer los datos de la plataforma y omitir al usuario en el punto de origen ejecutando una consulta en el explorador de datos.

Esto contrasta con el uso de la API de Discourse, donde la respuesta JSON típicamente incluye información completa sobre la publicación, como:

  • El contenido de la publicación (HTML cocido y Markdown sin procesar)
  • El ID de la publicación
  • El ID del tema al que pertenece
  • El nombre de usuario del autor
  • El número de publicación dentro del tema
  • Las marcas de tiempo de creación y última actualización de la publicación
  • El número de me gusta, respuestas, citas, etc.

¿Cómo obtener publicaciones destacadas y una interfaz familiar?

Es posible que no lo haya visto, pero podría combinar este tema:

con algo como esto:

3 Me gusta

Para la ley HIPAA en los EE. UU., con cualquier tipo de dato de registro médico, los profesionales pueden compartirlo con familiares/amigos/cuidadores + cualquier otra persona que el paciente elija si firman un formulario oficial de autorización de información. Estos generalmente tienen una fecha de vencimiento de solo unos pocos meses o años.

Un diagrama simple para esto sería: todos los datos médicos están en una gigantesca bóveda cerrada que nunca se puede abrir por ninguna emergencia, a menos que el personal de servicios de emergencia tenga un documento firmado por el paciente.

A menos que: el paciente esté inconsciente, especialmente a largo plazo en coma o de otra manera no cuerdo, y/o declarado por un tribunal + juez incapaz de cuidar sus propios asuntos, en cuyo caso alguien más puede ser designado para eso.

Cualquiera de esos dos escenarios podría representarse con una llave que pueda abrir la bóveda, luego mover algunos datos médicos a una bóveda secundaria con acceso restringido solo a personas específicas.

Que podría ser un grupo de personas, pero tendrían que ser nombradas individualmente en la mayoría de los casos, creo, para estar autorizadas a tener acceso a datos médicos.

https://www.cdc.gov/phlp/publications/topic/hipaa.html

1 me gusta