Commit 5e6736f4a42c76232a6ba92996f8248e14e6f05a

Authored by Paulo Meireles
1 parent 1928b7fa

Draft version for SBQS

sbqs2017/content/00-abstract.tex
... ... @@ -3,7 +3,7 @@
3 3 The Brazilian Public Software (SPB) is a program by the Brazilian Federal
4 4 Government to foster the sharing and collaboration on Free and Open Source
5 5 Software (FOSS) solutions for the public administration. In the one hand,
6   -Brazilian Public Softwares have some differences from FOSS projects, in
  6 +Brazilian Public Software have some differences from FOSS projects, in
7 7 particular, the software is considered a public good and the Federal government
8 8 assumes some responsibilities related to its use. In the other hand, the
9 9 software development principles are the same: the trend towards
... ... @@ -22,8 +22,27 @@ the platform architecture, features, and the user experience efforts carried
22 22 out, we also discuss our work process, based on agile and free software
23 23 development practices, and the lessons learned in 30 months work on the SPB
24 24 project.
  25 +\end{abstract}
25 26  
26   -\textbf{Keywords:} Brazilian Public Software, Free/Libre/Open Source Software,
27   - Software Evolution, Integrated Platform
  27 +\begin{resumo}
  28 +O Software Público Brasileiro (SPB) é um programa do Governo Federal brasileiro
  29 +para promover o compartilhamento e a colaboração de projetos de Software Livre
  30 +para a administração pública. Por um lado, um software público brasileiro tem
  31 +algumas diferenças em relação a um software livre, em especial, o fato do
  32 +software público ser considerado com um bem público and o Governo Federal
  33 +assumir algumas responsabilidades relacionadas ao seu uso. Por outro lado,
  34 +teoricamente, os princípios de desenvolvimento de software são os mesmos:
  35 +tendência a descentralização das decisões sobre o projeto, compartilhamento de
  36 +informações e do desenvolvimento (código), e interação contínua com seus
  37 +usuários.
  38 +%
  39 +Neste contexto, projetamos uma plataforma baseada na evolução e integração de
  40 +ferramentas existentes que promovem a colaboração. Atualmente, o portal SPB
  41 +disponibiliza funcionalidaeds modernas para o desenvolvimento colaborativo de
  42 +software, ajudando a administração pública brasileira a compartilhar suas
  43 +solução.
  44 +%
28 45  
29   -\end{abstract}
  46 +
  47 +
  48 +\end{resumo}
... ...
sbqs2017/content/01-introduction.tex
1 1 \section{Introduction}
2 2 \label{sec:intro}
3 3  
4   -During the last few decades, the Brazilian Federal Government has
5   -improved its software adoption and development processes. In 2003, the
6   -recommendation to adopt Free/Open Source Software (FOSS) become a public
7   -policy. In 2007, the Brazilian Government released a portal called
8   -Brazilian Public Software (\textit{Software Público Brasileiro} -- SPB,
9   -in Portuguese), with the goal of sharing FOSS projects developed by, or
10   -for, the Brazilian Government.
11   -
12   -The Brazilian legal instrument on software contracting
13   -(\textit{Instrução Normativa} 04/2012) mandates that public management
14   -must consult the SPB Portal to adopt a software solution. The
  4 +During the last few decades, the Brazilian Federal Government has been
  5 +trying to change its software adoption and development processes. For
  6 +instance, in 2003, the recommendation to adopt Free and Open Source
  7 +Software (FOSS) become a public policy. In 2007, the Brazilian
  8 +Government released a portal named Brazilian Public Software
  9 +(\textit{Software Público Brasileiro} -- SPB, in Portuguese), with the
  10 +goal of sharing FOSS projects developed by, or for, the Brazilian
  11 +Government. Additionally, the Brazilian legal instrument on software
  12 +contracting (known as IN 04/2012) mandates that public agents must give
  13 +priority to solutions available in the SPB Portal. In short, the
