\documentclass{llncs}

\usepackage{llncsdoc}
\usepackage{graphicx,url}
\usepackage[utf8]{inputenc}
\usepackage{float}
\usepackage{setspace}

\usepackage{tabularx}
\usepackage{cite}
\usepackage{hyperref}

%------------------------------------------------------------------------------

\begin{document}
\sloppy
\title{Brazilian Public Software Portal: an integrated platform for collaborative development}

\titlerunning{Brazilian Public Software}

\author{Paulo Meirelles\inst{1,2}, Himer Neri\inst{1}, Antonio Terceiro\inst{1}\\
        Lucas Kanashiro\inst{2}, Melissa Wen\inst{1}}

\authorrunning{Meirelles et al.}

\institute{UnB Faculty in Gama  -- University of Bras\'ilia\\
  \'Area Especial de Ind\'ustria Proje\c{c}\~ao A, Setor Leste, Gama, DF, Brazil \\
  \texttt{\{paulormm,hilmer\}@unb.br \\
          terceiro@softwarelivre.org, melissa.srw@gmail.com}
\and FLOSS Competence Center -- University of S\~ao Paulo \\
  Rua do Mat\~ao, 1010, S\~ao Paulo, SP, Brazil\\
  \texttt{lkd@ime.usp.br}
%\and QA Services Team -- Linaro Limited \\
%  \texttt{terceiro@linaro.org}
}


\maketitle
%------------------------------------------------------------------------------

\begin{abstract}
  % Contexto
  % Problema
  % Soluções propostas
  % Frase de impacto
\end{abstract}

\section{Introduction}
\label{sec:intro}

%TODO: Paulo
Governo Federal vem nos últimos anos melhorando seus processos de
desenvolvimento e adoção de software. Em 2003, a recomendação da adoção de
software livre passou a ser uma política, incentivada com a criação do Guia
Livre. Em 2007, a Secretaria de Logística e Tecnologia da Informação (SLTI) do
Ministério do Planejamento, Orçamento e Gestão (MP) lançou o portal do Software
Público Brasileiro (SPB) -- um sistema web para o compartilhamento de projetos
de software no Governo.

Por um lado, a Instrução Normativa 04/2012 indica que os gestores devem
consultar as soluções existentes no portal do SPB antes de realizar uma
contratação de software. Por outro, a evolução técnica do portal do SPB foi
comprometida, desde 2009, ao não acompanhar a evolução do seu framework base, o
OpenACS. Não houve o lançamento de novas versões do portal desde então.

Uma nova plataforma para o SPB está sendo desenvolvida pela Universidade de
Brasília, através dos seus Laboratórios LAPPIS e MídiaLab em parceria com o
Centro de Competência em Software Livre da Universidade de São Paulo
(CCSL-USP). A nova plataforma é baseada na integração de ambientes
colaborativos, sistemas de controle de versão e de monitoramento da qualidade
do código-fonte, e está sendo desenvolvida por uma equipe heterogênea composta
por alunos, professores e profissionais, aplicando métodos ágeis e práticas de
desenvolvimento distribuído de software.

\section{Platform for collaborative software development}

%TODO: Paulo e Melissa
O conceito de software público se diferencia do de software livre em alguns
aspectos, destacando-se a atribuição de bem público ao software. Isso significa
que o Governo, especificamente o MP, assume algumas responsabilidades que
garantem ao usuário do software, em especial os órgãos públicos, condições
adequadas de uso. Embora haja diferenças entre o que é um software livre e um
software público brasileiro, há princípios comuns como a tendência da
descentralização na tomada de decisões, do compartilhamento de informações e da
retroalimentação. Por isso, a nova plataforma para o SPB foi pensada para
contemplar ferramentas que promovam a colaboração e a interação nas comunidades
(por gestores, usuários e desenvolvedores) dos projetos, conforme as práticas
usadas nas comunidades de software livre. Isso inclui listas de e-mail, fóruns
de discussão, issue trackers, sistemas de controle de versão e ambientes de
rede social.

