Perguntas sobre a arquitetura técnica do Discourse

Olá

Há muito tempo eu era um entusiasta de tecnologia, mas não mais. Já disse em outros lugares que estou interessado no design de comunidades digitais. Sociologia construída com tecnologia

Não sei qual é a arquitetura do Discourse, mas sei que ele tem temas e plugins. Se houver outras partes, sou ignorante sobre elas

Ajuda Por Favor :slight_smile:

Tentei pesquisar sobre o par de várias maneiras, mas não obtive nenhum resultado que sugerisse “aqui está o básico sobre o quê/porquê. Por exemplo: existe uma camada de apresentação, uma camada de armazenamento e um processo de seleção entre as duas que usa esta informação para estabelecer contexto para selecionar de uma para a outra. Fora da caixa você obtém x y e z. um plugin é um… qualquer um no diretório será carregado na inicialização do processo do servidor (ou o que for) eles se conectam à interface do usuário/backend/frontend etc. por…, os que existem são…, um tema afeta a camada de apresentação(?) do que vem pronto mais plugins das seguintes maneiras…”

Existe tal descrição que alguém não poderia me indicar e que me levaria de 0 a uma compreensão suficiente para poder encontrar o que existe atualmente e ter entendimento suficiente para ter pensamentos criativos

porque

então posso usá-los como blocos de construção conceituais no design de comunidades para diferentes propósitos.

Estou interessado em…:
se o Discourse pode ser “endurecido” para atender aos padrões de #qualidade_médica - não, eu não sei quais são em nenhuma jurisdição específica ainda, mas sei que serão necessários para os propósitos de interesse e diferentes entre geografias.

Estou interessado em interagir com ferramentas de reabilitação instrumentadas e codificar para extração de dados anonimizados (#compatível_com_GDPR) de métricas de progresso e eficácia, há dados de melhoria para pesquisa.

Estou interessado em como as melhores postagens podem subir ao topo como creme, para que novos usuários não sejam confrontados com uma experiência de usuário do Discourse que é alienígena em um assunto sobre o qual eles acabaram de descobrir uma necessidade aguda em um momento de desorientação com um corpo de informações à sua frente que chega a milhares de posts e threads com apenas uma estrutura hierárquica que é acadêmica e não visceral para eles…

Estruturas hierárquicas em geral são melhores para pesquisar tópicos de interesse potencial se pudermos respirar primeiro e usar um padrão de busca, mas geralmente suportam apenas padrões de busca em profundidade - o Discord parece ser um caso em questão - onde a presunção é que já se conhece o assunto - isso pode ser ligeiramente amenizado por hashtags, que é outro tópico em minha lista de leitura.

Talvez parte do material de bot de IA crie pontes? Outro item da lista… :slight_smile:

Também estou assistindo a alguns vídeos pelo blog com @jonobacon e talvez consiga fazer perguntas mais inteligentes quando terminar de assisti-los.

Para pensar criativamente no contexto do Discourse, preciso de mais compreensão sobre quais componentes e quais interfaces existem.

Você pode me ajudar a indicar :slight_smile:
Obrigado em antecipação

2 curtidas

Navegar pelos plugins, temas e componentes de temas existentes pode dar uma ideia do que é possível em termos de personalização:

6 curtidas

:wave: Olá @51mon - se você tem interesse em desenvolvimento de fóruns Discourse, as informações aqui podem ser do seu interesse. :slight_smile:

2 curtidas

Obrigado :slight_smile:

Acho que você me deu um dicionário quando eu esperava orientação sobre como ler! - você tem uma introdução mais suave sobre o tópico do que essas coisas são e como elas funcionam, em vez do que elas fazem?

Há muito conteúdo nos seus links, mas nada na visão geral que diga qual é a arquitetura do discourse - estou menos preocupado com quais recursos são fornecidos nos plugins, etc. no momento - ainda estou tentando descobrir o que eles realmente são.

2 curtidas

Obrigado, darei uma olhada :slight_smile:

Estou um pouco reticente, pois eles estão intitulados “desenvolvendo…” e não estou interessado em escrever código - quero entender a arquitetura.

Vou dar uma olhada, pois não está claro no momento se os textos atenderão às minhas necessidades (dedos cruzados).

Avisarei - a menos que, é claro, você tenha outras sugestões :). ?

