\section{Requisitos e projetos relacionados}
\label{sec:requirements}

Para conceber o novo portal SPB, o governo brasileiro organizou 3 eventos para
coletar os requisitos, em particular do ponto de vista da sociedade. Após essas
3 rodadas de discussão sobre a nova plataforma SPB, o governo brasileiro listou
cerca de 145 requisitos e desenvolveu um ``mapa
mental''\footnote{\url{https://softwarepublico.gov.br/social/spb/gallery/mapaconceitual.png}}
para guiar a evolução do portal SPB. Nesse cenário, os 10 requisitos mais
votados foram, por exemplo:

\begin{enumerate}
\item Repositório de código-fonte com acesso público;
\item Visita às páginas da comunidade sem login;
\item Sistema de controle de versão distribuído;
\item Pontuações de colaboração de usuários e desenvolvedores;
\item Pesquisa de software por recursos;
\item Integração com redes sociais;
\item Repositório para ideias e requisitos futuros;
\item URL amigável para acessar uma página de comunidade de software;
\item Comentários dos usuários sobre um software público;
\item Relatório da experiência sobre o uso de um software público.
\end{enumerate}

Haviam outros requisitos baseados na experiência dos analistas de TI do governo
brasileiro e da comunidade software livre brasileira. Por exemplo, a nova
plataforma só funcionaria corretamente se houver uma autenticação única para
usar as ferramentas fornecidas. Além disso, uma interface unificada era um
requisito não-funcional importante para ter uma melhor experiência de usuário
na nova plataforma. Assim, no primeiro momento, desejamos disponibilizar uma
versão inicial que poderia substituir o antigo portal SPB. Para isso, a
primeira versão deve ter recursos como:

\begin{enumerate}
\item Um catálogo de software público organizado;
\item Ambiente de rede social (perfis para usuários, páginas de software e páginas da comunidade);
\item Sistema de Gerenciamento de Conteúdo (CMS);
\item Gerenciador web de repositório Git com wiki e recursos de \textit{issue tracker};
\item Listas de discussão e fóruns de discussão.
\end{enumerate}

Outros requisitos também foram planejados durante a fase de concepção do
projeto de evolução do SPB, como um mecanismo de busca integrado e um monitor
de análise estática de código-fonte na web. Analisando todos esses requisitos,
criamos o projeto de evolução do SPB baseado em ferramentas de software livre
existentes. No entanto, a integração de vários sistemas existentes que já foram
implementados em diferentes linguagens de programação e arcabouços, adicionando
recursos como uma autenticação centralizada, interface unificada e um mecanismo
de pesquisa, bem como, outros recursos de \textit{back-end}, requeriria grande
quantidade de trabalho não-trivial.

A nova plataforma SPB é um ambiente totalmente integrado, sendo muito avançada
em comparação com projetos e iniciativas relacionados. Por exemplo, o governo
dos EUA tem uma plataforma criada para melhorar o acesso ao software
desenvolvido pelo governo federal\footnote{\url{https://code.gov}}. Code.gov é
uma interface para organizar os projetos do governo dos EUA e, em suma,
facilita aos usuários e desenvolvedores como obter informações e acessar
repositórios de código-fonte dos projeto do governo no GitHub. No entanto, não
há recursos de rede social e CMS, bem como outros recursos de comunicação
fornecidos por essa plataforma.

Além disso, existem duas iniciativas na Europa:
OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} (\textit{Open
Source Observatory}) e OW2\footnote{\url{http://ow2.org}}. O OSOR é uma
comunidade hospedada na plataforma JoinUp, patrocinada pela \textit{European
Commission}.  O OSOR tem como objetivo o intercâmbio de informações,
experiências e melhores práticas sobre o uso de software livre na administração
pública. Este auxilia a encontrar um software livre disponibilizado por outras
administrações públicas, proporcionando acesso a informações como notícias,
eventos, estudos e soluções relacionadas à implementação de software livre. Ele
também oferece fórum e listas de discussão da comunidade, mas não possui um
gerenciador de repositório de código-fonte integrado e para cada projeto há um
link para seu próprio repositório externo (ou seu arquivo tarball). OW2 é uma
espécie de consórcio de projetos de software livre para promover o
desenvolvimento de \textit{middleware} livres, aplicativos de negócios,
plataformas de computação em nuvem e promover um ecossistema de comunidade e
negócios. Em resumo, ele visa apoiar o desenvolvimento, implantação e
gerenciamento de soluções distribuídos com foco em middleware, não sendo uma
plataforma em si. Além disso, patrocinado pela \textit{European Commission}
entre 2007 e 20011, havia o projeto QualiPSo que visava fornecer aos usuários,
desenvolvedores e consumidores de software livre recursos e conhecimentos de
qualidade sobre os vários tópicos relacionados ao software livre. O projeto
QualiPSo também planejava desenvolver uma plataforma chamada QualiPSo Factory,
que não foi totalmente concluída.

Na América Latina existe uma iniciativa baseada no projeto SPB chamado Software
Publico Regional\footnote{\url{http://softwarepublicoregionalbeta.net}}. De um
ponto de vista prático, ele fornece uma instância personalizada do Gitlab para
compartilhar o código-fonte e a documentação dos projetos dos países
envolvidos. Tal como o Brasil, o Chile tem seu próprio portal também chamado
Software Publico\footnote{\url{http://www.softwarepublico.gob.cl}}. Os usuários
podem criar conteúdo nas comunidades (notícias, documentos, páginas wiki), mas
os repositórios de código-fonte estão disponíveis na plataforma
Bitbucket\footnote{\url{https://bitbucket.org/softwarepublico}}.


O governo brasileiro precisava evoluir o projeto SPB que existia desde 2005. Em
2013, quando iniciamos esse projeto, o Portal SPB contava com cerca de 200 mil
usuários cadastrados. Não poderíamos apenas entrar em contato com esses
usuários e pedir-lhes para registrar uma conta no Github também. Além disso,
após o caso Edward Snowden, o governo brasileiro aprovou um decreto-lei
específico (8.135/2013) para regulamentar seus serviços de comunicação,
exigindo que a administração pública deva hospedar seus sistemas de informação
a ser fornecido por si mesmo, o que exclui o uso de plataformas privadas,
especialmente aqueles fornecidos por empresas estrangeiras. Assim,
desenvolvemos nossa própria solução para cobrir todos os requisitos, produzindo
uma completa e avançada plataforma integrada governamental para desenvolvimento
de software colaborativo.