Para integrar as ferramentas e prover a autenticação única nos serviços da
plataforma, um sistema web chamado Colab, que funcionada como proxy reverso
para os ambientes, está sendo evoluído. Em resumo, o Colab oferece a integração
de busca, autenticação e apresentação, provendo um único ambiente ao usuário
que tem em seu perfil algumas métricas de contribuições (e-mails para listas,
inserções em wikis, cadastros de issue e commits nos repositórios).

O Colab foi desenvolvido para o Interlegis (programa do Senado Federal). Por
padrão, funciona integrado com o servidor de listas de e-mail GNU Mailman e
utiliza o Apache Lucene Solr para a indexação dos conteúdos para as buscas. A
partir de 2014, as ferramentas GitLab e Noosfero foram integradas ao Colab para
compor o novo SPB.

O GitLab é uma plataforma de desenvolvimento colaborativo social integrada ao
sistema de controle de versão Git. É o ambiente mais técnico: os repositórios
dos projetos do SPB, com páginas wiki, issue tracker e mecanismos de controle
de versão de código estão nele. O Noosfero é uma plataforma para rede social e
de economia solidária que contém funcionalidades de gerenciamento de conteúdos
(CMS), além de permitir a configuração das páginas de usuários e de comunidades
de forma flexível. É o ambiente de maior interação com o usuário do SPB, desde
os cadastros até o acesso às páginas dos projetos para download, leitura de
documentação e contato com os responsáveis.

A integração dessas ferramentas não está totalmente completa, pois demanda a
solução de questões complexas de arquitetura de software. O que foi
desenvolvido em 2014 está funcional e já supera o antigo portal do SPB em
muitos aspectos. Em 2015, os perfis das diferentes ferramentas estão sendo
integrados de modo que o usuário o gerencie em um único lugar. Os controles de
acesso e a gestão de permissões também estão evoluindo. O mecanismo de coleta
de dados e busca está sendo refatorado para acessar os conteúdos das novas
ferramentas integradas ao Colab. Além disso, o Mezuro, um sistema para o
monitoramento de métricas de código-fonte, está sendo acoplado ao Colab para
fornecer acompanhamento da qualidade do código dos projetos.

%TODO: Melissa
A integração dos ambientes colaborativos vai além dos aspectos funcionais.
Oferecer à população uma experiência unificada desses ambientes é fundamental
para estimular o uso da plataforma, uma vez que reduz a percepção de
complexidade.

Assim, a arquitetura da informação do portal foi redesenhada para proporcionar uma
navegação transparente e que atenda aos usuários de diversos perfis. Os modelos
de interação de cada ferramenta passou por um processo de harmonização, reduzindo a curva de
aprendizagem. Ao mesmo tempo, um novo estilo visual foi criado para unificar a navegação e atender as diretrizes de
Identidade Padrão de Comunicação Digital do Governo Federal.

Com o crescimento das funcionalidades e o acoplamento de novas ferramentas, o estilo visual foi constantemente evoluído para manter a navegação unificada. Com ferramentas de contextos distintos, que muitas vezes apresentavam funcionalidades de conceitos semelhantes, construir interfaces transparentes com a união dos diferentes contextos se tornou um desafio. Em diversos momentos, para cada funcionalidade requisitada pelo portal, nos deparamos com dados provenientes das ferramentas com padrões de estrutura e informação distintos que precisavam dançar juntos. A interface passou a ser o ponto de encontro dessas informações, um elo que precisava estar transparente ao usuário. Funcionalidades em comum entre as ferramentas como visualização e edição de perfil e busca, visualização e edição de conteúdo foram harmonizadas a estrutura e demais funcionalidades do portal.

Outro ponto crítico está relacionado a responsividade. Provida e suportada em diversas maneiras por cada ferramenta e em alguns casos, não existente, a responsividade do portal precisou ser elaborada de acordo com o limite de cada ferramenta. No caso do Noosfero, que não provê um suporte a responsividade oficial, o projeto precisou se dedicar a expansão da ferramenta, com diversas contribuições e diálogos com a comunidade e mantenedores. Todos os integrantes do projeto se envolveram desde o estudo, desenho e codificação de uma nova interface com suporte a responsividade para o Noosfero e que ainda não foi concluída.