1 curtida

@51mon Presumo que você tenha estudado estes?

7 curtidas

Eu não tinha :slight_smile:
Valeu

~~ “~” ~~
[[Edições]]

Eita! O link número um me leva ao cabeçalho de 15 threads

Os links dois e três são páginas de vendas, mas pelo menos são apenas uma página - eles apresentam listas de recursos, não descrições arquitetônicas.

E eita, eu nem sei o que é o último link, exceto um convite para fazer login em try.discourse.org com threads com mais de 100 entradas, mais um com mais de 1.000 por si só -

sem mapa. Deve ser um pouco como Cook se sentiu quando avistou a Austrália e depois passou dias navegando por sua costa

Editar
A lista de recursos
A página nomeia uma longa lista de coisas. Algumas das coisas são conceituais. Quando um nome se refere a um conceito que não é descrito, ele apenas informa que há uma coisa aqui, mas não transmite nenhum entendimento ou o que a coisa é - então eu sei pela lista de recursos que há muitas :slight_smile: mas não tenho um conceito do que posso fazer com muitos dos recursos nomeados.
Bom para estabelecer amplitude, uma boa ajuda de memória para quem já sabe, mas difícil para alguém que busca entendimento ganhar entendimento.
Também não tenho ideia a partir desta lista de recursos se são plugins, temas, prontos para uso, exclusivos do discourse ou comuns em todas as plataformas
Não estou dizendo que deveria fazer por essa página realmente nesta fase, estou apenas fazendo anotações porque tenho um continente para explorar. O que meu OP estava pedindo era uma imagem da Terra vista da lua, até agora eu nem consegui subir até o topo do mastro do HMS Endeavor :grin:

O link número três “o que é discourse” é uma mistura de discurso de vendas com outras coisas. Também não dá arquitetura - não estou dizendo que deveria, mas como não dá, não é o que eu estou procurando.
Também não me parece totalmente verdadeiro - por exemplo, afirma que o discourse eliminou a complexidade, no entanto, a cor vermelha usada na interface do usuário muda com base no número de curtidas versus postagens. Esse é um elemento muito esotérico da interface do usuário. Além disso, se você clicar nas listas de posts não lidos no título, na contagem de respostas ou em um terceiro campo, não sei como nomear, você é levado a lugares diferentes em uma thread. Todas essas são variações não intuitivas, não anunciadas e não sinalizadas na experiência do usuário que, até que você saiba que elas existem na interface do usuário, serão confusas.

2 curtidas

Para ser sincero @51mon, não acho que entendi sua pergunta. Você poderia fazê-la em termos simples, e eu farei o meu melhor para te dar uma resposta.

8 curtidas

Essa é uma abordagem gentil @JammyDodger - e eu o farei quando puder, mas no momento não consigo.

Acho que minha postagem inicial disse isso claramente em meus ouvidos, mas claramente não transmite isso claramente para seus ouvidos (olhos!).

Vamos tentar o seguinte:

Se estivéssemos ambos em pé e olhando para um carro, poderíamos ter uma discussão como “você pode sentar nele e ele o levará ao supermercado ou à praia”. Ou, alternativamente, poderíamos ter uma conversa como “tem rodas e um motor movido a gasolina ou bateria, um dispositivo de direção e um dispositivo de freio”.

A conversa sobre os freios e indicadores, e se a luz interna acende e apaga automaticamente, é uma conversa de desenvolvedor. A conversa sobre ir à praia e levar as crianças para a escola pela manhã, e se você pode colocar uma cadeira de rodas na parte de trás ou rebocar um trailer, é uma discussão orientada ao usuário que beira o técnico. Para rebocar um trailer, você precisa instalar um engate, pois isso não vem de fábrica. Quando você compra o carro, você tem a opção de branco, cinza, preto ou talvez azul. São escolhas únicas - talvez sejam tópicos administrativos no contexto do discourse.

