federacao Page History


Federação

Esta página contém a documentação sobre a funcionalidade de Federação no Noosfero. Ver todas as tarefas.

Guia de desenvolvimento para novos contribuidores

Projeção para último mês de desenvolvimento

Descrição

O conceito de redes sociais federadas consiste em múltiplas redes sociais conectadas em que usuários de uma rede podem se comunicar com outros usuários em outra rede envolvida na federação. Essa comunicação é feita através de protocolos para redes sociais distribuídas e não requer que o usuário possua uma conta em cada uma das redes participantes da federação. O objetivo de desenvolver o suporte a federação do Noosfero é de disponibilizar ao Portal do SPB conectividade e comunicação com outras redes sociais do Governo Federal, criando meios de integração, transparência e acesso a dados. A federação tornará possível o desenvolvimento de mecanismos que permitirão os usuários destas diferentes redes sociais conectarem-se uns com os outros através de uma única e simples interface de conexão com pessoas dentro e fora dos órgãos e governos. Promoverá a aproximação ainda maior da sociedade com o governo, do governo com seus softwares, cidadãos e beneficiários e criará um rede de interoperabilidade entre sociedade, desenvolvimento de TI e governo.

Funcionalidades a Serem Suportadas

A Federação no Noosfero focará na comunicação e relacionamento entre usuários de redes diferentes. Dessa forma, deve permitir que usuários se autentiquem, comentem, postem conteúdo em outros perfis, sigam comunidades e usuários em redes federadas.

Como consequência, o usuário de uma rede, quando autenticado em outra rede com a qual está federado, terá acesso a todas as funcionalidades que um usuário nativo tem, com exceção de CMS, uma vez que o conteúdo desse usuário será mantido na sua rede de origem. Assim, todas as referências ao nome de usuário visitante farão referência a sua rede de origem, tanto através do hyperlink que levará ao perfil do usuário na rede de origem, quanto à formatação do próprio nome de usuário, que aparecerá no formato nome@rede. Por exemplo, o usuário Zé, registrado na rede softwarepublico.gov.br, que está em federação com a rede softwarelivre.org, se autentica no softwarelivre.org e posta comentários. Nesse comentário postado, o nome do usuário dono do comentário aparecerá como ze@softwarepublico.gov.br e ao clicar nesse nome de usuário seremos levados ao perfil de Zé em softwarepublico.gov.br.

Ademais, a Federação deve permitir que usuários de redes não Noosfero (Twitter, Diaspora, Facebook, Google+) se autentiquem e postem conteúdo. Por restrições de protocolo, usuários de redes que não usam Noosfero terão funcionalidades limitadas de acordo com as restrições de sua API, visto que atualmente nenhum protocolo suportaria estabelecer relações de amizade, entre outras, entre usuários de redes fechadas e usuários de redes abertas, como o Noosfero, de forma descentralizada das redes abertas.

A Federação no Noosfero não prevê, inicialmente, a criação de uma "rede de usuários nômades" completamente descentralizada, onde o usuário pode migrar a sua conta/identidade de uma rede para outra ou acessar todas as informações e conteúdos de sua conta a partir de uma outra rede.

Roadmap Para a Federação

A implementação da Federação completa no Noosfero foi dividida em 3 fases, cada uma com objetivos específicos que atingem um nível de conectividade entre usuários de redes diferentes. Cada fase contém a lista de requisitos para atingir esses objetivos. Uma fase de preparação também foi estabelecida para a implementação de features necessárias para a integração do Noosfero com o protocolo de redes federadas.

A primeira fase da federalização, aqui chamada de Intercomunicação, tem como objetivo final que usuários cadastrados em diferentes redes Noosfero possam se comunicar com usuários de outras redes da federação. Essa comunicação inclui comentários em conteúdos tanto de comunidades quanto de outro usuários, respeitando a opção de privacidade deste conteúdo. Na segunda fase, essa comunicação é estendida para usuários de redes não-Noosfero. Já a terceira fase tem como objetivo permitir que usuários de redes federadas possam criar relacionamentos entre si e relações de filiação com comunidades em outras redes Noosfero.