Os usuários fazem parte do processo. Em 2014, foi aplicado um questionário para avaliar a satisfação das pessoas com o portal antigo e identificar problemas de experiência do usuário. 
Em 2015 e 2016, realizamos atividades de validação da nova plataforma com usuários e cidadãos interessados. O retorno dessas atividades foi decisivo para o direcionamento dos esforços e determinação das principais áreas. Aproximar o usuário as funcionalidades que ele tem mais interesse e projetar uma navegação que se aprofunde junto com apronfudamento do conhecimento do usuário. 

\section{Architecture}

%TODO: Kanashiro
Um proxy reverso trata requisições HTTP e as direciona para uma segunda
máquina, onde são distribuidas para os serviços solicitados. Todos os bancos de
dados relevantes estão concentrados em uma única máquina e todos os emails
disparados pelo sistema partem de um mesmo relay.

O ambiente é composto por 7 máquinas com funções distintas:

\begin{itemize}

\item Reverseproxy: Proxy reverso
\item Integration: Segundo proxy reverso, Repositórios Git, Listas de email e Backend final de email
\item Email: Relay de email
\item Social: Servidor de rede social Noosfero
\item Database: Servidor de banco de dados PostgreSQL
\item Mezuro: Servidor de análise de código Mezuro
\item Monitor: Monitoramento de informações dos outros serviços

\end{itemize}

As máquinas Reverseproxy, Email e Monitor possuem IP’s externos. Reverseproxy
recebe requisições HTTP/HTTPS (portas 80 e 443) e possibilita que usuários
utilizem os repositórios git (porta 22). Email recebe emails (porta 25) e
enviar emails para fora da plataforma. Monitor recebe requisições HTTP/HTTPS
(portas 80 e 443). Os IP’s variam de acordo com o ambiente.

Conexões na porta 22 da máquina reverseproxy são redirecionadas para
integration. Todas as máquinas aceitam conexões ssh originadas apenas da
máquina integration, ou seja, não é possível realizar conexões ssh nas demais
máquinas se a conexão não for originada da integration. As máquinas email,
social, database e mezuro aceitam conexão ssh vindas da integration na porta 22
e a reverseproxy em uma porta alternativa, especificada no arquivo de
configuração do ambiente, config/\$SPB\_ENV/config.yaml pelo valor
alt\_ssh\_port.

Note que, como será demonstrado neste manual, existem atalhos definidos no
repositório de gestão de configuração para simplificar o acesso por ssh às
máquinas. Internamente, as máquinas integration e social também rodam web
servers para servirem suas aplicações. Por fim, as máquinas integration e
social conectam-se em database usando a porta 5432 para acesso aos bancos de
dados.

\section{Final remarks}

%TODO: Hilmer
A nova plataforma do SPB foi lançada para homologação em dezembro de 2014 e
está em uso por algumas comunidades em beta.softwarepublico.gov.br. Todas as
ferramentas são software livre e o que está sendo desenvolvido pelas equipes da
UnB e USP é publicado em repositórios abertos, disponíveis na versão beta do
próprio SPB. Mais importante do que isso, as melhorias necessárias nas
ferramentas utilizadas estão sendo contribuídas de volta para as respectivas
comunidades. Isso não só é o certo a se fazer do ponto de vista da comunidade
de software livre, como vai possibilitar a redução de custos de manutenção no
futuro para os cofres públicos e a evolução continuada da plataforma em
sinergia com outras organizações que fazem uso das mesmas ferramentas.

Disponibilizar um conjunto de ferramentas e melhorar a experiência do usuário
no ambiente é parte desse processo de reformulação do SPB. Aspectos culturais
da colaboração em rede para um efetivo uso do o que é fornecido na plataforma
necessitam ser amadurecidos pelo MP junto às comunidades do SPB. Além disso, a
demanda por maior impacto do software público na oferta de software, na adoção
das soluções disponibilizadas e na atração de colaboradores e usuários requer
intervenção. Um estudo para propostas de licenciamento e seus impactos para o
SPB, bem como para sanar as contradições presentes na Instrução Normativa
01/2011 (que dispõe sobre os procedimentos do SPB), também está sendo conduzido
pela UnB para complementar o que está sendo desenvolvido do ponto de vista
tecnológico.

\bibliographystyle{splncs03}
\bibliography{spb}
\end{document}