Agora, um aspecto entre muitos que me interessa é se eu poderia alimentar uma comunidade com discourse onde as informações que residem em algum lugar entre o administrador e o acúmulo de postagens de contribuidores e os IDs de usuário, etc., etc., precisariam cumprir regulamentos de grau médico para a proteção de dados CIA (confidencialidade, integridade e disponibilidade). Mas não posso avaliar essa questão quando não sei qual é a arquitetura subjacente.

Se isso não tornou as coisas mais claras, você terá que esperar até que eu leia todos os recursos que as pessoas me indicaram para que eu possa fazer uma pergunta inteligível para aqueles que podem respondê-la, porque atualmente não consigo formular a pergunta melhor.
Obrigado - :slight_smile:

É uma jornada de descoberta e estou contente que levará algum tempo. Quando eu fizer as descobertas que preciso, é bem provável que eu as escreva e as doe de volta para a comunidade aqui, na esperança de que ajudem outros no futuro.

Receio que isso não tenha esclarecido muito. :slight_smile: Espero que outra pessoa possa intervir e lhe dar o que você precisa. :crossed_fingers:

Você já criou um fórum para brincar? Isso pode ajudá-lo a explorar suas ideias e ter uma noção do que é possível.

5 curtidas

Olá @51mon.

Suspeito que parte do problema sejam as metáforas. Qualquer coisa que se digita muitas vezes será entendida pelo autor. No entanto, outros podem ter dificuldade em entender.


Então… vamos lá:

O Discourse Meta foi projetado, em sua essência, para ser uma estrutura de comunidade base.

Ele fornece uma fundação básica… que, pronta para uso, é um tanto sem graça.

Com sua faixa etária e a minha, você pode ter se envolvido ou ter conhecimento dos BBSs Eletrônicos do DOS.

Um bom número deles eram derivados do Telegard BBS, também conhecido como Telegard Hacks. (Desviando do assunto…)

De volta ao tópico.

Então você quer construir um fórum Discourse Meta para…

Este é o seu ponto de partida. Sente-se e pense em uma ideia sobre qual o propósito da sua comunidade e o que você quer que ela ofereça em termos de função e recursos.

Então, dê um passo para trás.

Para ter uma ideia mais clara de onde você pode chegar. Explore a lista de comunidades que já usam o Discourse. No momento, não tenho um link à mão. Dar uma olhada nas comunidades existentes lhe dará uma ideia do que pode ser alcançado… e quão semelhantes algumas comunidades são, em comparação com o quão diferentes elas podem ser em escopo e função.

A partir daqui, você pode anotar os recursos que diferentes comunidades têm e que você deseja em sua ideia de comunidade.

Você pode decidir se quer hospedagem paga, que pode facilitar a vida, ou ter controle total e auto-hospedar para ter controle total da poderosa extensibilidade de escolher quaisquer plugins que desejar. Mas isso tem o custo de manter o VPS você mesmo.

De qualquer forma, você precisará pesquisar o que precisará para ter as funções e recursos disponíveis para projetar sua comunidade.

Então, a partir daqui, vamos realizar um experimento mental. Forneça uma ideia de comunidade de exemplo. Podemos até usar uma comunidade existente e perguntar quais #plugins (se necessário), #temas e #componentes-de-tema precisaríamos para realizar o que essa comunidade tem?

1 curtida

Olá @Heliosurge
:slight_smile: esqueça esses BBS, lembro do newsnet administrado pelo UKC em Canterbury através de linhas discadas a 300 baud e lembro de serviços e clientes baseados em NNTP como o freeagent