Fase de Preparação: Inserindo seguidores

  • Como usuário, eu posso seguir um outro usuário no meu ambiente Noosfero. Dessa forma posso receber atualizações na minha aba de atividade de rede das atividades públicas desse usuário, podendo também fazer um comentário nessas atualizações, respeitando as opções de privacidade do conteúdo.
  • Como usuário, eu posso classificar os usuários que sigo em uma categoria (como Amigos, Família, etc) da mesma forma que já é possível classificar amigos.
  • Como usuário, eu posso fazer menção a outro usuário em um comentário ou mensagem de mural. Dessa forma esse usuário receberá uma atualização na sua aba de atividade de rede com o conteúdo ou mensagem de mural onde há a menção.
  • Como usuário, eu posso postar uma mensagem no meu próprio mural e selecionar uma ou mais categorias (como Amigos, Família, etc) de amigos ou seguidores que poderão visualizar essa mensagem. Apenas amigos ou usuários que eu sigo e que classifiquei em tal categoria poderão ver essa mensagem em suas abas de atividade de rede e no meu mural.
  • Como usuário, eu posso escolher a opção no meu perfil de não permitir que outros usuários sigam meu perfil.
  • Como usuário, eu posso seguir uma comunidade no meu ambiente Noosfero. Dessa forma posso receber atualizações na minha aba de atividade de rede das atividades públicas dessa comunidade, podendo também fazer um comentário nessas atualizações, respeitando as opções de privacidade do conteúdo.
  • Como usuário dono de uma comunidade, eu posso escolher a opção no perfil da minha comunidade de não permitir que outros usuários sigam minha comunidade.

Primeira Fase: Intercomunicações

Milestone | PAD

  • O administrador da rede deve ser capaz de selecionar na interface web, a partir de uma lista de redes Noosfero conhecidas pela comunidade, quais estarão federadas com sua rede. Assim, a escolha do administrador se dá na forma de uma whitelist de redes cujos usuários serão aceitos em sua rede. É sugerida a utilização do diretório de redes Noosfero, hospedado em http://directory.noosfero.org/, para o processo de descoberta de redes Noosfero disponíveis para seleção. Dessa forma a adição de uma nova rede é feita de forma centralizada, além de permitir facilmente a importação dos dados de cada rede através do JSON já existem.
  • Um usuário de um rede Noosfero pode fazer login em outras redes federadas. O usuário terá a opção de "Entrar com conta de outra rede", onde poderá fazer login com um identificador WebFinger no estilo fulano@rede. Nos locais em que o nome do usuário possui um link para seu perfil, esse link levará para o perfil na rede de origem.
  • Um usuário logado com uma conta de uma rede federada poderá postar conteúdo na rede em que ele está visitando na forma de comentários em conteúdos como artigos ou outros e sugestão de artigos para comunidades ou blogs.
  • Um usuário logado com uma conta de uma rede federada possuirá, na rede sendo visitada, um painel de controle com opções limitadas. Em especial, esse painel de controle não incluirá opções de CMS, editar aparência e mudança de senha, uma vez que o conteúdo, aparência, blogs e senha do usuário é mantido na sua rede de origem. Assim, esse usuário deve ser visto como um pseudo usuário, ou usuário de identidade, na rede visitante, uma vez que o usuário se encontra em outra rede.
  • Um usuário logado com uma conta de uma rede federada apenas poderá ver os conteúdos públicos, respeitando assim a privacidade desses conteúdos.
  • Uma subclasse de Profile deve ser utilizada para gerenciar o pseudo usuário. Essa classe deve possuir opções limitadas de perfil, além de armazenar meta informações do usuário.

