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

During the last few decades, the Brazilian Federal Government has improved its
software adoption and development processes. In 2003, the recommendation to
adopt Free and Open Source Software (FOSS) become a public policy. In 2007, the
Brazilian Government released a portal named Brazilian Public Software
(\textit{Software Público Brasileiro} -- SPB, in Portuguese), with the goal of
sharing FOSS projects developed by, or for, the Brazilian Government.

The Brazilian legal instrument on software contracting (known as IN 04/2012)
mandates that public management must consult the SPB Portal to adopt a software
solution. In short, the acquisition of a proprietary solution must be
explicitly justified by demonstrating that there is no suitable option in the
SPB Portal. However, since 2009, the SPB Portal was having several technical
issues. The original codebase was not being developed anymore, and there was a
large amount of technical debt to overcome. The system was a modified version
of an existing FOSS platform (called
OpenACS\footnote{\url{http://openacs.org}}) and the old SPB portal was not
being updated anymore with its official releases. In this scenario, the portal
maintenance was becoming harder and harder.

Afterward some events and meetings to collect all requirements from the federal
government and society, a new platform for the SPB Portal was developed, among
January 2014 and June 2016, by the University of Brasília (UnB) and the
University of São Paulo (USP) in a partnership with the Brazilian Ministry of
Budget, Planning, and Management (MP). It was designed it as an integrated
platform for collaborative software development. It includes functionality for
social networking, mailing lists, version control system, and source code
quality monitoring. To coordinate and develop this project during 30 months,
UnB received from the Brazilian Federal Government a total of 2,619,965.00 BRL
(about 750,000.00 USD in June 2016).

\begin{figure*}[hbt]
  \centering
    \includegraphics[width=.9\linewidth]{figures/home-SPB.png}
  \caption{The new SPB Portal.}
  \label{fig:spb}
\end{figure*}

The project was developed by a team of 3 professors, 2 masters students, and
approximately 50 undergraduate students (not all of them at the same time,
though -- graduations and other events triggered changes in the team) together
with 2 professional designers and 6 senior developers from the FOSS
communities. The professors and all undergraduate student were from UnB, and
the master students were from USP. Regarding the designers and senior
developers, 7 of 8 they were living outside of Brasília: Curitiba/Brazil, São
Paulo/Brazil, Ribeirão Preto/Brazil, Salvador/Brazil, Punta Cana/Dominican
Republic, and Montreal/Canada. In other words, we had a team working in
distributed collaborative virtual environment.

Figure \ref{fig:spb} shows the home page of this integrated platform. All
development was done in the open, and the changes we needed in the FOSS tools
were contributed back to their communities. Our process was based on agile
practices and FOSS communities interaction. We defined development cycles and
released 5 versions of the new SPB Portal. The first release (beta) was in
September 2014, only 9 months from the begin of the project. We migrated and
turned off the old portal in September 2015. Finally, the last version
illustrated in Figure 1 was released in June 2016.

In this paper, we present an overview of this new generation of the SPB Portal.
Alongside, this experience report shares our methodology and process to develop
this project working with the Brazilian federal government to comply with its
requirements at the same time to be as faithful as possible to FOSS
development. Moreover, we discuss several lessons learned to provide a
distributed collaborative virtual environment involving a large undergraduate
student team and remote senior developers. Lastly, we released an unprecedented
platform for the Brazilian government applying empirical software development
methods. This case can help other projects overcome a lot of software
engineering challenges in the future, as well as, how the universities take
advances to improve the real-world experiences of their student with these
kinds of projects. 