Concordo plenamente que analogias e, de forma mais ampla, apenas palavras quando organizadas em frases, muitas vezes apenas encapsulam o entendimento entre as orelhas do escritor. Mesmo que criem entendimento em outro lugar, não há garantia de que seja o mesmo! :slight_smile:

Vamos tentar isto
Entendo que o discourse tem um lado servidor que contém um banco de dados de posts e de usuários e tanto posts quanto usuários têm atributos e estão interligados. Que isso é hospedado em algum lugar, o host pode ser virtual, uma rede de entrega de conteúdo, etc.

Entendo que no lado do cliente há uma camada de apresentação que usa os posts e as credenciais de autenticação e direitos de acesso de um usuário e links para criar um feed. Vejo que filosoficamente muitas das estruturas usadas são hierárquicas. A hierarquia é obscurecida por muitos mecanismos de interligações.

Presumo - acho que com segurança - que o esquema de cores, etc., usado pelo lado do cliente está vinculado em tempo de execução a um tema que pode ser substituído, de modo que a execução subsequente se vincule a um novo tema e não altere o conteúdo, mas altere a aparência da apresentação e possivelmente até alguns componentes estilísticos de navegação funcional, mas fico vago e especulativo neste ponto.

Estou ciente de que os componentes de tema existem e atualmente tenho um modelo em minha cabeça que diz que uma combinação de componentes de tema faz um tema, mas novamente estou um pouco instável nisso. Não tenho uma compreensão de alguns exemplos do que um componente de tema faz.

Tenho menos compreensão de plugins. Entendo a parte arquitetônica de que eles estão no lado do servidor e, portanto, ficam na instância em execução que está servindo conteúdo. Não entendo bem a interação entre um tema e um plugin. Eu suporia que, se você estender as capacidades do lado do servidor, terá que estender a apresentação do lado do cliente, mas essa parte é incerteza sobre a incerteza.

Também não sei se o modelo arquitetônico completo é composto por: servidor, software de serviço, aplicativo cliente/navegador, componentes de tema e plugins ou se existem outros componentes.

Tenho perguntas como “uma comunidade discourse padrão não fica atrás de um paywall ou outros mecanismos de monetização, um poderia ser adicionado?” Os dados são armazenados em um sistema com algum grau do triunvirato de CIA - confidencialidade, integridade e disponibilidade. Isso pode ser reforçado para os padrões exigidos para padrões de interoperabilidade de saúde em ambos os lados do Atlântico

Este último requisito move a conversa para ética e como o software suporta preocupações legais, morais e culturais, acho que está no tópico para este fórum. A compreensão arquitetônica é um pré-requisito para o design da solução, assim como a determinação de princípios filosóficos que moldam as instalações consideradas desejáveis, essenciais e indesejáveis/inaceitáveis/censuráveis e a censura deve ser processada.

1 curtida

Ok, você está entendendo. O banco de dados principal de tópicos agrupados em categorias e organizados com tags, por exemplo, aqui.

Existem 2 tipos de Theme

  • Básico: apenas modifica a aparência base do Discourse.
  • Tema Completo: modifica a aparência e vem pré-empacotado com alguns Theme component para alterar o que pode ser feito com componentes para mudar como as coisas funcionam.

Esta imagem. Invoca o menu da Barra Lateral.

Na parte inferior, onde destaquei com a Seta, Expanda-a. Você tem uma coleção de Temas, do básico ao completo. Experimente, escolha um e veja como o Meta aqui é alterado em termos de aparência e sensação.

Tente alguns diferentes e explore. Acho que isso ajudará a obter uma melhor compreensão do que os Temas podem fazer com e sem componentes.

O Air Theme, por exemplo, é um tema completo com componentes pré-instalados.

2 curtidas

Obrigado
Acho que esta resposta me mostrou que os temas são carregados no lado do servidor e que o lado do cliente, na inicialização, consulta quais temas estão disponíveis e, em seguida, com cada recuperação de dados (ou instanciação de uma sessão?) a ser apresentada, fornece um ID de tema que o servidor usa para codificar quais elementos HTML serão encaminhados ao cliente para exibição.