Segunda Fase: Integração externa

  • Possibilitar ao usuário, através de um link “Entrar com”, fazer login utilizando redes não-Noosfero através do protocolo OAuth, e.g. Facebook, Twitter, Google, Github, OpenID. O mesmo tipo de identificação usado para representar usuários de outras redes Noosfero na nova rede é usada para usuários de redes externas, ou seja fulano@facebook.
  • Para serviços que suportam OStatus e WebFinger, o login será feito através do link “Entrar com conta de outra rede”, onde o usuário informará sua identidade WebFinger. A integração com a rede externa que suporta OStatus será feita com base nos protocolos de mensagem definidos, além de interações com a API de cada serviço quando necessário.
  • Ao se autenticar com uma conta externa usando OAuth, o usuário não deverá ser solicitado a inserir novos dados para criar uma pseudo conta (com uma entrada nas tabelas profiles e users), como hoje é feito nos plugins oauth_client. Dessa forma, após a autenticação, essa conta externa deve ser associada a um pseudo perfil que deve ser criado automaticamente. Um usuário logado com um desses serviços externos possui apenas uma conta de identidade e portanto suas funcionalidades são limitadas, uma vez que o pseudo perfil não possui CMS, podendo apenas fazer uso de comentários e adição de conteúdo em outros perfis.
  • Essa funcionalidade deve ser implementada na forma de plugin. A implementação de integração OAuth com algumas redes específicas (Facebook, Google) podem ser encontradas em gems.

Terceira Fase: Inter-relações

  • Um usuário logado com uma conta de uma rede Noosfero federada deve ser capaz de seguir usuários e comunidades, além de marcar empreendimentos como favoritos. Esses usuários e comunidades poderão ser vistos no perfil do usuário na sua rede de origem. A mesma sintaxe usuário@rede ou comunidade@rede será usada nas listas “Seguindo” e “Seguidores”.
  • O usuário deve ser capaz de escolher uma categoria (Amigo, Família) para um usuário de outra rede que ele segue.
  • A partir da sua rede de origem, o usuário deve ser capaz de receber, em sua aba de atividades da rede, as notificações de usuários e comunidades que segue que se se encontram em uma rede federada.
  • O usuário deve ser capaz de responder/comentar, a partir do seu mural na sua rede de origem, notificações de perfis de outra rede.
  • O usuário deve ser capaz de mencionar usuários de outra rede e receber notificações de menções feitas por usuários de outras redes.
  • Como usuário, eu posso postar uma mensagem no meu próprio mural e selecionar uma ou mais categorias e apenas amigos ou usuários que eu sigo e que classifiquei em tal categoria poderão ver essa mensagem, mesmo que eles sejam usuários de uma rede federada.

Comparativo entre Plataformas Federadas Existentes

OStatus

  • Redes construídas em cima desse protocolo: Gnu-Social, rstat.us
  • Redes que oferecem suporte a esse protocolo: Friendica

O OStatus é um padrão aberto para disseminar e obter atualizações de status distribuídas. Foi alvo de uma tentativa de maior padronização e desenvolvimento pela comunidade através de um Community Group do W3C. Apesar do grupo atualmente estar parado, o OStatus continua sendo um dos padrões mais bemdocumentados para redes sociais distribuídas. Constituído de um conjunto de protocolos abertos comoAtom, Activity Stream, Salmon, Webfinger e PubSubHubbub, o foco do OStatus é disseminação de atualizações públicas, uma vez que se baseia em feeds RSS, e portanto é ideal para microblogs e semelhantes onde não há privacidade de conteúdo. Como o Noosfero possui exigências de permissões e visibilidade de conteúdo, apenas o padrão OStatus não é suficiente para atender a demanda de federação do Noosfero.

Protocolo Diaspora

  • Redes construídas em cima desse protocolo: Diaspora
  • Redes que oferecem suporte a esse protocolo: Friendica, Hubzilla

Diaspora é um software escrito em Ruby On Rails que implementa um serviço de rede social federada. De desenvolvimento ativo, o Diaspora é uma das redes federadas mais difundidas. Além disso, seu protocolo de federação é também implementado por outras redes federadas como Friendica e Hubzilla, que buscam oferecer suporte a federação com redes Diaspora. Parte do protocolo de federação do Diaspora está implementado na gem diaspora-federation. Essa biblioteca implementa a busca de usuários em outras redes através de WebFinger, além de troca de mensagens públicas ou privadas através de um subset do protocolo Salmon. Por ser o mais difundido e por oferecer troca de mensagens privadas, o protocolo Diaspora é o mais adequado para a federação do Noosfero.

pump.io API

  • Redes construídas em cima desse protocolo: rede pump.io, identi.ca
  • Redes que oferecem suporte a esse protocolo: Friendica (parcial)

