spb.tex
10.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
\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}
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}
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.
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 está sendo redesenhada para proporcionar uma
navegação transparente e que atenda aos diversos tipos de usuário. Os modelos
de interação de cada ferramenta estão sendo harmonizados, diminuindo a curva de
aprendizado. Ao mesmo tempo, um novo estilo visual está sendo criado para
apresentar essa experiência unificada e para atender as diretrizes de
Identidade Padrão de Comunicação Digital do Governo Federal.
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, estão previstas pelo menos 4 atividades de
validação da nova plataforma com usuários e cidadãos interessados.
\section{Architecture}
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}
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}