Além disso, você disse que o aplicativo precisa ser reconstruído. Presumo que seja um processo de edição de link? Pelo menos você está descrevendo um mecanismo estático, não bibliotecas vinculadas dinamicamente?

Ainda não tenho ideia do que os serviços de plug-in podem fornecer e como um tema interagiria, além de mudar meu ícone de um círculo para um quadrado, o que parece acontecer quando selecionei aquele que você chamou, foi o ar?

Ao contrário de plataformas de fórum mais antigas (vBulletin, phpBB), o Discourse não é uma coleção de scripts do lado do servidor (php) e um banco de dados separado.

O Discourse compreende duas metades: um backend que fica no Docker e um aplicativo javascript de página única que é servido ao dispositivo cliente.

Qualquer coisa que exija uma alteração no backend afetará o contêiner Docker, o que, nas instalações mais básicas, necessita de um pequeno tempo de inatividade. É a isso que as pessoas se referem quando dizem que o aplicativo precisa ser reconstruído. O arquivo de configuração (um documento yml) que controla como o contêiner é construído precisa ser editado e, em seguida, uma reconstrução é emitida para o launcher via SSH. A instalação de plugins significa uma reconstrução, enquanto alterações simples no SMTP são mais parecidas com uma reinicialização.

A introdução de novos temas e componentes de tema são efetivamente alterações de front-end feitas dentro do aplicativo web em execução. Eles não resultam em nenhum tempo de inatividade, pois o aplicativo e o banco de dados subjacentes permanecem efetivamente inalterados.

1 curtida

Obrigado Steven :slight_smile:

Tenho algumas deficiências técnicas. Minha experiência prática é anterior ao Docker em uma geração! Na verdade, lembro-me de quando a justificativa de Gosling para o Java como uma linguagem leve foi a publicação mais quente do mês - na época, eu era K&R C em ingres & oracle & sysadmin & dba

Acho que estou detectando o uso das palavras front-end e back-end como processos de execução no servidor e não como lado do cliente do lado do servidor, está certo?

Temos processos cooperativos com memória compartilhada ou pipes ou algo entre eles no servidor e, em seguida, um fluxo de mensagens encapsulado em TCP enviando coisas para o IP que tem o software cliente?

Alguém desenhou um diagrama de blocos desse material de arquitetura?

Eu acho que isso definitivamente se afastou de Community :slight_smile: Vamos movê-lo para Dev, pois é mais sobre os elementos técnicos.

1 curtida

Este tópico parece ser uma mistura de duas ideias:

  1. “Uma visão geral/diagrama de alto nível seria útil para eu projetar minha instância do Discourse”
  2. “Estou tentando comparar a funcionalidade do Discourse com meus requisitos, mas não consigo encontrar certas informações”.

O primeiro ponto sobre arquitetura foi discutido um pouco, mas infelizmente ainda há ausência de um diagrama de alto nível. Espero que alguém com um melhor entendimento possa desenhar algo para nós aqui com mermaid, no entanto, eu posso pelo menos (esperançosamente) fornecer um pouco de orientação para seus requisitos originais.

O Discourse pode atender aos requisitos e padrões de segurança da informação médica/governamental/automotiva?

Você precisaria ser mais concreto sobre quais são exatamente esses requisitos. No entanto, considerando que o mundo médico e automotivo não estão muito distantes, posso compartilhar minha experiência na esperança de que ajude. Para contexto, eu gerencio uma instância innersource para um grande fornecedor automotivo na Alemanha. Tem sido uma dor de cabeça legal, mas pode ser alcançável com um nível ingênuo de persistência, níveis idiotas de resiliência e uma equipe jurídica incrivelmente prestativa e paciente. Sério, seja extra gentil com sua equipe jurídica :laughing:

