\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}