01-introduction.tex 6 KB
\section{Introduction}
\label{sec:intro}

In the year 2000, the Brazilian Government released  the Eletronic Government
program (eGov) aiming at democratizing information access and improving the
quality of public provision of service and information.
%
In 2003, the Federal Government created a committee for implementation of
Free/Libre/Open Source Software (FLOSS)\footnote{Free Software, Open Source, or
Free/Open Source Software.} and thereafter a circular-letter was sent to all
Ministries in which the recommendation to adopt FLOSS became a public policy.
%
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.
%
For instance, since 2009 the SPB Portal has had several technical issues. The
original codebase development has stopped. 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.

Approximately five years later from the first problems, a new platform for the
SPB Portal was planned and funded. Between January 2014 and June 2016, 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
designed 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 them were living outside Brasília, the UnB location. 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 free software. 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. We share 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 team of undergraduate students and remote senior developers.
In short, 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.

\begin{comment}
%FALTA ESPAÇO
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 some 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:process} discusses our strategies to support the different
organizational cultures and to involve undergraduate students as protagonists
of the development process. Finally, Sections \ref{sec:conclusion} concludes
the paper highlighting its main contributions, sharing our lessons learned, and
pointing paths to future works.
\end{comment}