A API do pump.io tem o objetivo de oferecer microblogging distribuído, logo tem um princípio semelhante ao OStatus no sentido de permitir a disseminação de mensagens públicas. No entanto, a API do pump.io utiliza protocolos específicos, substituindo por exemplo o Atom por endpoints REST para publicação de conteúdo. Além de princípios REST, o pump.io utiliza Activity Streams para o formato de mensagens e OAuth para autenticação para os endpoints da API.

Tent

  • Redes construídas em cima desse protocolo: cupcake.io

O protocolo Tent surgiu da necessidade de utilizar envio de mensagens privadas, privacidade e mobilidade de usuários, características que faltam no OStatus. Tent foi então criado do zero, tendo como base o JSON para troca de mensagens. No entanto, esse protocolo não foi muito difundido além de ser criticado por tentar reinventar o OStatus. Hoje o desenvolvimento desse protocolo está estagnado.

Zot

  • Redes construídas em cima desse protocolo: Hubzilla

Zot é um protocolo baseado em JSON que procura oferecer serviços e comunicação descentralizada. Dessa forma, por ir um passo além da federação em direção a descentralização completa, Zot procura oferecer identidade e autenticação descentralizada. Ou seja, usuários podem ser vistos como nômades e podem acessar seus dados de qualquer rede dentro da federação. A federação do Noosfero não prevê usuários nômades ou descentralização completa, uma vez que o conteúdo do usuário deve permanecer apenas no seu ambiente Noosfero original, e por isso o Zot não se encaixa nessa proposta de federação.

Quais Sistemas Federados Existentes Serão Suportados

O protocolo Diaspora é o mais difundido e portanto é importante oferecer suporte. Para isso, as relações entre os usuários Noosfero precisam ser atualizadas para incluir o conceito de seguidores. Feito isso, o protocolo Diaspora oferece os recursos necessários para uma federação no Noosfero integrada com outras redes federadas como Diaspora, Friendica e Hubzilla.

É importante também oferecer suporte ao OStatus, uma vez que se trata do protocolo mais próximo de uma padronização oficial para federação. Nesse caso, o suporte a OStatus só seria oferecido para mensagens e comentários públicos, uma vez que o OStatus não oferece privacidade.

Definição de Protocolos de Comunicação e Compartilhamento entre redes Noosfero Federadas

A essência do protocolo de federação do Noosfero é o protocolo Diaspora, no entanto protocolos adicionais precisam ser suportados para oferecer todas as funcionalidades desejadas para uma federação transparente. Assim, para autenticação em uma rede federada será utilizado o conjunto do WebFinger, OAuth e a API do Noosfero.

  • Protocolo para descoberta de identidade: WebFinger
  • Protocolo para autenticação e autorização: OAuth

Para as trocas de mensagens entre usuários, como para começar a seguir e enviar comentários e mensagens em threads, será utilizado o protocolo Diaspora, que pode ser encontrado na gem diaspora-federation.

  • Protocolo Diaspora para realizar comunicação entre usuários: subset do protocolo Salmon.

Por fim, para oferecer suporte ao OStatus, para as comunicações diferentes do protocolo Diaspora o Noosfero oferecerá:

  • Troca de mensagens em thread como mural e comentários: Salmon.
  • Notificações de conteúdo de subscrição: PubSubHubbub

Como Expandir no Futuro

Para oferecer compatibilidade com as plataformas federadas mais estabelecidas e utilizadas, como o Diaspora, esse projeto de federação do Noosfero foca no conceito de compartilhamento assimétrico, com base na ideia de seguidores. No entanto, é possível expandir e aprofundar a federação entre instâncias Noosfero no futuro ao possibilitar que relações simétricas, como amizade e associação a comunidades, sejam realizadas entre usuários de redes diferentes. Isso pode ser feito com o protocolo para comunicação DFRN, com mensagens utilizando o formato ActivityStreams. Esse protocolo é utilizado pelo software Friendica e oferece privacidade para o compartilhamento de conteúdo e requests. No entanto, dada a excessiva robustez e complexidade do protocolo, juntamente com o fato de ser pouco difundido, é recomendado utilizar uma API própria no lugar desse protocolo para realizar as funções de pedido de amizade/participação de comunidade.


Last edited by Larissa Reis