15 14 acquisition of a proprietary solution must be explicitly justified by
16   -demonstrating that there is no suitable option in the SPB Portal.
17   -
18   -Since 2009, however, the SPB Portal was having several technical issues.
19   -The original codebase was not being developed anymore, and there was a
20   -large amount of technical debt to overcome. The system was a modified
21   -version of an existing FOSS platform that was not being developed
22   -anymore, and the portal maintenance was becoming harder and harder.
23   -
24   -From January 2014 to June 2016, a new platform for the SPB Portal was
25   -designed and developed by the University of Brasília (UnB) and the
26   -University of São Paulo (USP) in a partnership with the Brazilian
27   -Ministry of Budget, Planning, and Management(MP). This new Portal was
28   -designed as an integrated platform for collaborative software
29   -development. It includes functionality for social networking, mailing
30   -lists, version control system, and source code quality monitoring. In
31   -this paper, we present an overview of this new generation of the SPB
32   -Portal.
33   -
34   -The project was developed by a team of 3 professors, 6 professionals, 2
35   -masters students, and approximately 40 undergraduate students (not all of
36   -them at the same time, though -- graduations and other events triggered
37   -changes in the team).
  15 +demonstrating that there is no suitable alternative in the SPB Portal.
  16 +In 2013, the Brazilian Federal Court issued a ruling document
  17 +(\textit{Acórdão 2314/2013}) about an audit survey regarding the use of
  18 +agile methodologies in software development contracts with the public
  19 +administration.
  20 +
  21 +Despite of that, in practice, FOSS or agile methodologies, that is,
  22 +collaborative and empirical software development methods are not widely
  23 +practiced and understood by the Brazilian government agents. Thus, the
  24 +hierarchical and traditional processes from the government and the lack
  25 +of expertise in real-world software development of its agents produces a
  26 +situation of inneficient software development contracts and
  27 +unjustifiable expending of taxpayers' money.
  28 +
  29 +% TODO: ^ references
  30 +
  31 +Since 2009, the SPB Portal was having several technical issues. The
  32 +original codebase was not being developed anymore, and there was a large
  33 +amount of technical debt to overcome. The system was a modified version
  34 +of an existing FOSS platform called
  35 +OpenACS\footnote{\url{http://openacs.org}}, and the old SPB portal was
  36 +not being updated anymore against the official OpenACS releases. In this
  37 +scenario, the portal maintenance was becoming harder and harder.
  38 +
  39 +After some events and meetings to collect requirements from the federal
  40 +government and from the society, a new platform for the SPB Portal was
  41 +developed, among January 2014 and June 2016, by the University of
  42 +Brasília (UnB) and the University of São Paulo (USP) in a partnership
  43 +with the Brazilian Ministry of Budget, Planning, and Management (MP). It
  44 +was designed as an integrated platform for collaborative software
  45 +development., and includes functionality for social networking, mailing
  46 +lists, version control system, and source code quality monitoring. To
  47 +coordinate and develop this project during 30 months, UnB received from
  48 +the Brazilian Federal Government a total of 2,619,965.00 BRL (about
  49 +750,000.00 USD in June 2016).
38 50  
39 51 \begin{figure*}[hbt]
40 52 \centering
41   - \includegraphics[width=.9\linewidth]{figures/home-SPB.png}
  53 + \includegraphics[width=.9\linewidth]{figures/home-SPB_2.png}
42 54 \caption{The new SPB Portal.}
43 55 \label{fig:spb}
44 56 \end{figure*}
45 57  
  58 +The project was developed by a team of 3 professors, 2 masters students, and
  59 +approximately 50 undergraduate students (not all of them at the same time,
  60 +though -- graduations and other events triggered changes in the team) together
  61 +with 2 professional designers and 6 senior developers from the FOSS
  62 +communities. The professors and all undergraduate student were from UnB, and
  63 +the master students were from USP. Regarding the designers and senior
  64 +developers, 7 of 8 they were living outside of Brasília: Curitiba/Brazil, São
  65 +Paulo/Brazil, Ribeirão Preto/Brazil, Salvador/Brazil, Punta Cana/Dominican
  66 +Republic, and Montreal/Canada. In other words, we had a team working in
  67 +distributed collaborative virtual environment.
  68 +
46 69 Figure \ref{fig:spb} shows the home page of this integrated platform.
47   -The development tried to be as faithful as possible to FOSS development.
48 70 All development was done in the open, and the changes we needed in the
49   -tools were contributed back to their communities.
  71 +FOSS tools were contributed back to their respective communities. Our
  72 +process was based on agile practices and FOSS communities interaction.
  73 +We defined development cycles and released 5 versions of the new SPB
  74 +Portal. The first release (beta) was in September 2014, only 9 months
  75 +from the beginning of the project. The old portal was shut down down in
  76 +September 2015. Finally, the last version illustrated in Figure 1 was
  77 +released in June 2016.
  78 +
  79 +In this paper, we present an overview of this new generation of the SPB
  80 +Portal. This experience report shares our methodology and process to
  81 +develop this project working with the Brazilian federal government to
  82 +comply with its requirements at the same time to be as faithful as
  83 +possible to FOSS development. Moreover, we discuss several lessons
  84 +learned to provide a distributed collaborative virtual environment
  85 +involving a large undergraduate student team and remote senior
  86 +developers. Lastly, we released an unprecedented platform for the
  87 +Brazilian government applying empirical software development methods.
  88 +This case can help other projects overcome similar software engineering
  89 +challenges in the future, as well as illustrate how universities can
  90 +improve the real-world experience of their students by means of this
  91 +kind of project.
50 92  
... ...
sbqs2017/content/02-spb.tex
1   -\section{Free/Open Source Software and Brazilian Public Software}
  1 +\section{Background}
2 2 \label{sec:spb}
3 3  
4 4 FOSS is a phenomenon that has gained notoriety in recent years and has been
5   -attarcting the interest of academia. However, since the beginning of computing
  5 +attracting the interest of academia. However, since the beginning of computing
6 6 the majority of developers worked in the way that we now identify as free
7   -software, that is, sharing code openly. This feature makes the code available
  7 +software, that is, sharing code openly. This openness makes the code available
8 8 for inspection, modification, and use by any person or organization
9   -\cite{kon2012}, \cite{hippel2003}.
  9 +\cite{hippel2003,kon2012}.
10 10  
11 11 The elements that distinguish FOSS from other types of software are the
12 12 reasoning about the development process, the economic context, the relationship
13 13 between developers and users, as well as the ethical and legal characteristics
14 14 that relate to the software. In the context of FOSS, user freedom is promoted
15   -and its development is based on open collaboration and development practices.
16   -%TODO: Colocar referências sem ser nós mesmo e sem ser em PT-Br
  15 +and its development is based on open collaboration and development practices
  16 +\cite{meirelles2013}.
17 17  
18 18 From the economic point of view, unlike what happens with proprietary software,
19   -FOSS promotes the establishment of several suppliers that compete with each
  19 +FOSS promotes the establishment of several suppliers that can compete with each
20 20 other based on the same software. This stronger competition among suppliers
21 21 brings benefits to users because it gives better assurances regarding the
22   -evolution of the system and induces a reduction in prices. These freedoms and
23   -assurances on software are guaranteed in Brazil by Law 9610/98 (copyright law).
24   -Most of the time, this protection from the law complies with the terms
25   -conferred by a contract related to certain software. This contract is called
26   -``license''. A software license determines a list of rights that are
  22 +evolution of the system and induces a reduction in prices \cite{kon2012}. These
  23 +freedoms and assurances on software are guaranteed in Brazil by Law 9610/98
  24 +(copyright law). Most of the time, this protection from the law complies with
  25 +the terms conferred by a contract related to certain software. This contract is
  26 +called ``license''. A software license determines a list of rights that are
27 27 given to, and duties that are imposed on a user of the software. In particular,
28 28 what differentiates FOSS from proprietary software is just the way they are
29   -licensed\cite{sabino2009}. The FOSS licenses guarantee the right to execute,
  29 +licensed \cite{sabino2009}. The FOSS licenses guarantee the right to execute,
30 30 study, adapt, and improve the software. Example of common FOSS licenses are
31 31 the \textit{GPL (GNU General Public License)}, the Apache license, the MIT
32 32 license, and the BSD license.
33 33  
34   -The SPB portal has been designed in 2005 and released in 2007. In a practical
35   -view, it is a web system that has consolidated itself as a software project
36   -sharing environment. It provides a space (community) for each software.
37   -Therefore, the current platform for SPB was designed to include tools that
38   -promote collaboration and interaction in communities (by managers, users, and
39   -developers) of the projects, according to the practices used in FOSS
40   -communities. This includes e-mail lists, discussion forums, issue trackers,
41   -version control systems, and social networking environments.
  34 +The original incarnation of SPB portal has been designed in 2005 and
  35 +released in 2007. From a practical point of view, it is a web system
  36 +that has consolidated itself as an environment for sharing software
  37 +projects. It provides a space (community) for each software.
  38 +Therefore, it was designed to include tools that promote collaboration
  39 +and interaction in communities (by managers, users, and developers) of
  40 +the projects, according to the practices used in FOSS communities. This
  41 +includes mailing lists, discussion forums, issue trackers, version
  42 +control systems, and social networking environments.
42 43  
43 44 Initially, the purpose of the portal was only to share the software developed
44   -in the Brazilian government, to reduce the costs of hiring software. However
  45 +in the Brazilian government, to reduce the costs of hiring software. However,
45 46 it was observed that when softwares were released, their communities were
46 47 formed around those software with several people collaborating and sharing the
47 48 results obtained through the use of those solutions. In this way, some software
48 49 development cooperatives and private companies have shown an interest in making
49 50 their software available on the SPB platform.
50 51  
51   -The concept of Brazilian Public Software goes beyond FOSS. In addition to being
52   -licensed under a FOSS license, a Brazilian Public Software needs to have
53   -explicit guarantees that it is a public good, and that project must be
54   -available in the SPB. Being a true public good assumes requirements that can
55   -not be met solely by means of FOSS licensing. For example, there must be a
56   -relaxed trademark usage policy by the original vendor that do not stop eventual
57   -competitors from adversiting services for that same software. Inclusion in the
58   -SPB also has extra requirements, such as having a public version control
59   -system, installation manual, hardware requirements specification, etc.
  52 +The concept of Brazilian Public Software goes beyond FOSS. In addition
  53 +to being licensed under a FOSS license, a SPB needs to have explicit
  54 +guarantees that it is a public good, and that project must be available
  55 +in the SPB portal. Being a true public good assumes requirements that
  56 +can not be met solely by means of FOSS licensing. For example, there
  57 +must be a relaxed trademark usage policy by the original vendor that
  58 +does not stop eventual competitors from advertising services for that
  59 +same software. Inclusion in the SPB Portal also has extra requirements,
  60 +such as having a public version control system, installation manual, and
  61 +hardware requirements specification.
60 62  
... ...
sbqs2017/content/03-requirements.tex
1   -\section{Requirements}
  1 +\section{Requirements and Related Projects}
2 2 \label{sec:requirements}
3 3  
4 4 In 2013, the SPB Portal had more than 600 thousand unique visitors, generating
5 5 more than 16 million page views with about 50 million hits. By evaluating only
6 6 the main projects, there were more than 15 thousand downloads and 4 thousand
7   -messages exchanged in their forums. This data illustrates the potential of the
8   -SPB Portal, even with some limitations in the past.
  7 +messages exchanged in their forums. These data illustrates the potential of the
  8 +SPB Portal, even with several limitations in the past.
9 9  
10 10 By preparing the evolution project described in this paper, the Brazilian
11   -government promote 3 events to collect the requirements, in particular from
  11 +government promoted 3 events to collect the requirements, in particular from
12 12 society point of view: (i) an online form to collect general ideas; (ii) a
13 13 face-to-face meeting with society in general; (iii) a workshop to review the
14 14 SPB concepts and requirements with IT stakeholders from the Brazilian
15 15 government and public organizations.
16 16  
17   -After these 3 rounds discussing the new SPB platform, the Brazilian government listed
18   -about 145 requirements and developed a mind
19   -model\footnote{\url{https://softwarepublico.gov.br/social/spb/gallery/mapaconceitual.png}}
  17 +After these 3 rounds discussing the new SPB platform, the Brazilian government
  18 +listed about 145 requirements and developed a ``mind
  19 +map''\footnote{\url{https://softwarepublico.gov.br/social/spb/gallery/mapaconceitual.png}}
20 20 to guide the SPB portal evolution. In this scenario, the 10 most voted
21   -requirements are, for example:
  21 +requirements were, for example:
22 22  
23 23 \begin{enumerate}
24 24  
... ... @@ -37,26 +37,27 @@ requirements are, for example:
37 37  
38 38 \begin{figure}[hbt]
39 39 \centering
40   - \includegraphics[width=.6\linewidth]{figures/technological-requirements.png}
  40 + \includegraphics[width=\linewidth]{figures/technological-requirements.png}
41 41 \caption{Technological requirements overview.}
42 42 \label{fig:requirements}
43 43 \end{figure}
44 44  
45 45  
46   -Moreover, there were other requirements based on the experience of the IT
  46 +here were other requirements based on the experience of the IT
47 47 stakeholders from the Brazilian government and from the Brazilian FOSS
48   -community (that UnB and USP were representing too in this project). The new
49   -platform just could work properly if there is a unique authentication to use
50   -the provided tools. Additionally, a unified
51   -interface was an important non-functional requirement to make easy the user
52   -experience into the new platform.
  48 +community (that UnB and USP were representing too in this project). The
  49 +new platform would only work properly if there is a unique
  50 +authentication to use the provided tools. Additionally, a unified
  51 +interface was an important non-functional requirement to have a better
  52 +user experience in the new platform.
53 53  
54   -At the first moment, we wish to release an initial version to replace the old
55   -SPB portal. For that, the first version must have some features such as:
  54 +At the first moment, we desired to release an initial version that could
  55 +replace the old SPB portal. For that, the first version should have
  56 +features such as:
56 57  
57 58 \begin{enumerate}
58 59  
59   -\item Organized public software catalog.
  60 +\item An organized public software catalog.
60 61 \item Social network environment (profiles for users, software pages, and community pages).
61 62 \item Content Management Systems (CMS) features.
62 63 \item Web-based Git repository manager with wiki and issue tracking features.
... ... @@ -64,39 +65,42 @@ SPB portal. For that, the first version must have some features such as:
64 65  
65 66 \end{enumerate}
66 67  
67   -Other requirements also were planned during the conception phase of the SPB
68   -evolution project such as an integrated search engine and a web-based source
69   -code static analysis monitor. Therefore, by analyzing all of these
70   -requirements, we propose the technological requirements overview, as
71   -illustrated in Figure \ref{fig:requirements}, to guide the development of the
72   -new SPB platform. In other words, we have designed the SPB evolution project
73   -based on existing FOSS tools. However, the integration of several existing
74   -systems that already was implemented in different programming language and
75   -frameworks, adding features such as a unique authentication, a unified
76   -interface, and a search engine, as well as, other back-end features, is not a
77   -trivial work.
78   -
79   -The new SPB platform is fully an integrated environment, as we can see in
80   -Figure \ref{fig:requirements}, being very advanced comparing to other related
81   -projects and initiatives. For example, the USA government has a platform
82   -designed to improve access to the federal government developed
  68 +Other requirements were also planned during the conception phase of the
  69 +SPB evolution project, such as an integrated search engine and a
  70 +web-based source code static analysis monitor. By analyzing all of these
  71 +requirements, we proposed the technological requirements overview
  72 +illustrated in Figure \ref{fig:requirements} to guide the development of
  73 +the new SPB platform. In other words, we have designed the SPB evolution
  74 +project based on existing FOSS tools. However, the integration of
  75 +several existing systems that were already implemented in different
  76 +programming languages and frameworks, adding features such as a
  77 +centralized authentication, unified interface, and a search engine, as
  78 +well as, other back-end features, would require a non-trivial amount of
  79 +work.
  80 +
  81 +The new SPB platform is a fully integrated environment, as we can see in
  82 +Figure \ref{fig:requirements}, being very advanced in comparison with
  83 +related projects and initiatives. For example, the USA government has a
  84 +platform designed to improve access to the federal government developed
83 85 software\footnote{\url{https://code.gov}}. Code.gov is an interface to
84   -organize the USA government projects and, in short, make easy that their users
85   -and developers obtain some information and access their source code
  86 +organize the USA government projects and, in short, make it easy for
  87 +users and developers to obtain information and access their source code
86 88 repositories at GitHub. However, there are not social networking and CMS
87   -features, as well as, other communication resources provided by that platform.
  89 +features, as well as, other communication resources provided by that
  90 +platform.
88 91  
89   -Also, there are two initiatives in Europe:
  92 +Additionally, there are two initiatives in Europe:
90 93 OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} and
91   -OW2\footnote{\url{http://ow2.org}}. The Open Source Observatory (OSOR) is a
92   -community hosted in the JoinUp platform powereded by the European Commission.
93   -OSOR aims exchanging information, experiences and best practices around FOSS
94   -solutions for use in public administrations. Summarily, it helps to find a FOSS
95   -made available by other public administrations, providing access to information
96   -such as news, events, studies and solutions related to implementation of open
97   -source software. It also offers forum discussions and community mailing lists,
98   -but it does not have an integrated source code repository manager and for the
99   -each project has a link to its own external repository (or its tarball file).
  94 +OW2\footnote{\url{http://ow2.org}}. The Open Source Observatory (OSOR)
  95 +is a community hosted in the JoinUp platform powered by the European
  96 +Commission. OSOR aims at exchanging information, experiences and best
  97 +practices around the use of FOSS in the public administration. It helps
  98 +to find a FOSS made available by other public administrations, providing
  99 +access to information such as news, events, studies and solutions
  100 +related to implementation of open source software. It also offers forum
  101 +discussions and community mailing lists, but it does not have an
  102 +integrated source code repository manager and for the each project there
  103 +is a link to its own external repository (or its tarball file).
100 104 %
101 105 OW2 is a FOSS community to promote the development of FOSS middleware, generic
102 106 business applications, cloud computing platforms and foster a community and
... ... @@ -104,33 +108,31 @@ business ecosystem. In short, it aims to support the development, deployment
104 108 and management of distributed applications with a focus on FOSS middleware and
105 109 related development and management tools.
106 110 %
107   -Moreover, from the European Commission in 2007 until 20011, there were the
108   -QualiPSo project that aims to provide to FOSS users, developers, and consumers,
109   -quality resources and expertise on the various topics related to FOSS. The
  111 +Moreover, from the European Commission in 2007 until 20011, there was the
  112 +QualiPSo project that aimed at providing FOSS users, developers, and consumers,
  113 +with quality resources and expertise on the various topics related to FOSS. The
110 114 QualiPSo project also had planned to develop a platform called QualiPSo
111 115 Factory but it was not fully completed.
112 116  
113   -In Latin American has an initiative based on the SPB project called Software
114   -Publico Regional\footnote{\url{http://softwarepublicoregionalbeta.net}}. From
115   -the practical point of view, it provides a customized Gitlab instance to share
  117 +In Latin American there is an initiative based on the SPB project called ``Software
  118 +Publico Regional''\footnote{\url{http://softwarepublicoregionalbeta.net}}. From
  119 +a practical point of view, it provides a customized Gitlab instance to share
116 120 the source code and documentation of the project from the involved countries.
117 121 %
118   -Such as Brazil, Chile has its own portal also called Software
119   -Publico\footnote{\url{http://www.softwarepublico.gob.cl}}. The user can create
120   -content in the communities (news items, documents, wiki pages), but all
121   -repository is available at the Bitbucket
  122 +Like Brazil, Chile has its own portal also called ``Software
  123 +Publico''\footnote{\url{http://www.softwarepublico.gob.cl}}. Users can create
  124 +content in the communities (news items, documents, wiki pages), but
  125 +source code repositories are available at the Bitbucket
122 126 platform\footnote{\url{https://bitbucket.org/softwarepublico}}.
123 127  
124   -The Brazilian government needed to evolute the SPB project that exists since
125   -2005. In 2013, when we started this project, the SPB Portal had about 200
126   -thousand registered users. We could not just contact these users and ask them
127   -to register an account at Github as well. Moreover, after the Edward Snowden
128   -case, the Brazilian government approved a specific law decree (8.135/2013) to
129   -rule its communication service. Summarily, services like Gmail, Google Drive,
130   -Dropbox, Live, Outlook, iCloud, as well, Google Groups, Github, etc do not
131   -could be used by a Brazilian public agent as tool for your work. To use these
132   -kinds of services the Brazilian government needs to provide them to itself.
133   -Thus, we developed our own solution to cover all the requirements, producing a
134   -complete governmental integrated platform for collaborative software
135   -development.
136   -
  128 +The Brazilian government needed to evolve the SPB project that
  129 +existedince 2005. In 2013, when we started this project, the SPB Portal
  130 +had about 200 thousand registered users. We could not just contact these
  131 +users and ask them to register an account at Github as well. Moreover,
  132 +after the Edward Snowden case, the Brazilian government approved a
  133 +specific law decree (8.135/2013) to rule its communication services,
  134 +requiring the public administration to host its information systems to
  135 +be provided by itself, what rules out usage of private platforms,
  136 +specially ones provided by foreign companies. We thus developed our own
  137 +solution to cover all the requirements, producing a complete
  138 +governmental integrated platform for collaborative software development.
... ...
sbqs2017/content/04-architecture.tex
1 1 \section{Architecture}
2 2 \label{sec:architecture}
3 3  
4   -Based on the great list of functional requirements desired by Brazilian Federal
5   -Government we decided to select some FOSS systems that already contemplate some
6   -of them and improve these systems. And bringing the idea of community, it is
7   -undoable build a platform to be used by communities, which is a complex
8   -scenario, using just one tool.
  4 +Based on the extensive list of functional requirements defined by the
  5 +Brazilian Federal Government, we selected some FOSS systems to form our
  6 +solution. We looked for system that together could provide the largest
  7 +subset possible of the requirements, and were fully aware that we would
  8 +need to improve those systems in order to provide the rest. We were also
  9 +convinced that it would be impossible to provide all of those
  10 +requirements with a single tool.
9 11  
10   -At the point of view of the architecture, two main requirements was brought by
11   -the Brazilian Federal Government for the new platform:
  12 +From the point of view of the architecture, two main requirements was
  13 +brought by the Brazilian Federal Government for the new platform:
12 14  
13 15 \begin{enumerate}
14 16 \item \textit{Integrate existing FOSS systems}, with minimal differences from
... ... @@ -17,69 +19,81 @@ the Brazilian Federal Government for the new platform:
17 19 systems, as well as centralized authentication.
18 20 \end{enumerate}
19 21  
20   -Adopting existing FOSS systems by the government could bring the benefit of
21   -improvements done by the upstream communities, and the maintenance effort. On
22   -the other hand, integrating different tools with distinct intent, it is not an
23   -easy task and it was important to have a consistent user interface which
24   -justifies the last requirement.
  22 +Adopting existing FOSS systems and minimizing locally-made changes had
  23 +the objective of being able to upgrade to newer versions of the original
  24 +software, benefiting from improvements and maintenance done by the
  25 +existing project communities. Providing a consistent user interface on
  26 +top of those different tools was needed to make the transition between
  27 +the different systems seamless from the point of view of users, which
  28 +would be confused by jumping through completely different interfaces
  29 +while interacting with the portal.
25 30  
26 31 For the first requirement, we identified four main systems that required
27   -specialized teams for work in the integration process. The teams learned how to
28   -develop for their assigned systems and contributed to the original
29   -communities, so that the version we used were not significantly different from
30   -the original.
  32 +specialized teams for work in the integration process. The teams learned
  33 +how to develop for their assigned systems and contributed to the
  34 +original communities, so that the version we used were not significantly
  35 +different from the original.
31 36  
32   -At the end of the project, SPB portal was composed of more than ten systems
33   -among them we can highlight: Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix,
34   -Munin, and so forth. The following sections explained a little bit of Colab,
35   -Noosfero, Mezuro, and Gitlab (the main tools which we contributed). Below, we
36   -described how we integrated those tools and conclude with the deployment.
  37 +At the end of the project, the SPB portal was composed of more than ten
  38 +systems, such as Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix, and
  39 +Munin. The remainder of this section describes the most relevant of
  40 +them, as well as how they were integrated into the platform.
37 41  
38 42 \subsection{Colab}
39 43  
40   -Colab integrates web applications as its main goal, the user of this composed
41   -system should not notice the change between the integrated applications. Colab
42   -was designed to use one plugin for each system under its domain, this is
43   -guaranteed by four levels of integration:
  44 +Colab\footnote{\url{https://github.com/colab}} is a systems integration
  45 +platform for web applications. One of its goals is allowing different
  46 +applications to be combined in such a way that an user does not notice
  47 +the change between applications. For that, Colab provides facilities
  48 +for:
44 49  
45 50 \begin{itemize}
46   - \item Authentication
47   - \item Visual
48   - \item Events
49   - \item Data and search engine
  51 + \item Centralized authentication
  52 + \item Visual consistency
  53 + \item Relaying of events between applications
  54 + \item Integrated search engine
50 55 \end{itemize}
51 56  
52   -The aforementioned integrations levels were possible, because Colab works as a
53   -reverse proxy, therefore all external requests pass through it.
54   -
55   -Single Sign-On (SSO) is used to login users throughout all integrated
56   -applications. REMOTE\_USER HTTP header is sent to the applications and we
57   -expect that they know how to handle it, since this is a common authentication
58   -mechanism. The integrated applications should be on a local network to avoid
59   -security issues. With this the user will be able to navigate through the
60   -platform applications and will not be asked for authentication credentials.
61   -
62   -As Colab\footnote{\url{https://github.com/colab}} is a reverse proxy, it makes
63   -some HTML transformations in the HTTP response of integrated applications to
64   -provide a unified interface. Allows one to define some default templates to be
65   -used by all applications and overwrite when needed in its plugin. This approach
66   -allowed us to reuse some HTML pages which facilitates maintenance.
67   -
68   -A publish-subscribe implementation was used to handle events in the platform.
69   -Thus, if some application want to trigger some action in case that other
70   -application do something is possible. A registration of the desired events and
71   -implementation of the handlers must be done in the plugin of each application.
72   -This bring us many options to innovate in these integrations.
73   -
74   -A integrated search engine is provided by Colab. Each plugin specify which data
75   -will be indexed and will became available for the users, just need an simple
76   -implementation of how should perform the collection of data.
  57 +Colab implements this integration by working as a reverse proxy for the
  58 +integration applications, that is, all external requests pass through
  59 +Colab before reaching them.
  60 +
  61 +Centralized authentication is handled by letting users authenticate to
  62 +Colab, which then sends a REMOTE\_USER HTTP header to applications,
  63 +which are expected to be pre-configured to accept that as an indication
  64 +of the current user (REMOTE\_USER is a standard authentication mechanism
  65 +for web applications). This allows users to be automatically identified
  66 +to each of the applications without having to enter credentials for each
  67 +of them.
  68 +%
  69 +Of course, this requires that the integrated applications are not
  70 +accessible on the public internet, otherwise malicious users could send
  71 +their own crafted REMOTE\_USER headers and impersonate any user.
  72 +
  73 +For the visual consistency, Colab is able to make transformations to the
  74 +HTML produced by the integrated applications, ir order to provide a
  75 +unified interface. It allows one to define default templates to be used
  76 +by all applications, as well as providing extra ones in a plugin. This
  77 +approach allowed us to reuse common HTML pages, what facilitates
  78 +maintenance.
  79 +
  80 +Colab also provides a publish-subscribe event system. This allows one of
  81 +the applications, or Colab itself, to trigger an action in another
  82 +application. For example, when a user registers with Colab, all
  83 +applications need to be notified in order to create their own internal
  84 +representation of that user account.
  85 +
  86 +Colab also provides an integrated search engine, which can be configured
  87 +to specify exactly what data needs to be indexed for each of the
  88 +applications, and how to direct the user to that piece of information on
  89 +the specific application.
77 90  
78 91 Initially, Colab had support for a small set of applications (Trac, GNU
79   -Mailman, and Apache Lucene) and all of them was hard-coded. Our team evolved
80   -Colab so that it can now receive plugins to add support for new applications
81   -with minimal changes to its existing core. We developed plugins to be used in
82   -the SPB platform: Noosfero, GitLab, and Mezuro.
  92 +Mailman, and Apache Lucene) and support for them was hard-coded. Our
  93 +team evolved Colab so that it can now receive plugins that add support
  94 +new applications without the need of changes to the Colab core. We also
  95 +developed plugins to be used in the SPB platform: Noosfero, GitLab, and
  96 +Mezuro.
83 97  
84 98 \subsection{Noosfero}
85 99  
... ... @@ -92,44 +106,40 @@ home pages and documentation, and contact forms.
92 106  
93 107 \subsection{Gitlab}
94 108  
95   -GitLab\footnote{\url{http://gitlab.com}} is a web-based Git repository manager
96   -with wiki pages and issue tracking features. On the one hand, Github is the
97   -most famous and used Git repository manager. On the other hand, it is not a
98   -FOSS. Gitlab is a FOSS platform and focuses on delivering a holistic solution
99   -that will see developers from idea to production seamlessly and on a single
100   -platform. Thus, we have worked on it to integrated to Colab.
101   -
102   -Moreover, Gitlab has several features working properly than Github that is
103   -interesting in SPB context such as free for private projects, built-in
104   -continuous integration and continuous deployment with best practices, more
105   -control during downtime and upgrade, flexible permissions, Work-in-Progress
106   -protection, move issues between projects, Group-level milestones, Create new
107   -branches from issues, Issue board, Time tracking, as well new features and
108   -improvements every month on the 22nd.
  109 +GitLab\footnote{\url{http://gitlab.com}} is a web-based Git repository
  110 +manager with wiki pages and issue tracking features. Gitlab is a FOSS
  111 +platform and focuses on delivering a holistic solution that will see
  112 +developers from idea to production seamlessly and on a single platform.
  113 +
  114 +Gitlab has several unique features, such as built-in continuous
  115 +integration and continuous deployment, flexible permissions, tracking of
  116 +Work-in-Progress work, moving issues between projects, group-level
  117 +milestones, creating new branches from issues, issues board, and time
  118 +tracking.
109 119  
110 120 \subsection{Mezuro}
111 121  
112 122 Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code
113   -metric to monitor the internal quality of softwares written in C, C++,
114   -Java, Python, Ruby, and PHP. GNU Mailman is used for mailing lists.
  123 +metrics to monitor the internal quality of software written in C, C++,
  124 +Java, Python, Ruby, and PHP.
115 125  
116   -In general, source code metric tools also do not present a friendly way to
117   -interpret its results and, even more, do not follow a standardization between
118   -them. Mezuro brings and presents these results to
119   -the end user, specially, by analyzing source code metric history during its
120   -life cycle.
  126 +In general, source code metrics tools also do not present a friendly way
  127 +to interpret its results and, even more, do not follow a standardization
  128 +between them. Mezuro collects and presents these results to the end
  129 +user, specially, by analyzing source code metric history during its life
  130 +cycle.
121 131  
122   -The Mezuro platform provides a single interface
123   -grouping available tools, allows selection and composition of metrics in a
124   -flexible manner, stores the metrics evolution history, presents
125   -results in a friendly way, as well as, allows users to customize the given
126   -interpretation accordingly to their own context.
  132 +The Mezuro platform provides a single interface grouping available
  133 +tools, allows selection and composition of metrics in a flexible manner,
  134 +stores the metrics evolution history, presents results in a friendly
  135 +way, as well as, allows users to customize the given interpretation
  136 +accordingly to their own context.
127 137  
128 138 \subsection{System unification}
129 139  
130 140 \begin{figure}[hbt]
131 141 \centering
132   - \includegraphics[width=.5\linewidth]{figures/arch.png}
  142 + \includegraphics[width=\linewidth]{figures/arch.png}
133 143 \caption{SPB architecture overview.}
134 144 \label{fig:architecture}
135 145 \end{figure}
... ... @@ -143,42 +153,5 @@ functionality: instead of using the redundant restricted search
143 153 functionality of each application, a search in the SPB portal might
144 154 return content from any of the applications, be it web pages, mailing
145 155 list posts, or source code.
146   -
147   -% Falar do devops
148   -\subsection{Deploy}
149   -
150   -The SPB platform was deployed in 7 virtual machines with different functions,
151   -as we can see in Figure \ref{fig:architecture2}.
152   -
153   -\begin{figure*}[hbt]
154   - \centering
155   - \includegraphics[width=.8\linewidth]{figures/arch2.png}
156   - \caption{Instanciation view of the SPB architecture.}
157   - \label{fig:architecture2}
158   -\end{figure*}
159   -
160   -The \textit{reverseproxy} handles the HTTP requests and redirects them to the
161   -\textit{integration}, the \textit{email} sends and receives e-mails on behalf
162   -of the platform and the \textit{monitor} keeps the entire environment tracked.
163   -These three \textit{VMs} mentioned - \textit{reverseproxy}, \textit{email} and
164   -\textit{monitor} - are accessible via Internet and the other ones are only
165   -available in the local network created between them.
166   -
167   -\textit{Integration} works as a second layer of proxy beneath
168   -\textit{reverseproxy}, any request to the platform will be handled by it. The
169   -Colab service provides interface, authentication and search engine integration
170   -among all the services. When a request is received to a specific service,
171   -Colab authenticates the user in the target tool, sends the request and makes a
172   -visual transformation in the HTML page which is the content of the response.
173   -Another user-oriented feature is the integrated search engine, when the user
174   -want to find something in the platform Colab will perform the search in the
175   -whole databases. Colab itself provides a web interface for GNU Mailman and we
176   -have two others integrated tools in \textit{integration}: Gitlab and Prezento.
177   -Gitlab provides web interface for Git repositories and issues tracker, and
178   -Prezento is a front-end for source code static analysis.
179   -
180   -The source code static analysis is performed by \textit{mezuro}. It runs some
181   -static analysis tools on source code stored in repository and provide this data
182   -to Prezento. A social network and CMS (Content Manager System) is provided by
183   -Noosfero in \textit{social}, and the databases of all tools with a cache
184   -service are in \textit{database}.
  156 +%
  157 +The SPB platform was deployed in 7 virtual machines with different functions.
... ...
sbqs2017/content/05-features.tex
1 1 \section{Features}
2 2 \label{sec:spb}
3 3  
4   -The new generation of the SPB portal combines adapted features of existing collaborative softwares
  4 +The new generation of the SPB portal combines features adapted from existing collaborative software
5 5 and features developed by the SPB team. Whenever possible, new functions
6   -(newly developed or partially modified) were sent to official repositories, as a contribution.
  6 +(newly developed or partially modified) were contributed back to the official repositories.
7 7  
8 8 As a result, we have a platform that integrates and harmonizes different features such as
9 9 social networking, mailing list, version control system, content management and
10 10 source code quality monitoring. Our aim was to develop functionalities by reusing
11   -functions of collaborative softwares already integrated to the platform. In
  11 +functionality of collaborative software already integrated to the platform. In
12 12 addition, we tried to keep this integration transparent to end users.
13 13  
14 14 \subsection{Software and Software Community}
... ... @@ -17,47 +17,47 @@ In the new SPB portal, each software has a standard set of pages and tools.
17 17 Besides accessing support pages (such as FAQ and installation guide) within the platform, users will be able to download
18 18 different versions of the software and find several mechanisms of software development management.
19 19  
20   -Focusing on the collaborative development, the Mailman was integrated to the platform in order to allow
  20 +Focusing on the collaborative development, Mailman was integrated to the platform in order to allow
21 21 the dialogue and communication between developers, users and
22 22 enthusiasts of a determined software. The software has its own mailing list whose privacy
23 23 can be configured/set by administrators.
24 24  
25   -The software has a social interface area (aka "software community") where users can find other users, blogs,
  25 +The software has a social interface area ("software community") where users can find other users, blogs,
26 26 summary of recent activities, or any other relevant community-produced content.
27 27 Users logged to the platform can request membership to different software communities
28 28 and each community member can access and edit restricted content. For this purpose,
29   -many Noosfero features related to social network and content management was integrated to the portal.
  29 +many Noosfero features related to social networking and content management were integrated to the portal.
30 30  
31 31 To assist decision-making, the new SPB has acquired assessment and statistical
32 32 tools. Now, users will be able to rate the software and make comments and all
33 33 information will be avaiable to other users. Moreover, the software has a section
34   -containing its statistical data, where values are calculated through data
  34 +containing its statistical data, where values are calculated based on data
35 35 provided by users and the system.
36 36  
37 37 The role of the administrator will be present in the software and in its community. The
38 38 administrator is responsible for moderating content, memberships and user
39   -comments. He is also the one who can make changes in the software homepage
  39 +comments. The administrator is also the one who can make changes in the software homepage
40 40 content.
41 41  
42 42 \subsection{Software Catalog and global search}
43 43  
44 44 The platform also provides a search tool called Software Catalog,
45   -which allows users to find softwares available in its directory.
  45 +which allows users to find softwares available in the portal.
46 46 In this catalog, some search options were developed to make the navigation easier,
47 47 such as filters (by type of software or category), sorting and score.
48 48  
49 49 In order to expand the searching scope and cover more types of content, the SPB team
50 50 developed the global search tool. This tool unifies search mechanisms
51   -provided by the mentioned collaborative softwares. Any user can
52   -find a public content in the context of social network, mailing list and
  51 +provided by the different collaborative software used in the SPB protal. Any user can
  52 +find a public content in the context of social networking, mailing list and
53 53 software development.
54 54  
55 55 \subsection{Software development tools}
56 56  
57 57 The new SPB also provides
58   -tools to encourage developers to keep each source code and its
59   -developments within the platform. Any created software has, by default, a
60   -related git repository with wiki pages and issues tracking. These tools are
  58 +tools to encourage developers to keep source code and its
  59 +development activity within the platform. Any created software has, by default, a
  60 +an associated git repository with wiki pages and issue tracking. These tools are
61 61 supplied by the integration of Gitlab into the platform.
62 62  
63 63 Developers can also evaluate the software source code to measure software
... ... @@ -67,7 +67,7 @@ public, which allows greater transparency between the developer and the
67 67 community that uses the software. Thereby, the maintainers can decide if the
68 68 given solution meets the source code quality requirements.
69 69  
70   -Thus, the SPB becomes a platform to stimulate the openness of the source code;
  70 +Thus, the SPB became a platform to stimulate the openness of the source code;
71 71 dialogue between users and the development team; and also
72 72 maintenance and evolution of the software, which will provide more
73 73 transparency in government investments.
... ...
sbqs2017/content/07-process.tex
... ... @@ -5,19 +5,19 @@ The SPB team was composed of a variety of professionals with different levels
5 5 and skills, where most of them were undergraduate students with major in
6 6 software engineering (from 4th semester or upper). Since the students could
7 7 not dedicate many hours per week to the project, they always had the
8   -flexibility to negotiate their work schedule during the semester in order not
9   -to cause any damage to their grades. Their daily work routine in the project
10   -included programming and devops tasks.
  8 +flexibility to negotiate their work schedule during the semester in
  9 +order to not harm their classes and coursework. Their daily work routine
  10 +in the project included programming and DevOps tasks.
11 11  
12 12 The development of SPB project required a vast experience and background that
13   -usually undergraduate students do not have yet. For this reason, some senior
14   -developers have joined to the project to help with hard issues and to transfer
15   -knowledge to the students. Their main task was to provide solutions for complex
16   -problems, in other words, they worked as a developer. As these professionals
17   -are very skillful and the project could not fund a full time work for them,
18   -some of them worked partially on the project. In addition, they lived in a
19   -different states spread around Brazil which led much of the communication to be
20   -made via Internet.
  13 +usually undergraduate students do not have yet. For this reason, a few senior
  14 +developers have joined to the project to help with the more difficult issues
  15 +and to transfer knowledge to the students. Their main task was to provide
  16 +solutions for complex problems, in other words, they worked as developers. As
  17 +these professionals are very skillful and the project could not fund a full
  18 +time work for them, some of them worked partially on the project. In addition,
  19 +they lived in a different states spread around Brazil which led much of the
  20 +communication to be online.
21 21  
22 22 In short, our work process was based on open and collaborative software
23 23 development practices. The development process was defined based on the
... ... @@ -26,108 +26,143 @@ high degree of automation resulting from DevOps practices. Thus, the work
26 26 process was executed in a cadenced and continuous way.
27 27  
28 28 Finally, the last group of actors of this project was composed of employees
29   -formally working for the Brazilian government, in the Ministery of Planning,
30   -Development, and Management (MP is the Brazilian acronyms). All the project
  29 +formally working for the Brazilian government, in the Ministry of Planning,
  30 +Development, and Management (MP is the Brazilian acronym). All the project
31 31 decisions, validations, and scope definitions were made by them. In this way we
32   -developed software product increments, releases, aligned with business
33   -strategic objectives. As can be seen, the project had many kinds of profiles
34   -that had to be organized and synchronized.
  32 +developed software product incrementally, with releases aligned to business
  33 +strategic objectives. As one can see, the project had many different
  34 +kinds of stakeholders that had to be organized and synchronized.
35 35  
36   -\subsection{Teams organizations}
  36 +\subsection{Team organization}
37 37  
38 38 Approximately 70\% of the development teams were composed of software
39   -engineering undergraduate students from UnB and they worked physically in the
40   -same laboratory in the opposite of the senior. Each student had their own
41   -scheduler based on their class, it made complicated to implement pair
42   -programming. Also, they had a different area of interests. To cope with those
43   -diversity, we had two basic rules which guided the project organization:
  39 +engineering undergraduate students from UnB and they worked physically
  40 +in the same laboratory. Each student had their own schedule based on
  41 +their classes, what complicates the implementation of pair programming.
  42 +The senior developers tried to synchronize their schedule with the
  43 +students on their sub-team. To cope with this environment, we had a few
  44 +basic rules which guided the project organization:
44 45  
45 46 \begin{enumerate}
46   - \item Classes have to be the high priority for undergraduate students;
47   - \item Always work in pair (locally or remotely).
  47 + \item Classes have high priority for undergraduate students;
  48 + \item Work in pairs whenever possible (locally or remotely).
  49 + \item There must be one morning or afternoon per week when
  50 + \emph{everyone} should be together physically in the laboratory
  51 + (except of course the remote team members).
  52 + \item Every 3 to 4 months, the senior developers would fly in and work
  53 + alongside the students for a few days.
48 54 \end{enumerate}
49 55  
50   -With the aforementioned rules we divided all the project into four different
51   -teams: Colab, Noosfero, Design, and DevOps. Each team had one coach responsible
52   -for reducing the communication problem with the other teams and help the
53   -members to organize itself in the best way for everyone (always respecting the
54   -work time). The coach, was a normal student working in some of the teams with
55   -the extra duty of register the current tasks developed in the sprint and with
56   -the responsibility to talk with other teams. One important thing to notice is
57   -the mutability of the team and the coach, during the project many students
58   -changed between the teams to try different areas.
59   -
60   -One characteristic of the teams was the presence of (at least) one senior per
61   -team. This was essential, because hard decisions and complex problems were
62   -usually addressed to them, this relieved the coach duty to take a complicated
63   -technical decisions and encouraged students to be a coach. Lastly, the senior
64   -had to respect a rule number two and work with students, this was important to
65   -gave the undergraduate the opportunity to interact with a savvy professional in
66   -his area and keeping the knowledge flow in the project.
67   -
68   -Finally, we had to add two last elements of the team organization, that was
69   -essential for the project harmony: the meta-coach and professors. The former
70   -was a software engineer recently graduated and which wanted to keep working on
71   -the project, the latter were professors that orchestrated all the interactions
72   -between all members of the project. The meta-coach usually worked in one
73   -specific team and had the extra task of knowing the current status of all
74   -teams. Professors and meta-coaches worked together to reduce the communication
75   -problem between all the teams. Lastly, all the bureaucracy tasks was
76   -centralized in the professors.
77   -
78   -\subsection{Meetings}
79   -
80   -Brazilian government used to work with software development in a very
81   -traditional way, frequently they claim on documents and does not focus on what
82   -really matter (running software). This way of thinking caused to us a
83   -communication noise with MP, because they constantly tried to leverage on our
84   -work style. It was especially hard to convince them to accept the idea of open
85   -scope and agile development, but after months of labor and showing results they
86   -stopped resisting.
87   -
88   -We defined some level of meeting granularity to avoid to generate overheads to
89   -the developers. We had a strategical and validating meeting with MP (the
90   -former once in a month and the latter each 15th day), release plaining with the
91   -entire team (one per month), and finally a sprint planning (one each 15th day).
92   -Figure \ref{fig:meeting} is a diagram that represents our meeting organization.
  56 +With the aforementioned rules we divided all the project into four
  57 +different teams: Colab, Noosfero, Design, and DevOps. Each team had one
  58 +coach responsible for reducing the communication problem with the other
  59 +teams and help the members to organize themselves in the best way for
  60 +everyone (always respecting their work time). The coach was one of the
  61 +students working in some of the teams with the extra duty of registering
  62 +the current tasks developed in the sprint and with the responsibility to
  63 +talk with other teams. One important thing to notice is the mutability
  64 +of the team and the coach, during the project many students changed
  65 +between the teams to try different areas.
  66 +
  67 +One characteristic of the teams was the presence of (at least) one
  68 +senior per team. This was essential, because hard decisions and complex
  69 +problems were usually referred to them. This kept having to take
  70 +complicated technical decisions from the coach tole, what encouraged
  71 +students to be coaches. Lastly, the senior developers worked directly
  72 +with the students, and this was important to give the undergraduate the
  73 +opportunity to interact with a savvy professional in his area and to
  74 +keep the knowledge flowing in the project.
  75 +
  76 +Finally, we had to add two last elements of the team organization, that
  77 +was essential for the project harmony: the meta-coach and professors.
  78 +The former was a software engineer recently graduated and which wanted
  79 +to keep working on the project, the latter were professors that
  80 +orchestrated all the interactions between all members of the project.
  81 +The meta-coach usually worked in one specific team and had the extra
  82 +task of knowing the current status of all teams. Professors and
  83 +meta-coaches worked together to reduce the communication problem between
  84 +all the teams. Lastly, all the paperwork tasks, such as reporting on the
  85 +project progress to the Ministry, was handled by the professors.
  86 +
  87 +\subsection{Communication and management}
  88 +
  89 +Our team had many people working together, and most of the seniors worked in a
  90 +different city remotely. Also, we tried to keep our work completely clear to
  91 +the Brazilian government and citizens interested in following the project. To
  92 +handle those cases, we used a set of tools to communication and other to manage
  93 +the project.
  94 +
  95 +For communication between member in different places, we used: Google
  96 +handouts with tmate tool, IRC, and mailing lists. When one student had to
  97 +work in pair with a senior, normally, they used Google hangout for
  98 +communication and they shared a terminal session with tmate which allow
  99 +them to share the same terminal, with both typing and seeing the screen.
  100 +For questions and fast discussion, we used IRC. For general
  101 +notification, we used the mailing lists.
  102 +
  103 +For managing the project we used the SPB Portal itself; first to validate it by
  104 +ourselves, and also because it had all the required tools. We basically created
  105 +one wiki page per release in the SPB Gitlab instance with a mapping between
  106 +strategical, tactical, and operational views. In a practical point of view, one
  107 +milestone per user history (feature), and one or more issues for addressing
  108 +each feature. With this approach we achieved two important goals: keeping all
  109 +the management as close possible to to the source code, and tracking every
  110 +feature developed during the project.
  111 +
  112 +\subsection{High-level project management and reporting}
  113 +
  114 +The Brazilian government used to work with software development in a
  115 +very traditional way. They would frequently focus on documents and not
  116 +on what was, in our opinion, what really matters: working software. This
  117 +dissonance caused us a communication noise with MP, because they would
  118 +often question our work style. It was especially hard to convince them
  119 +to accept the idea of open scope and agile development, but after months
  120 +of labor and showing results they stopped resisting.
  121 +
  122 +We defined some level of meeting granularity to avoid generating too
  123 +much overhead to the developers. We had a strategical and validating
  124 +meeting with MP (the former once in a month and the latter each 15th
  125 +day), release plaining with the entire team (one per month), and finally
  126 +a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a
  127 +diagram that represents our meeting organization.
93 128  
94 129 \begin{figure}[hbt]
95 130 \centering
96   - \includegraphics[width=.75\linewidth]{figures/meeting_flows.png}
  131 + \includegraphics[width=\linewidth]{figures/meeting_flows.png}
97 132 \caption{Meetings cycles}
98 133 \label{fig:meeting}
99 134 \end{figure}
100 135  
101   -In the strategical meeting we usually defined the priorities and new features
102   -with the Brazilian government (we always had to negotiate next steps with
103   -them). Normally the professors, the coach of each team, the meta-coach, and
104   -some employees of the MP join in this meeting. We usually discussed what the
105   -team already produced since our last meeting, and we establish the new features
106   -for the next release. Notice that just part of the team join in this meeting
107   -to avoid generating unnecessary overhead to the developers, but all the
108   -students interested to participate was allowed to join (many students wanted
109   -this experience during the project).
  136 +In the strategical meeting we usually defined the priorities and new
  137 +features with the Brazilian government. Normally the professors, the
  138 +coach of each team, the meta-coach, and some employees of the MP would
  139 +participate in this meeting. We usually discussed what the team already
  140 +produced since our last meeting, and established the new features for
  141 +the next release. Notice that just part of the team would join this
  142 +meeting to avoid generating unnecessary overhead to the developers, but
  143 +all the students interested to participate were allowed to join (many
  144 +students wanted this experience during the project).
110 145  
111 146 After the strategical meeting with Brazilian government agents, we had a
112 147 planning turn with all teams together. In this part, each team worked together
113   -to convert the MP wishes into small parts which was represented by the epics of
  148 +to convert the MP wishes into smaller parts which were represented by the epics of
114 149 the release. Each coach was responsible for conducting the planning, and after
115   -that register it on the project wiki (the wiki provided by Gitlab). With this
  150 +that record it on the project wiki (the wiki provided by Gitlab). With this
116 151 epic, each 14th day the team have generated their sprint scheduler (with small
117   -achievements mapped in issues).
  152 +achievements mapped to issues).
118 153  
119   -To keep the Brazilian government always updated, we invited them to work with
120   -us to validate the new features in progress. Normally we had a meeting each
121   -15th day. Basically, this was our work flow, we always kept everything
122   -extremely open to the MP (our way of work and open source projects) and to the
123   -team.
  154 +To keep the Brazilian government always updated, we invited them to work
  155 +with us to validate the new features in progress. Normally we had a
  156 +meeting each 15th day. Basically, this was our work flow, we always kept
  157 +everything extremely open to the MP (our way of working, and the one
  158 +often used by open source projects) and to the team.
124 159  
125   -To keep the track of all of those things we used the SPB, especially the
126   -Gitlab. Basically, we had:
  160 +To keep the track of all of those things we used the SPB itself,
  161 +especially Gitlab. Basically, we had:
127 162  
128 163 \begin{enumerate}
129 164 \item Project repository: We have one organization with many repositories
130   - \item Milestones: Each milestone is used to register a release
  165 + \item Milestones: Each milestone was used to register a release
131 166 \item Wiki: Each release has one page on wiki with the compilation of
132 167 strategical meeting
133 168 \item Issues: Each sprint planning generated issues, which we associated to
... ... @@ -135,32 +170,6 @@ Gitlab. Basically, we had:
135 170 with them. Finally each developer assigned the issue to itself.
136 171 \end{enumerate}
137 172  
138   -Notice that this workflow gave to us and to the Brazilian government agents a
139   -full traceability from high view of the feature to the low view (code). This
140   -provided to them a way to validate all worked done and proof the concept that
141   -work with open source project can give a proper view to them check.
142   -
143   -\subsection{Tools for communication and management}
144   -
145   -Our team had many people worked together, and most of the seniors worked in a
146   -different city remotely. Also, we tried to keep our work completely clear to
147   -the Brazilian government and citizens interested in follow the project. To
148   -handle those cases, we used a set of tools to communication and other to manage
149   -the project.
150   -
151   -For communication between member in different places, we used: google-talk with
152   -tmate, IRC, and mailing-list. When one student had to work in pair with a
153   -senior, normally, they used google-hangout for communication and they shared a
154   -session with tmate which allow them to share the same terminal. For questions
155   -and fast discussion, we used IRC. For general notification, we used the
156   -mailing-list.
157   -
158   -For managing the project we used the SPB Portal to validate it by ourselves and
159   -because it had all the required tools. We basically create one wiki page per
160   -release in Gitlab, one milestone per sprint, and one or more issues for address
161   -one user history. With this approach we achieve two important things: keep all
162   -the management close to the source code and tracked every feature developed by
163   -the project.
164   -
165   -%TODO: Ainda falta adicionar a parte da visita dos seniors e o turno sagrado
166   -
  173 +Notice that this workflow gave us and the Brazilian government agents
  174 +full traceability from a high level view of each feature to the lowest
  175 +level (code).
... ...
sbqs2017/content/08-contributions.tex
1   -\section{Contributing with Free Software Communities}
  1 +\section{Contributions to the upstream communities}
2 2 \label{sec:contributions}
3 3  
4 4 %- projeto feito do jeito certo com relação ao software livre (contribuições upstream etc)
... ... @@ -9,24 +9,30 @@
9 9 %* Coper, empacotamentos (obs), omniauth
10 10  
11 11  
12   -During the execution of this project we made several contributions from
13   -different levels to the communities we interacted with. This occurred due to
14   -our development process aligned with those of the respective communities. We
15   -used to discuss with upstream the features and bug fixes that we was working
16   -on, this kind of discussion improve the developers' technical solutions and
17   -allowed upstream to accept our contribution more easily.
18   -
19   -In Colab we helped upstream to redesign the entirely architecture, enabling the
20   -development of plugins to integrate new tools. We also added a feature that
21   -allowed Colab to run asynchronous tasks, which was a major improvement for us
22   -since we were developing a complex system. A migration to the latest Django
23   -version was made (web framework used by Colab). Moreover, we worked on RevProxy
24   -(the greatest Colab dependency) to put it in a good shape, fixing many bugs.
  12 +During the execution of this project we made several contributions to
  13 +the upstream communities we interacted with. This occurred due to our
  14 +development process aligned with those of the respective communities.
  15 +During development, we would explicitly discuss the features and bug
  16 +fixes that we were working on with the applicable upstream communities.
  17 +This contributed to improve the developers technical solutions with
  18 +expertise outside of our team, and make it easier for those changes to
  19 +be accepted in the original projects. Having changes accepted upstream
  20 +in turn makes our life easier as it minimizes the delta between our
  21 +codebase and upstream's allowing us to upgrade and benefit from
  22 +development work from others.
  23 +
  24 +In Colab, we helped upstream redesign the entirely architecture,
  25 +enabling the development of plugins to integrate new tools. We also
  26 +added a feature that allowed Colab to run asynchronous tasks, which was
  27 +a major improvement for us since we were developing a complex system. A
  28 +migration to the latest Django version was made (web framework used by
  29 +Colab). Moreover, we worked on RevProxy (the more important dependency
  30 +of Colab) to put it in a good shape, fixing many bugs.
25 31  
26 32 Gitlab was the tool that we made the least number of modifications. We
27   -contributed with some improvements related with configuration files and we
28   -developed a new omniauth plugin, which enables the user authentication in
29   -Gitlab via REMOTE\_USER HTTP header. This omniauth plugin was needed because
  33 +contributed with some improvements related with configuration files and
  34 +we developed a new plugin that enables user authentication in Gitlab
  35 +through the REMOTE\_USER HTTP header. This plugin was needed because
30 36 Colab uses this mechanism to manage the authentication.
31 37  
32 38 Noosfero was the tool that contemplated several functional requirements,
... ... @@ -35,15 +41,11 @@ migrate to the latest Rails version (web framework used by Noosfero), enable
35 41 the federation implementation (federation with other social networks), decouple
36 42 the interface and the back-end, and so forth.
37 43  
38   -We also contributed with some DevOps tools as well during the project. Some
39   -member of our team took the maintenance of some python libraries that we used
40   -to support our scripts to upload our packages to OBS (Open Build Service).
41   -Since we were composed by many teams with large number of developers we had
42   -some problems related with the tracking of our per team/software releases, the
43   -DevOps team did not know when was the right time to package that software or
44   -not. Thus we developed a tool called copr-status to keep tracked the version
45   -packaged and the version finished by the developers, basically this is a web
46   -interface that helps you to visualize the status of that package/software.
  44 +We also made some contributions on the DevOps front. Some members of
  45 +them team became maintainers of some python libraries that were used by
  46 +our scripts to upload packages to OBS (Open Build Service). We developed
  47 +a tool called copr-status to keep track of the different stages of the
  48 +lifecycle of each of the individual packages we were working on.
47 49  
48 50 %TODO: Mezuro
49 51  
... ...
sbqs2017/content/09-lessons.tex
1 1 \section{Lessons Learned}
2 2 \label{sec:lessons}
3 3  
4   -The multidisciplinary composition of the development teams, mainly software
5   -engineers and designers, is necessary for the development of good software
6   -products, which naturally aim to meet the users needs. In the context of the
7   -SPB project, there were also stakeholders from different areas who composed the
8   -team of technicians and managers of the MP, as well as the administrative teams
9   -of UnB. This interaction with different professionals brought a great learning
10   -opportunity for the students, who had their first professional experience, even
11   -during their graduation course. On the other hand, the different perceptions of
12   -stakeholders generated high complexity of communications and expectations
13   -management, burdening too much the professors who were responsible for project
14   -management.
15   -
16   -The use of the Colab tool was a requirement required by the MP. They argueed
17   -that this tool presented functionalities that would allow MP managers to
18   -stimulate the participation of SPB service providers with gamefication
19   -practices. As we said, in order for Colab to perform the expected behavior in
20   -SPB its architecture had to be completely redefined and this caused in
21   -practice, (i) the considerable increase in the architectural complexity of the
22   -SPB and (ii) it was the subsystem that consumed the most effort and budget
23   -during development.
24   -
25   -Due to the computational complexity related to the SPB deployment, associated
26   -with the Brazilian government needs for product support, we made an effort to
27   -provide complete automation of the entire deployment procedure, a result of
28   -DevOps activities. In this way, we encapsulate all this complexity and enable
29   -the deployment of new SPB releases through the execution of few commands, as
30   -registered in the project documentation. Although we have provided a high
31   -degree of automation, training workshops for the MP technical team, and a
32   -meticulous description of the procedures in the documentation, we observed that
33   -the MP technical staff invariably depended on our support to perform these
34   -procedures.
35   -
36   -From the point of view of management and development processes, we had to
37   -develop management strategies that would accommodate different organizational
38   -cultures. As reported, the MP has a functional hierarchical organizational
39   -culture, strongly supported by process management, typical of the traditional
40   -development paradigm. The UnB teams use a process based on agile manifest
41   -values and FOSS and agile community practices. So we created a process of
42   -"translation" of work done to communicate with MP managers who manage their
43   -portfolio based on the PMBoK processes. On the one hand, in the intermediary
44   -and final project's phases we have matured this process, mainly due to the
45   -perception of the results by MP, on the other hand, in the initial phase we had
46   -a lot of intervention in our work style, which ended up focusing strategic
47   -discussions for operational discussions. Again there was an overload in
48   -professors, who were responsible for maintaining the strategic alignment of the
49   -MP with the day to day development of the UnB team.
50   -
51   -Another importance factor for the students and maturing of the software
52   -engineering practices used in the project was the composition of the teams with
53   -the participation of experienced professionals from the FOSS communities. These
54   -professionals together with the professors promoted a work environment where
55   -the students could develop their skills in a didactic and practical way without
56   -being transferred the pressures for them. In addition, these experienced
57   -professionals were responsible for the most relevant technical decisions
58   -related to the SPB software product.
59   -
  4 +\textbf{How to involve students real-world projects, interacting with
  5 +real customers.}
  6 +%
  7 +Our team was mainly composed of software engineering undergraduate
  8 +student, who had the opportunity to interact with senior developers and
  9 +designers inside the team, as well as with the team of technicians and
  10 +managers from the Brazilian Government, and the management team from
  11 +UnB.
  12 +%
  13 +They interacted with professionals that had diverse expertises, and were
  14 +able to participate in all levels of the software development process.
  15 +This contribted to a great learning opportunity, and for a majority of
  16 +them this was their first professional experience.
  17 +
  18 +\textbf{The participation of experienced professionals is crucial to
  19 +success of the project.}
  20 +One important factor for the students was the composition of the teams
  21 +with the participation of experienced professionals.
  22 +%
  23 +On the technical side, the senior developers and designers would handle
  24 +the more difficult technical decisions, creating a work environment
  25 +where the students could develop their skills in a didactic way without
  26 +pressure.
  27 +%
  28 +On the management side, the active participation of professors -- who
  29 +are, in the end, the ones responsible for the project -- is crucial to
  30 +make sure student participation is conducted in a healthy way, and is an
  31 +instance of leading by example.
  32 +
  33 +\textbf{A balanced relationship between academia and industry.}
  34 +The experience of the SPB project led UnB to develop a work style which
  35 +proved to be appropriate for an educational environment that brings
  36 +academia and industry together.
  37 +%
  38 +The highest priority from the university's point of view is the
  39 +students. Considering this, the activities of the project were never
  40 +prioritized to the detriment of classes and other pedagogical
  41 +activities. In summary, we had students working at different times, part
  42 +time, remotely or locally, always respecting their individual
  43 +conditions, but doing the work in a collective, collaborative and open
  44 +way.
  45 +%
  46 +And even under a potentially adverse environment, the project delivered
  47 +the desired solution with success.
  48 +%
  49 +At the end of the project, we noted that the skills developed by the
  50 +students were at the state of art of the software engineering practice.
  51 +After the project ended, we had team members successfully embracing
  52 +opportunities in public, private, national and international
  53 +organizations, in addition to those students that went into
  54 +entrepreneurship and opened their own companies.
  55 +
  56 +\textbf{Managing different organizational cultures.}
  57 +In the beginning of the project, the Brazilian Government stakeholders
  58 +had certain expectations about the development of project that, let's
  59 +say, didn't exactly match our work based on agile and FOSS practices.
  60 +%
  61 +We had to develop strategies that would support different these
  62 +organizational cultures. As reported in Section \ref{sec:process}, the
  63 +MP is organized in a functional hierarchical organizational structure,
  64 +typically, a traditional development paradigm. Therefore, we had to
  65 +create a translation process between our team and the MP managers who
  66 +managed the project on their side assuming a traditional, waterfall
  67 +process.
  68 +
  69 +\textbf{Manage higher-level and lower-level goals separately.}
  70 +During the initial phase of the project the MP team would often bring
  71 +strategic discussions to technical/operational meetings, where we were
  72 +supposed to discuss practical, technical decisions.
  73 +%
  74 +This produced a highly complex communication and management environment,
  75 +overloading the professors because they were supposed to be responsible
  76 +for maintaining the strategic alignment of the MP synchronized with
  77 +implementation plans of the development team, specially in light of the
  78 +aforementioned culture mismatch. Mixing both concerns in the same
  79 +discussions caused confusion on both sides.
  80 +%
  81 +Towards the middle and end of the project we were able to keep those
  82 +concerns separated, what eased the work of everyone involved.
  83 +
  84 +\textbf{Living with ill-advised political decisions.}
  85 +At the initial phases of the project, by political and personal
  86 +motivation, the main stakeholders from the Brazilian government imposed
  87 +the use of Colab to guide the development of the new SPB platform. Our
  88 +team was totally against the idea because we already knew that Colab was
  89 +a very experimental project and its adoption could dramatically increase
  90 +the project complexity. Even though we provided technical reasons to
  91 +not utilize Colab, MP was adamant and we had to manage this problem. As
  92 +explained in section \ref{sec:architecture} we did massive changes to
  93 +it, and at the end of the project we completely rewrote Colab and made
  94 +it stable. It is important to notice that the MP compelled us to accept
  95 +a technical issue based only on political interests, without considering
  96 +all the resources that would be spent due to that decision. At the end
  97 +of the project, we verified that Colab indeed consumed a vast amount of
  98 +the budget and increased the project complexity. In the end of the
  99 +project and after our analysis on the decision made by the MP, we
  100 +understand that MP's managers are capable of ignoring technical reasons
  101 +in favor to a political decision.
  102 +
  103 +\textbf{Consider sustainability from the beginning.}
  104 +In the process of deploying the SPB platform in the MP structure, we had
  105 +to interact with the MP technicians. We did several workshops, training
  106 +and a meticulous documentation describing all the required procedures to
  107 +update the platform, however, we realized that the MP technicians
  108 +constantly avoid the responsibility. After noticing the aforementioned
  109 +situation, we organized a specific DevOps that completely automated all
  110 +the deployment procedure. We simplified all the platform deployment to a
  111 +few steps: (1) initial configurations (just ssh configuration) and (2)
  112 +the execution of simple commands to completely update the platform. By
  113 +the end of the project, we observed that the MP technicians invariably
  114 +still depended on our support to update the platform even with all the
  115 +automation provided by us. We were sadly left with a feeling of
  116 +uncertainty about the future of the platform after the project ended. In
  117 +hindsight, we realize that the MP dedicated systems analysts and
  118 +managers to the project, but not operations technicians. The later
  119 +should have been more involved with the process so they could at least
  120 +comfortable with managing the platform infrastructure.
  121 +
60 122 % * Gestão dos recursos: Fizemos mais por menos (2.6M de 3.2M) --- sem os dados
61 123 %% (escopo, custo, tempo e qualidade) bem discutidos é difícil sustentar essa
62 124 %% afirmação, embora eu e Paulo consigamos perceber isso.
63 125  
64   -The experience of the SPB project led UnB to develop a model of team
65   -composition and work style that proved to be appropriate to the cararteristics
66   -of an education environment, bringing the academy closer to the industry. The
67   -highest priority from the university's point of view is the students.
68   -Considering this, the activities of the project were never prioritized to the
69   -detriment of the classes and other didactic-pedagogical activities. In short we
70   -had students working at different times, part time, remotely or presential,
71   -always respecting their individual conditions, but doing the work in a
72   -collective, collaborative and open way. At the end of the project we realized
73   -that the skills developed by the students empowered them with the state in the
74   -practice of software engineering. The members of the teams got opportunities to
75   -work in public, private, national and international organizations, in addition
76   -to those students they preferred entrepreneurship, opening their own companies.
  126 +%===========
  127 +% Conclusion
  128 +%===========
  129 +
  130 +\section{Final remarks}
  131 +
  132 +The portal is available at \url{softwarepublico.gov.br}. All
  133 +documentation, including detailed architecture and operation manuals are
  134 +also available\footnote{\url{https://softwarepublico.gov.br/doc/}
  135 +(in Portuguese only at the moment)}).
  136 +%
  137 +All the integrated tools are FOSS and our contributions were published
  138 +in open repositories, available on the SPB Portal itself. We also
  139 +contributed these features back to the respective communities: that
  140 +benefits those communities, as well as us since we can share future
  141 +development and maintenance effort with other organizations that
  142 +participate in their projects.
  143 +
  144 +More discussion ...
  145 +
  146 +...
  147 +
  148 +...
  149 +
  150 +%* utilização do projeto para formação de recursos humanos (alunos)
  151 +
  152 +%* dados da verificação dos repositório para a análise da qualidade dos código via Mezuro e CodeClimate
  153 +
  154 +%* o que achamos que irá acontecer com o SPB no futuro breve (acabar)
  155 +
  156 +%* 69 projetos marcados como SPB, de 81 no total na plataforma.
  157 +
  158 +%* 47\% é desenvolvido em PHP.
  159 +
  160 +% foi constatado que aproximadamente 75\% dos softwares \textbf{não} possuem seus códigos-fonte versionados nesta ferramenta. Realizado algumas pesquisas, foi encontrado o código-fonte em outros serviços (Github, Bitbucket).
  161 +
  162 +% Foram adicionados 31 softwares do SPB em ambas as ferramentas (Mezuro e Code Climate), desenvolvidos em PHP e Python. Estas adições resultaram na análise descrita nos próximos parágrafos. No Mezuro, dos 31 softwares adicionados, somente 4 obtiveram sucesso na avaliação. No Code Climate, 16 softwares realizaram a \textit{build} da avaliação com sucesso. Nos que falharam, alguns dos erros foram encontrados em três das \textit{engines}: ora em \textit{duplication}, ora na \textit{phpmd}, ora na \textit{eslint}.
  163 +
  164 +% também foram inseridos no Mezuro para avaliação, 5 projetos dos 17 desenvolvidos em Java, com o intuito de ser um contraponto ao Code Climatepor esta não compreender a análise de projetos em Java, C, ou C++. Infelizmente nenhuma das \textit{builds} resultou em resultados concretos.
  165 +
  166 +%* Debater economia de recursos em orgão públicos
77 167  
... ...
sbqs2017/figures/arch3.png 0 → 100644

488 KB

sbqs2017/figures/home-SPB_2.png 0 → 100644

90 KB

sbqs2017/figures/technological-requirements.odg
No preview for this file type
sbqs2017/figures/technological-requirements.png

48.9 KB | W: | H:

48.1 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
sbqs2017/spb.tex
... ... @@ -12,12 +12,12 @@
12 12  
13 13 \begin{document}
14 14 \sloppy
15   -\title{ Development experience report on the new \\ Brazilian Public Software Portal}
  15 +\title{Lições aprendidas ao longo do desenvolvimento do novo \\ Portal da Software Público Brasileiro}
16 16  
17   -\author{Paulo Meirelles\inst{1,3}, Antonio Terceiro\inst{2}, Hilmer Neri\inst{1},\\
18   - Melissa Wen\inst{2}, Rodrigo Siqueira\inst{3}, Lucas Kanashiro\inst{3}}
  17 +\author{Paulo Meirelles\inst{1,3}, Antonio Terceiro\inst{2}, Melissa Wen\inst{2},
  18 + \\Rodrigo Siqueira\inst{3}, Hilmer Neri\inst{1}}
19 19  
20   -\address{Laboratory of Production, Research and Innovation in Software (LAPPIS)\
  20 +\address{Laboratório de Produção, Pesquisa e Inovação em Sofware(LAPPIS)\
21 21 Faculdade UnB Gama (FGA) -- Universidade de Brasília (UnB)\\
22 22 Área Especial de Indústria Projeção A, Setor Leste -- Gama - DF -- Brasil
23 23 \email{\{paulormm,hilmer\}@unb.br}
... ... @@ -26,10 +26,10 @@
26 26 Rua Marechal Floriano, 28, Canela, Salvador - BA -- Brasil
27 27 \email{\{terceiro,melissa\}@colivre.coop.br}
28 28 \nextinstitute
29   - Free Libre Open Source Competence Center (CCSL)\
  29 + Centro de Competência em Software Livre (CCSL)\
30 30 Instituto de Matemática e Estatística (IME) -- Universidade de São Paulo (USP)\\
31 31 Rua do Matão, 1010, Cidade Universitária -- São Paulo - SP -- Brasil
32   - \email{\{siqueira,lkd\}@ime.usp.br}
  32 + \email{\{paulormm,siqueira\}@ime.usp.br}
33 33 }
34 34  
35 35 \maketitle
... ...