As maiores perguntas que você precisará responder são:

  1. Quem está acessando as informações?
  • O público?
  • Funcionários?
  • Uma mistura de funcionários e público?
  1. Que tipo de informação estará na plataforma?
  • Apenas público?
  • Mistura de público e interno?
  • Confidencial? – observe que no momento em que você planeja hospedar isso na plataforma, as coisas ficam muito mais difíceis
  1. Onde será hospedado?
  • no local
  • Pelo Discourse ou outro host

Em nosso exemplo, éramos apenas internos (Funcionários), Apenas Informações internas (ou seja, compartilhar informações da empresa que não são confidenciais) e originalmente auto-hospedado, mas mudamos para o Discourse para hospedagem.

Em termos de hospedagem com o Discourse, nosso Escritório de Segurança da Informação não viu problemas significativos quando escolhemos migrar.

Também estamos distribuindo essas informações por várias nações: China, Índia, Alemanha, Romênia, EUA, França, etc. A China foi um pouco complicada, mas a equipe do Discourse fez um trabalho fantástico para nos ajudar a superar os problemas de CDN que enfrentamos.

Observe que a pergunta número 3: “Onde será hospedado” é a que responde à maioria de suas perguntas sobre proteção de dados e segurança.

Login e Autorização

Para Login, você provavelmente vai querer usar SAML. A equipe do Discourse ajuda você a configurar isso se você for um cliente empresarial deles. Nosso IDP só é acessível quando você está atrás da VPN da nossa empresa, o que adiciona uma camada extra de segurança para nós (ou seja, você nem consegue carregar a tela de login a menos que esteja em nossa rede)

SSH

Além disso, uma instalação padrão fornecerá criptografia ssh. Eu não sou da CIA, então não sei se eles precisam de mais do que isso. :male_detective: alegadamente

Interligando o Discourse com outras ferramentas

Use a API

Para interligação, a API do Discourse é sua amiga. Você pode obter e definir dados usando uma chave de API e algum python.

Há um ótimo conjunto de exemplos aqui: Discourse REST API comprehensive examples

Anonimizando dados do usuário para conformidade com o GDPR

Em termos de GDPR, você poderia extrair os dados da plataforma e omitir o usuário no ponto de origem executando uma consulta no explorador de dados.

Isso contrasta com o uso da API do Discourse, onde a resposta JSON geralmente inclui informações completas sobre a postagem, como:

  • O conteúdo da postagem (HTML cozido e Markdown bruto)
  • O ID da postagem
  • O ID do tópico ao qual pertence
  • O nome de usuário do autor
  • O número da postagem dentro do tópico
  • Os carimbos de data/hora de criação e última atualização da postagem
  • O número de curtidas, respostas, citações e assim por diante.

Como obter Posts em Ascensão e UI familiar?

Você pode não ter visto, mas poderia combinar este tema:

com algo como isto:

3 curtidas

Para a lei HIPAA nos EUA, com qualquer tipo de dado de registro médico, os profissionais podem compartilhá-lo com familiares/amigos/cuidadores + qualquer outra pessoa que o paciente escolher se eles assinarem um formulário oficial de liberação de informações. Estes geralmente têm uma validade de apenas alguns meses ou anos.

Um diagrama simples para isso seria: todos os dados médicos estão em um cofre gigantesco trancado que nunca pode ser aberto para qualquer emergência, a menos que o pessoal de serviços de emergência tenha assinado a papelada do paciente.

A menos que: o paciente esteja inconsciente, especialmente em coma de longo prazo ou de outra forma não são de são mente, e/ou declarado por um tribunal + juiz como incapaz de cuidar de seus próprios assuntos, caso em que outra pessoa pode ser nomeada para isso.

Qualquer um desses dois cenários poderia ser representado por uma chave que pode abrir o cofre, então mover alguns dados médicos para um cofre secundário com acesso restrito apenas a pessoas específicas.

Que poderia ser um grupo de pessoas, mas elas teriam que ser nomeadas individualmente na maioria dos casos, acredito, para serem autorizadas a ter qualquer acesso a dados médicos.

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

1 curtida