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

The Brazilian Government released in the year 2000 the Eletronic Government
program (eGov) aiming at democratizing information access and improving the
public provision quality of service and information. In 2003, the Brazilian
President created a
committee\footnote{\url{http://www.softwarelivre.gov.br/documentos-oficiais/
DecretoComite}} for implementation of  Free/Libre/Open Source Software
(FLOSS\footnote{In this work, the acronym ``FLOSS'' is used as a representative
for ``Free Software'', ``Open Source Software'' (OSS), and``Free/Open Source
Software'' (FOSS).}) and thereafter the Chief of Staff of Brazil sent a
circular- letter to all Ministries in which the recommendation to adopt FLOSS
became a public
policy\footnote{\url{http://www.softwarelivre.gov.br/documentos-oficiais/circulardoministro}}.
In 2007, the Brazilian Public Software Portal (\textit{Portal do Software
Público Brasileiro}, in Portuguese) was released with the goal of sharing FLOSS
projects developed by, or for, the Brazilian Government.  Additionally, the
Brazilian legal instrument on software contracting (known as IN 04/2012)
mandates that public agents must prioritize solutions available on the SPB
Portal. The acquisition of a proprietary solution must be explicitly justified
by demonstrating that there is no suitable alternative on the SPB Portal. In
2013, the Brazilian Federal Court issued a ruling (\textit{Acórdão 2314/2013})
about contracts between the public administration and suppliers using agile
methodologies in software development.

Despite of these legal advancements, in practice, Brazilian government agents
still do not practice, or even understand, collaborative and empirical software
development methods, such as FLOSS or agile methodologies. Thus, hierarchical
and traditional processes and the lack of expertise of public agents in
real-world software development produce inefficiency in software development
contracts, besides unjustifiable expending of taxpayers money.

Since 2009, the SPB Portal has had several technical issues. The original
codebase development has stopped, leaving substantial technical
debt~\cite{refactoring}.  The system was a modified version of an existing
FLOSS platform called OpenACS\footnote{\url{http://openacs.org}}, and the old
SPB Portal did not receive updates from OpenACS releases.  In this scenario,
the portal maintenance has become increasingly difficult.

After collecting requirements from the Federal Government and society, a new
platform for the SPB Portal was developed, between 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 Planning, Budget, and Management
(MP). It was designed as an integrated platform for collaborative software
development \cite{bobr2003}, including social networking, mailing lists,
version control system, and source code quality monitoring. To coordinate and
develop this project during 30 months, UnB was funded by a grant of
2,619,965.00 BRL (about 750,000.00 USD in June 2016) from the Federal
Government.

The project was developed by a team of three professors, two masters students,
about fifty undergraduate students (not all of them at the same time, since the
team changed along the time), two professional designers, and six senior
developers from FLOSS communities. Professors and undergraduate students were
from UnB and master students were from USP. Regarding the designers and senior
developers, seven of eight were living outside Brasília, the UnB location.  Two
of them were abroad at Dominican Republic and Canada.  In other words, we had a
distributed team working in a collaborative virtual environment. This diversity
of actors and the relationships between industry, academy, and government also
made the project a valued opportunity to explore the benefits and challenges of
using FLOSS~\cite{kon2011,deKoenigsberg2008, fagerholm2013, fagerholm2014} and
Agile~\cite{steghofer2016, harzl2017} practices for Software Engineering
education.

All the code was developed as open source. The changes we needed in the FLOSS
tools were implemented by ourselves and contributed back to their respective
communities. Our process was based on agile practices and FLOSS communities
interaction.  We incrementally released five versions of the new SPB Portal.
The first release (beta) was in September 2014, only 9 months from the
beginning of the project. The old portal was shut down in September 2015.
Finally, the last version was released in June 2016.

In this paper, we present an overview of the new SPB Portal.  The paper shares
the methodology employed to develop this project.  This methodology has the
goals of satisfying Government requirements and adhering as much as possible to
FLOSS and agile practices~\cite{mockus2002, tosi2015}. Moreover, we discuss
lessons learned in providing a distributed and collaborative virtual
environment involving a large undergraduate students team and remote senior
developers. Finally, we released an innovative platform for helping the
Brazilian government to apply empirical software development methods. This case
can help other projects to overcome similar software engineering challenges in
the future, as well as to illustrate how universities can improve the
real-world experience of their students.

The remainder of this work is organized as follows.  Section \ref{sec:spb}
discusses the concepts of Brazilian Public Software and Free Software.  Section
\ref{sec:related} enumerates a number of related projects from other countries.
Section \ref{sec:researchdesign} presents the open questions these guided this
paper.  Section \ref{sec:requirements} reports how the Brazilian Government
stakeholders collected the theoretical requirements as well as how we define
the technological requirements to release an initial version.  Section
\ref{sec:architecture} shares our decisions about the systems that together
provided a wide subset of the requirements and our strategy to integrate them.
Section \ref{sec:features} describes the main features of the new SPB Portal.
Section \ref{sec:ux} reports the user experience evolution during the
integration of the selected FLOSS tools.  Section \ref{sec:process} discusses
our strategies to support the different organizational cultures and to involve
undergraduate students as protagonists of the development process.  Section
\ref{sec:contributions} summarizes the contributions to the FLOSS upstream
communities we interacted with.  Finally, Sections \ref{sec:conclusion}
concludes the paper highlighting its main contributions, sharing our lessons
learned, and pointing paths to future works.

