Raul Hacker Club

Editar

mssw — Message Switch

Este é um projeto coletivo, em andamento, organizado por Aurium, Diguliu e Gomex.
Uma infra definida e extensível por plugins para repasse de mensagens, que inicialmente irá substituir sistemas de lista de discussão.

mssw - primeira modelagem logo mssw

Repositório: https://gitlab.com/raulhc/mssw

Decisões Tecnológicas

  • Backend node.js
  • Codificação em Coffeescript
  • Configurações em CSON
  • Um core mínimo, sem interface com o mundo exterior, define models base e gerencia os plugins que definem o ambiente.

Funcionalidades do Core

  • Carregamento automático e gestão de dependências entre plugins.
  • Definição dos models
  • Repasse de mensagens
  • Sistema de log

Models

Modelos, como no padrão MVC. "classes que devem ser persistidas."

Plugins podem adicionar livremente novos atributos aos models, de acordo com sua necessidade.

Entidade

Quem é origem e destino de mensagens.
  • Tipo:
    • Individual - Humano ou serviços externos. É o destino final de mensagens;
    • Coletivo - engloba entidades agnósticamente.
      Características:
      • Envia mensagens definidas por seus membros. (Um plugin pode exigir um determinado papel para permitir essa ação.);
      • Ao receber repassa a mensagem a suas entidades filhas.
  • Atributos nativos:
    • ID - imutável
    • identificador - (login) pode mudar, caso nenhum plugin o impeça.
    • senha - you know...
    • Nome - identifica de forma mais humana.
  • Funcionalidades nativas:
    • Enviar mensagens;
    • Receber mensagens;
    • Salvar arquivos;
    • Modificar (salvar nova versão) de arquivo;
    • Buscar por meta-dados em suas mensagens e arquivos;
    • Deletar mensagens, arquivos, ou versões de arquivos;
    • É capaz de identificar que uma mensagem já foi recebida e pode negar seu recebimento, para impedir o caso de múltiplas cópias mensagens quando o indivíduo fizer parte de coletivos aninhados.

Mensagem

Aquilo que é possível de ser enviado.

Mensagens podem anexar arquivos.

Arquivos

Documentos ou imagens que podem ser repetidos em N mensagens e versionados no ambiente.
  • Atributos nativos:
    • ID;
    • RevisionOf - aponta para o arquivo do qual este deriva;
    • Data - the raw data, or any refference managed by a plugin;

Papeis

Gerenciam permissões implementadas pelos plugins.

Papeis são definidos pelos plugins e são aplicáveis a uma entidades em relação a outra.

Plugins Necessários

Persistência de Dados em FS

Implementa funcionalidades básicas de um banco NoSQL, sem exigir nenhuma instalação extra, como faz o databank-disk. É interessante considerar a possibilidade de usar databank como base para persistência.

Persistência de arquivos em FS

Permite guardar arquivos diretamente no HD para não encher o banco com binários.

Conexão IO de e-Mail

Permite entrada e saída de e-mails

Fórum

Define papeis e regras para que uma entidade coletiva funcione como fórum na perspectiva da web ou como lista de discussão na perspectiva do e-mail.

Cadastro e administração de usuário via web

Permite que uma pessoa crie uma entidade indivíduo, via página web e que, quando autenticado, possa entrar, criar e gerir grupos.

Cadastro e administração de usuário via e-mail

Permite que uma pessoa crie uma entidade indivíduo via e-mail e que, possa entrar, criar e gerir grupos.


Você está em RaulHC Projetos Mssw
Histórico: r6 < r5 < r4 < r3 — última revisão em 28 Aug 2014, por Aurélio