Commit 2d3361ec64bd4acfad2ac49af34e2f765d5321d3

Authored by Melissa Wen
1 parent b14ce14d

Re-organize sections Requirements and Related Works

opensym2017/content/03-relatedworks.tex 0 → 100644
@@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
  1 +\section{Related Works and Projects}
  2 +\label{sec:relatedworks}
  3 +
  4 +The new SPB platform presented in this paper is a fully integrated
  5 +environment, as we can see in Figure \ref{fig:requirements}, being very
  6 +advanced in comparison with related projects and initiatives. For example,
  7 +the USA government has a platform designed to improve access to the federal
  8 +government developed software\footnote{\url{https://code.gov}}. Code.gov
  9 +is an interface to organize the USA government projects and, in short, make
  10 +it easy for users and developers to obtain information and access their
  11 +source code repositories at GitHub. However, there are not social networking
  12 +and CMS features, as well as, other communication resources provided by that
  13 +platform.
  14 +
  15 +Additionally, there are two initiatives in Europe:
  16 +OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} and
  17 +OW2\footnote{\url{http://ow2.org}}. The Open Source Observatory (OSOR)
  18 +is a community hosted in the JoinUp platform powered by the European
  19 +Commission. OSOR aims at exchanging information, experiences and best
  20 +practices around the use of FOSS in the public administration. It helps
  21 +to find a FOSS made available by other public administrations, providing
  22 +access to information such as news, events, studies and solutions
  23 +related to implementation of open source software. It also offers forum
  24 +discussions and community mailing lists, but it does not have an
  25 +integrated source code repository manager and for the each project there
  26 +is a link to its own external repository (or its tarball file).
  27 +%
  28 +OW2 is a FOSS community to promote the development of FOSS middleware, generic
  29 +business applications, cloud computing platforms and foster a community and
  30 +business ecosystem. In short, it aims to support the development, deployment
  31 +and management of distributed applications with a focus on FOSS middleware and
  32 +related development and management tools.
  33 +%
  34 +Moreover, from the European Commission in 2007 until 20011, there was the
  35 +QualiPSo project that aimed at providing FOSS users, developers, and consumers,
  36 +with quality resources and expertise on the various topics related to FOSS. The
  37 +QualiPSo project also had planned to develop a platform called QualiPSo
  38 +Factory but it was not fully completed.
  39 +
  40 +In Latin American there is an initiative based on the SPB project called ``Software
  41 +Publico Regional''\footnote{\url{http://softwarepublicoregionalbeta.net}}. From
  42 +a practical point of view, it provides a customized Gitlab instance to share
  43 +the source code and documentation of the project from the involved countries.
  44 +%
  45 +Like Brazil, Chile has its own portal also called ``Software
  46 +Publico''\footnote{\url{http://www.softwarepublico.gob.cl}}. Users can create
  47 +content in the communities (news items, documents, wiki pages), but
  48 +source code repositories are available at the Bitbucket
  49 +platform\footnote{\url{https://bitbucket.org/softwarepublico}}.
  50 +
  51 +The Brazilian government needed to evolve the SPB project that
  52 +existed since 2005. In 2013, when we started this project, the SPB Portal
  53 +had about 200 thousand registered users. We could not just contact these
  54 +users and ask them to register an account at Github as well. Moreover,
  55 +after the Edward Snowden case, the Brazilian government approved a
  56 +specific law decree (8.135/2013) to rule its communication services,
  57 +requiring the public administration to host its information systems to
  58 +be provided by itself, what rules out usage of private platforms,
  59 +specially ones provided by foreign companies. We thus developed our own
  60 +solution to cover all the requirements, producing a complete
  61 +governmental integrated platform for collaborative software development.
opensym2017/content/03-requirements.tex
@@ -1,138 +0,0 @@ @@ -1,138 +0,0 @@
1 -\section{Requirements and Related Projects}  
2 -\label{sec:requirements}  
3 -  
4 -In 2013, the SPB Portal had more than 600 thousand unique visitors, generating  
5 -more than 16 million page views with about 50 million hits. By evaluating only  
6 -the main projects, there were more than 15 thousand downloads and 4 thousand  
7 -messages exchanged in their forums. These data illustrates the potential of the  
8 -SPB Portal, even with several limitations in the past.  
9 -  
10 -By preparing the evolution project described in this paper, the Brazilian  
11 -government promoted 3 events to collect the requirements, in particular from  
12 -society point of view: (i) an online form to collect general ideas; (ii) a  
13 -face-to-face meeting with society in general; (iii) a workshop to review the  
14 -SPB concepts and requirements with IT stakeholders from the Brazilian  
15 -government and public organizations.  
16 -  
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 -to guide the SPB portal evolution. In this scenario, the 10 most voted  
21 -requirements were, for example:  
22 -  
23 -\begin{enumerate}  
24 -  
25 -\item Source code repository with public access.  
26 -\item Visit community pages without login.  
27 -\item Distributed version control system.  
28 -\item Scores of users and developers collaboration.  
29 -\item Search software by features.  
30 -\item Integration with social networks.  
31 -\item Repository for future ideas and requirements.  
32 -\item Friendly URL to access a public software community page.  
33 -\item User feedback about a public software.  
34 -\item Report of the experience about the use of a public software.  
35 -  
36 -\end{enumerate}  
37 -  
38 -\begin{figure}[hbt]  
39 - \centering  
40 - \includegraphics[width=\linewidth]{figures/technological-requirements.png}  
41 - \caption{Technological requirements overview.}  
42 - \label{fig:requirements}  
43 -\end{figure}  
44 -  
45 -  
46 -There were other requirements based on the experience of the IT  
47 -stakeholders from the Brazilian government and from the Brazilian FOSS  
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 -  
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:  
57 -  
58 -\begin{enumerate}  
59 -  
60 -\item An organized public software catalog.  
61 -\item Social network environment (profiles for users, software pages, and community pages).  
62 -\item Content Management Systems (CMS) features.  
63 -\item Web-based Git repository manager with wiki and issue tracking features.  
64 -\item Mailing lists and discussion forums.  
65 -  
66 -\end{enumerate}  
67 -  
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  
85 -software\footnote{\url{https://code.gov}}. Code.gov is an interface to  
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  
88 -repositories at GitHub. However, there are not social networking and CMS  
89 -features, as well as, other communication resources provided by that  
90 -platform.  
91 -  
92 -Additionally, there are two initiatives in Europe:  
93 -OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} and  
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).  
104 -%  
105 -OW2 is a FOSS community to promote the development of FOSS middleware, generic  
106 -business applications, cloud computing platforms and foster a community and  
107 -business ecosystem. In short, it aims to support the development, deployment  
108 -and management of distributed applications with a focus on FOSS middleware and  
109 -related development and management tools.  
110 -%  
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  
114 -QualiPSo project also had planned to develop a platform called QualiPSo  
115 -Factory but it was not fully completed.  
116 -  
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  
120 -the source code and documentation of the project from the involved countries.  
121 -%  
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  
126 -platform\footnote{\url{https://bitbucket.org/softwarepublico}}.  
127 -  
128 -The Brazilian government needed to evolve the SPB project that  
129 -existed since 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.  
opensym2017/content/04-architecture.tex
@@ -1,173 +0,0 @@ @@ -1,173 +0,0 @@
1 -\section{Architecture}  
2 -\label{sec:architecture}  
3 -  
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.  
11 -  
12 -From the point of view of the architecture, two main requirements was  
13 -brought by the Brazilian Federal Government for the new platform:  
14 -  
15 -\begin{enumerate}  
16 - \item \textit{Integrate existing FOSS systems}, with minimal differences from  
17 - their original versions;  
18 - \item \textit{Provide a consistent user interface} across the different  
19 - systems, as well as centralized authentication.  
20 -\end{enumerate}  
21 -  
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.  
30 -  
31 -For the first requirement, we identified four main systems that required  
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.  
36 -  
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.  
41 -  
42 -\subsection{Colab}  
43 -  
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:  
49 -  
50 -\begin{itemize}  
51 - \item \textit{Centralized authentication}: Users are automatically  
52 -identified for each application without having to enter login  
53 -credentials on each of them.  
54 - \item \textit{Visual consistency}: Colab is able to change the HTML  
55 -code produced by the integrated applications, such as defining default  
56 -template or reusing common HTML pages, in order to provide a unified  
57 -interface.  
58 - \item \textit{Relaying of events between applications}: The  
59 -integrated applications or Colab itself are able to trigger an action  
60 -on another application.  
61 - \item \textit{Integrated search engine}: It is possible to set up  
62 -exactly which data needs to be indexed from each application and how  
63 -users are directed to this information on correspondent application.  
64 -\end{itemize}  
65 -  
66 -Colab implements this integration by working as a reverse proxy for the  
67 -integration applications, that is, all external requests pass through  
68 -Colab before reaching them.  
69 -  
70 -Initially, Colab had support for a small set of applications (Trac, GNU  
71 -Mailman, and Apache Lucene) and support for them was hard-coded. Our  
72 -team evolved Colab so that it can now receive plugins that add support  
73 -new applications without the need of changes to the Colab core. We also  
74 -developed plugins to be used in the SPB platform: Noosfero, GitLab, and  
75 -Mezuro.  
76 -  
77 -\subsection{Noosfero}  
78 -  
79 -Noosfero\footnote{\url{http://noosfero.org}} is a software for building  
80 -social and collaboration networks. Besides the classical social  
81 -networking features, it also provides publication features such as blogs  
82 -and a general-purpose CMS (Content Management System). Most of the user  
83 -interactions with SPB is through Noosfero: user registration, project  
84 -home pages and documentation, and contact forms.  
85 -  
86 -\subsection{Gitlab}  
87 -  
88 -GitLab\footnote{\url{http://gitlab.com}} is a web-based Git repository  
89 -manager with wiki pages and issue tracking features. Gitlab is a FOSS  
90 -platform and focuses on delivering a holistic solution that will see  
91 -developers from idea to production seamlessly and on a single platform.  
92 -  
93 -Gitlab has several unique features, such as built-in continuous  
94 -integration and continuous deployment, flexible permissions, tracking of  
95 -Work-in-Progress work, moving issues between projects, group-level  
96 -milestones, creating new branches from issues, issues board, and time  
97 -tracking.  
98 -  
99 -\subsection{Mezuro}  
100 -  
101 -Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code  
102 -metrics to monitor the internal quality of software written in C, C++,  
103 -Java, Python, Ruby, and PHP.  
104 -  
105 -In general, source code metrics tools also do not present a friendly way  
106 -to interpret its results and, even more, do not follow a standardization  
107 -between them. Mezuro collects and presents these results to the end  
108 -user, specially, by analyzing source code metric history during its life  
109 -cycle.  
110 -  
111 -The Mezuro platform provides a single interface grouping available  
112 -tools, allows selection and composition of metrics in a flexible manner,  
113 -stores the metrics evolution history, presents results in a friendly  
114 -way, as well as, allows users to customize the given interpretation  
115 -accordingly to their own context.  
116 -  
117 -\subsection{System unification}  
118 -  
119 -\begin{figure}[hbt]  
120 - \centering  
121 - \includegraphics[width=\linewidth]{figures/arch.png}  
122 - \caption{SPB architecture overview.}  
123 - \label{fig:architecture}  
124 -\end{figure}  
125 -  
126 -The conceptual architecture of the platform is presented in Figure  
127 -\ref{fig:architecture}. Colab initially handles all user interaction,  
128 -directing requests to one of the integrated applications. It  
129 -post-processes responses from the applications to apply a consistent  
130 -visual appearance, manages authentication, and provides a unified search  
131 -functionality: instead of using the redundant restricted search  
132 -functionality of each application, a search in the SPB portal might  
133 -return content from any of the applications, be it web pages, mailing  
134 -list posts, or source code.  
135 -  
136 -% Falar do devops  
137 -\subsection{Deploy}  
138 -  
139 -The SPB platform was deployed in 7 virtual machines with different functions,  
140 -as we can see in Figure \ref{fig:architecture2}.  
141 -  
142 -\begin{figure*}[hbt]  
143 - \centering  
144 - \includegraphics[width=.8\linewidth]{figures/arch3.png}  
145 - \caption{Instanciation view of the SPB architecture.}  
146 - \label{fig:architecture2}  
147 -\end{figure*}  
148 -  
149 -The \textit{reverseproxy} handles the HTTP requests and redirects them to the  
150 -\textit{integration}, the \textit{email} sends and receives e-mails on behalf  
151 -of the platform and the \textit{monitor} keeps the entire environment tracked.  
152 -These three \textit{VMs} mentioned - \textit{reverseproxy}, \textit{email} and  
153 -\textit{monitor} - are accessible via Internet and the other ones are only  
154 -available in the local network created between them.  
155 -  
156 -\textit{Integration} works as a second layer of proxy beneath  
157 -\textit{reverseproxy}, any request to the platform will be handled by it. The  
158 -Colab service provides interface, authentication and search engine integration  
159 -among all the services. When a request is received to a specific service,  
160 -Colab authenticates the user in the target tool, sends the request and makes a  
161 -visual transformation in the HTML page which is the content of the response.  
162 -Another user-oriented feature is the integrated search engine, when the user  
163 -want to find something in the platform Colab will perform the search in the  
164 -whole databases. Colab itself provides a web interface for GNU Mailman and we  
165 -have two others integrated tools in \textit{integration}: Gitlab and Prezento.  
166 -Gitlab provides web interface for Git repositories and issues tracker, and  
167 -Prezento is a front-end for source code static analysis.  
168 -  
169 -The source code static analysis is performed by \textit{mezuro}. It runs some  
170 -static analysis tools on source code stored in repository and provide this data  
171 -to Prezento. A social network and CMS (Content Manager System) is provided by  
172 -Noosfero in \textit{social}, and the databases of all tools with a cache  
173 -service are in \textit{database}.  
opensym2017/content/04-requirements.tex 0 → 100644
@@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
  1 +\section{Requirements}
  2 +\label{sec:requirements}
  3 +
  4 +In 2013, the SPB Portal had more than 600 thousand unique visitors, generating
  5 +more than 16 million page views with about 50 million hits. By evaluating only
  6 +the main projects, there were more than 15 thousand downloads and 4 thousand
  7 +messages exchanged in their forums. These data illustrates the potential of the
  8 +SPB Portal, even with several limitations in the past.
  9 +
  10 +By preparing the evolution project described in this paper, the Brazilian
  11 +government promoted 3 events to collect the requirements, in particular from
  12 +society point of view: (i) an online form to collect general ideas; (ii) a
  13 +face-to-face meeting with society in general; (iii) a workshop to review the
  14 +SPB concepts and requirements with IT stakeholders from the Brazilian
  15 +government and public organizations.
  16 +
  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 +to guide the SPB portal evolution. In this scenario, the 10 most voted
  21 +requirements were, for example:
  22 +
  23 +\begin{enumerate}
  24 +
  25 +\item Source code repository with public access.
  26 +\item Visit community pages without login.
  27 +\item Distributed version control system.
  28 +\item Scores of users and developers collaboration.
  29 +\item Search software by features.
  30 +\item Integration with social networks.
  31 +\item Repository for future ideas and requirements.
  32 +\item Friendly URL to access a public software community page.
  33 +\item User feedback about a public software.
  34 +\item Report of the experience about the use of a public software.
  35 +
  36 +\end{enumerate}
  37 +
  38 +\begin{figure}[hbt]
  39 + \centering
  40 + \includegraphics[width=\linewidth]{figures/technological-requirements.png}
  41 + \caption{Technological requirements overview.}
  42 + \label{fig:requirements}
  43 +\end{figure}
  44 +
  45 +
  46 +There were other requirements based on the experience of the IT
  47 +stakeholders from the Brazilian government and from the Brazilian FOSS
  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 +
  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:
  57 +
  58 +\begin{enumerate}
  59 +
  60 +\item An organized public software catalog.
  61 +\item Social network environment (profiles for users, software pages, and community pages).
  62 +\item Content Management Systems (CMS) features.
  63 +\item Web-based Git repository manager with wiki and issue tracking features.
  64 +\item Mailing lists and discussion forums.
  65 +
  66 +\end{enumerate}
  67 +
  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.
opensym2017/content/05-architecture.tex 0 → 100644
@@ -0,0 +1,173 @@ @@ -0,0 +1,173 @@
  1 +\section{Architecture}
  2 +\label{sec:architecture}
  3 +
  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.
  11 +
  12 +From the point of view of the architecture, two main requirements was
  13 +brought by the Brazilian Federal Government for the new platform:
  14 +
  15 +\begin{enumerate}
  16 + \item \textit{Integrate existing FOSS systems}, with minimal differences from
  17 + their original versions;
  18 + \item \textit{Provide a consistent user interface} across the different
  19 + systems, as well as centralized authentication.
  20 +\end{enumerate}
  21 +
  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.
  30 +
  31 +For the first requirement, we identified four main systems that required
  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.
  36 +
  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.
  41 +
  42 +\subsection{Colab}
  43 +
  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:
  49 +
  50 +\begin{itemize}
  51 + \item \textit{Centralized authentication}: Users are automatically
  52 +identified for each application without having to enter login
  53 +credentials on each of them.
  54 + \item \textit{Visual consistency}: Colab is able to change the HTML
  55 +code produced by the integrated applications, such as defining default
  56 +template or reusing common HTML pages, in order to provide a unified
  57 +interface.
  58 + \item \textit{Relaying of events between applications}: The
  59 +integrated applications or Colab itself are able to trigger an action
  60 +on another application.
  61 + \item \textit{Integrated search engine}: It is possible to set up
  62 +exactly which data needs to be indexed from each application and how
  63 +users are directed to this information on correspondent application.
  64 +\end{itemize}
  65 +
  66 +Colab implements this integration by working as a reverse proxy for the
  67 +integration applications, that is, all external requests pass through
  68 +Colab before reaching them.
  69 +
  70 +Initially, Colab had support for a small set of applications (Trac, GNU
  71 +Mailman, and Apache Lucene) and support for them was hard-coded. Our
  72 +team evolved Colab so that it can now receive plugins that add support
  73 +new applications without the need of changes to the Colab core. We also
  74 +developed plugins to be used in the SPB platform: Noosfero, GitLab, and
  75 +Mezuro.
  76 +
  77 +\subsection{Noosfero}
  78 +
  79 +Noosfero\footnote{\url{http://noosfero.org}} is a software for building
  80 +social and collaboration networks. Besides the classical social
  81 +networking features, it also provides publication features such as blogs
  82 +and a general-purpose CMS (Content Management System). Most of the user
  83 +interactions with SPB is through Noosfero: user registration, project
  84 +home pages and documentation, and contact forms.
  85 +
  86 +\subsection{Gitlab}
  87 +
  88 +GitLab\footnote{\url{http://gitlab.com}} is a web-based Git repository
  89 +manager with wiki pages and issue tracking features. Gitlab is a FOSS
  90 +platform and focuses on delivering a holistic solution that will see
  91 +developers from idea to production seamlessly and on a single platform.
  92 +
  93 +Gitlab has several unique features, such as built-in continuous
  94 +integration and continuous deployment, flexible permissions, tracking of
  95 +Work-in-Progress work, moving issues between projects, group-level
  96 +milestones, creating new branches from issues, issues board, and time
  97 +tracking.
  98 +
  99 +\subsection{Mezuro}
  100 +
  101 +Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code
  102 +metrics to monitor the internal quality of software written in C, C++,
  103 +Java, Python, Ruby, and PHP.
  104 +
  105 +In general, source code metrics tools also do not present a friendly way
  106 +to interpret its results and, even more, do not follow a standardization
  107 +between them. Mezuro collects and presents these results to the end
  108 +user, specially, by analyzing source code metric history during its life
  109 +cycle.
  110 +
  111 +The Mezuro platform provides a single interface grouping available
  112 +tools, allows selection and composition of metrics in a flexible manner,
  113 +stores the metrics evolution history, presents results in a friendly
  114 +way, as well as, allows users to customize the given interpretation
  115 +accordingly to their own context.
  116 +
  117 +\subsection{System unification}
  118 +
  119 +\begin{figure}[hbt]
  120 + \centering
  121 + \includegraphics[width=\linewidth]{figures/arch.png}
  122 + \caption{SPB architecture overview.}
  123 + \label{fig:architecture}
  124 +\end{figure}
  125 +
  126 +The conceptual architecture of the platform is presented in Figure
  127 +\ref{fig:architecture}. Colab initially handles all user interaction,
  128 +directing requests to one of the integrated applications. It
  129 +post-processes responses from the applications to apply a consistent
  130 +visual appearance, manages authentication, and provides a unified search
  131 +functionality: instead of using the redundant restricted search
  132 +functionality of each application, a search in the SPB portal might
  133 +return content from any of the applications, be it web pages, mailing
  134 +list posts, or source code.
  135 +
  136 +% Falar do devops
  137 +\subsection{Deploy}
  138 +
  139 +The SPB platform was deployed in 7 virtual machines with different functions,
  140 +as we can see in Figure \ref{fig:architecture2}.
  141 +
  142 +\begin{figure*}[hbt]
  143 + \centering
  144 + \includegraphics[width=.8\linewidth]{figures/arch3.png}
  145 + \caption{Instanciation view of the SPB architecture.}
  146 + \label{fig:architecture2}
  147 +\end{figure*}
  148 +
  149 +The \textit{reverseproxy} handles the HTTP requests and redirects them to the
  150 +\textit{integration}, the \textit{email} sends and receives e-mails on behalf
  151 +of the platform and the \textit{monitor} keeps the entire environment tracked.
  152 +These three \textit{VMs} mentioned - \textit{reverseproxy}, \textit{email} and
  153 +\textit{monitor} - are accessible via Internet and the other ones are only
  154 +available in the local network created between them.
  155 +
  156 +\textit{Integration} works as a second layer of proxy beneath
  157 +\textit{reverseproxy}, any request to the platform will be handled by it. The
  158 +Colab service provides interface, authentication and search engine integration
  159 +among all the services. When a request is received to a specific service,
  160 +Colab authenticates the user in the target tool, sends the request and makes a
  161 +visual transformation in the HTML page which is the content of the response.
  162 +Another user-oriented feature is the integrated search engine, when the user
  163 +want to find something in the platform Colab will perform the search in the
  164 +whole databases. Colab itself provides a web interface for GNU Mailman and we
  165 +have two others integrated tools in \textit{integration}: Gitlab and Prezento.
  166 +Gitlab provides web interface for Git repositories and issues tracker, and
  167 +Prezento is a front-end for source code static analysis.
  168 +
  169 +The source code static analysis is performed by \textit{mezuro}. It runs some
  170 +static analysis tools on source code stored in repository and provide this data
  171 +to Prezento. A social network and CMS (Content Manager System) is provided by
  172 +Noosfero in \textit{social}, and the databases of all tools with a cache
  173 +service are in \textit{database}.
opensym2017/content/05-features.tex
@@ -1,73 +0,0 @@ @@ -1,73 +0,0 @@
1 -\section{Features}  
2 -\label{sec:spb}  
3 -  
4 -The new generation of the SPB portal combines features adapted from existing collaborative software  
5 -and features developed by the SPB team. Whenever possible, new functions  
6 -(newly developed or partially modified) were contributed back to the official repositories.  
7 -  
8 -As a result, we have a platform that integrates and harmonizes different features such as  
9 -social networking, mailing list, version control system, content management and  
10 -source code quality monitoring. Our aim was to develop functionalities by reusing  
11 -functionality of collaborative software already integrated to the platform. In  
12 -addition, we tried to keep this integration transparent to end users.  
13 -  
14 -\subsection{Software and Software Community}  
15 -  
16 -In the new SPB portal, each software has a standard set of pages and tools.  
17 -Besides accessing support pages (such as FAQ and installation guide) within the platform, users will be able to download  
18 -different versions of the software and find several mechanisms of software development management.  
19 -  
20 -Focusing on the collaborative development, Mailman was integrated to the platform in order to allow  
21 -the dialogue and communication between developers, users and  
22 -enthusiasts of a determined software. The software has its own mailing list whose privacy  
23 -can be configured/set by administrators.  
24 -  
25 -The software has a social interface area ("software community") where users can find other users, blogs,  
26 -summary of recent activities, or any other relevant community-produced content.  
27 -Users logged to the platform can request membership to different software communities  
28 -and each community member can access and edit restricted content. For this purpose,  
29 -many Noosfero features related to social networking and content management were integrated to the portal.  
30 -  
31 -To assist decision-making, the new SPB has acquired assessment and statistical  
32 -tools. Now, users will be able to rate the software and make comments and all  
33 -information will be avaiable to other users. Moreover, the software has a section  
34 -containing its statistical data, where values are calculated based on data  
35 -provided by users and the system.  
36 -  
37 -The role of the administrator will be present in the software and in its community. The  
38 -administrator is responsible for moderating content, memberships and user  
39 -comments. The administrator is also the one who can make changes in the software homepage  
40 -content.  
41 -  
42 -\subsection{Software Catalog and global search}  
43 -  
44 -The platform also provides a search tool called Software Catalog,  
45 -which allows users to find softwares available in the portal.  
46 -In this catalog, some search options were developed to make the navigation easier,  
47 -such as filters (by type of software or category), sorting and score.  
48 -  
49 -In order to expand the searching scope and cover more types of content, the SPB team  
50 -developed the global search tool. This tool unifies search mechanisms  
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 -software development.  
54 -  
55 -\subsection{Software development tools}  
56 -  
57 -The new SPB also provides  
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 -supplied by the integration of Gitlab into the platform.  
62 -  
63 -Developers can also evaluate the software source code to measure software  
64 -quality. With Mezuro, they can schedule the analysis of the source-code and follow its  
65 -metric results evolution over time. Results of each metric analysis are  
66 -public, which allows greater transparency between the developer and the  
67 -community that uses the software. Thereby, the maintainers can decide if the  
68 -given solution meets the source code quality requirements.  
69 -  
70 -Thus, the SPB became a platform to stimulate the openness of the source code;  
71 -dialogue between users and the development team; and also  
72 -maintenance and evolution of the software, which will provide more  
73 -transparency in government investments.  
opensym2017/content/06-features.tex 0 → 100644
@@ -0,0 +1,73 @@ @@ -0,0 +1,73 @@
  1 +\section{Features}
  2 +\label{sec:spb}
  3 +
  4 +The new generation of the SPB portal combines features adapted from existing collaborative software
  5 +and features developed by the SPB team. Whenever possible, new functions
  6 +(newly developed or partially modified) were contributed back to the official repositories.
  7 +
  8 +As a result, we have a platform that integrates and harmonizes different features such as
  9 +social networking, mailing list, version control system, content management and
  10 +source code quality monitoring. Our aim was to develop functionalities by reusing
  11 +functionality of collaborative software already integrated to the platform. In
  12 +addition, we tried to keep this integration transparent to end users.
  13 +
  14 +\subsection{Software and Software Community}
  15 +
  16 +In the new SPB portal, each software has a standard set of pages and tools.
  17 +Besides accessing support pages (such as FAQ and installation guide) within the platform, users will be able to download
  18 +different versions of the software and find several mechanisms of software development management.
  19 +
  20 +Focusing on the collaborative development, Mailman was integrated to the platform in order to allow
  21 +the dialogue and communication between developers, users and
  22 +enthusiasts of a determined software. The software has its own mailing list whose privacy
  23 +can be configured/set by administrators.
  24 +
  25 +The software has a social interface area ("software community") where users can find other users, blogs,
  26 +summary of recent activities, or any other relevant community-produced content.
  27 +Users logged to the platform can request membership to different software communities
  28 +and each community member can access and edit restricted content. For this purpose,
  29 +many Noosfero features related to social networking and content management were integrated to the portal.
  30 +
  31 +To assist decision-making, the new SPB has acquired assessment and statistical
  32 +tools. Now, users will be able to rate the software and make comments and all
  33 +information will be avaiable to other users. Moreover, the software has a section
  34 +containing its statistical data, where values are calculated based on data
  35 +provided by users and the system.
  36 +
  37 +The role of the administrator will be present in the software and in its community. The
  38 +administrator is responsible for moderating content, memberships and user
  39 +comments. The administrator is also the one who can make changes in the software homepage
  40 +content.
  41 +
  42 +\subsection{Software Catalog and global search}
  43 +
  44 +The platform also provides a search tool called Software Catalog,
  45 +which allows users to find softwares available in the portal.
  46 +In this catalog, some search options were developed to make the navigation easier,
  47 +such as filters (by type of software or category), sorting and score.
  48 +
  49 +In order to expand the searching scope and cover more types of content, the SPB team
  50 +developed the global search tool. This tool unifies search mechanisms
  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 +software development.
  54 +
  55 +\subsection{Software development tools}
  56 +
  57 +The new SPB also provides
  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 +supplied by the integration of Gitlab into the platform.
  62 +
  63 +Developers can also evaluate the software source code to measure software
  64 +quality. With Mezuro, they can schedule the analysis of the source-code and follow its
  65 +metric results evolution over time. Results of each metric analysis are
  66 +public, which allows greater transparency between the developer and the
  67 +community that uses the software. Thereby, the maintainers can decide if the
  68 +given solution meets the source code quality requirements.
  69 +
  70 +Thus, the SPB became a platform to stimulate the openness of the source code;
  71 +dialogue between users and the development team; and also
  72 +maintenance and evolution of the software, which will provide more
  73 +transparency in government investments.
opensym2017/content/06-ux.tex
@@ -1,33 +0,0 @@ @@ -1,33 +0,0 @@
1 -\section{User eXperience evolution}  
2 -  
3 -The integration of collaborative environments goes beyond functional aspects.  
4 -Offering the population an unified experience across these environments has  
5 -been the key to encourage the use of the platform as it reduces the perception  
6 -of complexity. Thus, the SPB Portal information architecture was redesigned  
7 -to provide a transparent navigation and to reach users with different profiles.  
8 -A process of harmonization has been employed on the interaction models of each  
9 -tool to reduce the learning curve. At the same time, a new visual style was  
10 -created to unify the navigation experience and to comply with the guidelines of  
11 -the digital communication identity standard established by the Federal  
12 -Government.  
13 -  
14 -With the increase in system features and the addition of new tools, the  
15 -visual style has steadily evolved to keep the navigation unified. Moreover,  
16 -tools from different backgrounds, which in many cases provide similar  
17 -functionality, prompted the development of an unified interface. Some  
18 -features, such as search and user profile editing were eliminated from  
19 -the individual applications, and implemented centrally to ensure a  
20 -consistent look and feel.  
21 -  
22 -Another challenge was responsive web design. The integrated applications  
23 -had varying degrees of support for responsiveness, and the common  
24 -interface had to adapt for each individual scenario. In particular  
25 -Noosfero did not yet have a responsive design; we engaged in its  
26 -development and contributed towards that goal.  
27 -  
28 -After the initial release of the new SPB Portal in 2014, several  
29 -validations activities were implemented in 2015 and 2016. The aim was to  
30 -provide the most wanted features by casual users (such as public  
31 -servants interested in downloads and documentation) immediately, while  
32 -allowing more experienced users (such as developers) to easily drill down  
33 -to the details.  
opensym2017/content/07-process.tex
@@ -1,174 +0,0 @@ @@ -1,174 +0,0 @@
1 -\section{Development Organization and Process}  
2 -\label{sec:process}  
3 -  
4 -The SPB team was composed of a variety of professionals with different levels  
5 -and skills, where most of them were undergraduate students with major in  
6 -software engineering (from 4th semester or upper). Since the students could  
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  
9 -order to not harm their classes and coursework. Their daily work routine  
10 -in the project included programming and DevOps tasks.  
11 -  
12 -The development of SPB project required a vast experience and background that  
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 -  
22 -In short, our work process was based on open and collaborative software  
23 -development practices. The development process was defined based on the  
24 -adaptation of different agile and FOSS communities practices, highlighting the  
25 -high degree of automation resulting from DevOps practices. Thus, the work  
26 -process was executed in a cadenced and continuous way.  
27 -  
28 -Finally, the last group of actors of this project was composed of employees  
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 -decisions, validations, and scope definitions were made by them. In this way we  
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 -  
36 -\subsection{Team organization}  
37 -  
38 -Approximately 70\% of the development teams were composed of software  
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:  
45 -  
46 -\begin{enumerate}  
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.  
54 -\end{enumerate}  
55 -  
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 members in different places, we used: video  
96 -conferencing with shared terminal tools, IRC, and mailing lists. For example,  
97 -when one student had to work in pair with a senior, normally, they used video  
98 -conferencing tool for talking and shared a terminal session (both typing and  
99 -seeing the screen in real time). For questions and fast discussion, we used  
100 -IRC. For general notification, we used the mailing lists.  
101 -  
102 -For managing the project we used the SPB Portal itself; first to validate it by  
103 -ourselves, and also because it had all the required tools. We basically created  
104 -one wiki page per release in the SPB Gitlab instance with a mapping between  
105 -strategical, tactical, and operational views. In a practical point of view, one  
106 -milestone per user history (feature), and one or more issues for addressing  
107 -each feature. With this approach we achieved two important goals: keeping all  
108 -the management as close possible to to the source code, and tracking every  
109 -feature developed during the project.  
110 -  
111 -\subsection{High-level project management and reporting}  
112 -  
113 -The Brazilian government used to work with software development in a  
114 -very traditional way. They would frequently focus on documents and not  
115 -on what was, in our opinion, what really matters: working software. This  
116 -dissonance caused us a communication noise with MP, because they would  
117 -often question our work style. It was especially hard to convince them  
118 -to accept the idea of open scope and agile development, but after months  
119 -of labor and showing results they stopped resisting.  
120 -  
121 -We defined some level of meeting granularity to avoid generating too  
122 -much overhead to the developers. We had a strategical and validating  
123 -meeting with MP (the former once in a month and the latter each 15th  
124 -day), release plaining with the entire team (one per month), and finally  
125 -a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a  
126 -diagram that represents our meeting organization.  
127 -  
128 -\begin{figure}[hbt]  
129 - \centering  
130 - \includegraphics[width=\linewidth]{figures/meeting_flows.png}  
131 - \caption{Meetings cycles}  
132 - \label{fig:meeting}  
133 -\end{figure}  
134 -  
135 -In the strategical meeting we usually defined the priorities and new  
136 -features with the Brazilian government. Normally the professors, the  
137 -coach of each team, the meta-coach, and some employees of the MP would  
138 -participate in this meeting. We usually discussed what the team already  
139 -produced since our last meeting, and established the new features for  
140 -the next release. Notice that just part of the team would join this  
141 -meeting to avoid generating unnecessary overhead to the developers, but  
142 -all the students interested to participate were allowed to join (many  
143 -students wanted this experience during the project).  
144 -  
145 -After the strategical meeting with Brazilian government agents, we had a  
146 -planning turn with all teams together. In this part, each team worked together  
147 -to convert the MP wishes into smaller parts which were represented by the epics of  
148 -the release. Each coach was responsible for conducting the planning, and after  
149 -that record it on the project wiki (the wiki provided by Gitlab). With this  
150 -epic, each 14th day the team have generated their sprint scheduler (with small  
151 -achievements mapped to issues).  
152 -  
153 -To keep the Brazilian government always updated, we invited them to work  
154 -with us to validate the new features in progress. Normally we had a  
155 -meeting each 15th day. Basically, this was our work flow, we always kept  
156 -everything extremely open to the MP (our way of working, and the one  
157 -often used by open source projects) and to the team.  
158 -  
159 -To keep the track of all of those things we used the SPB itself,  
160 -especially Gitlab. Basically, we had:  
161 -  
162 -\begin{enumerate}  
163 - \item Project repository: We have one organization with many repositories  
164 - \item Milestones: Each milestone was used to register a release  
165 - \item Wiki: Each release has one page on wiki with the compilation of  
166 - strategical meeting  
167 - \item Issues: Each sprint planning generated issues, which we associated to  
168 - the specific milestone and updated the wiki with the issue number related  
169 - with them. Finally each developer assigned the issue to itself.  
170 -\end{enumerate}  
171 -  
172 -Notice that this workflow gave us and the Brazilian government agents  
173 -full traceability from a high level view of each feature to the lowest  
174 -level (code).  
opensym2017/content/07-ux.tex 0 → 100644
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
  1 +\section{User eXperience evolution}
  2 +
  3 +The integration of collaborative environments goes beyond functional aspects.
  4 +Offering the population an unified experience across these environments has
  5 +been the key to encourage the use of the platform as it reduces the perception
  6 +of complexity. Thus, the SPB Portal information architecture was redesigned
  7 +to provide a transparent navigation and to reach users with different profiles.
  8 +A process of harmonization has been employed on the interaction models of each
  9 +tool to reduce the learning curve. At the same time, a new visual style was
  10 +created to unify the navigation experience and to comply with the guidelines of
  11 +the digital communication identity standard established by the Federal
  12 +Government.
  13 +
  14 +With the increase in system features and the addition of new tools, the
  15 +visual style has steadily evolved to keep the navigation unified. Moreover,
  16 +tools from different backgrounds, which in many cases provide similar
  17 +functionality, prompted the development of an unified interface. Some
  18 +features, such as search and user profile editing were eliminated from
  19 +the individual applications, and implemented centrally to ensure a
  20 +consistent look and feel.
  21 +
  22 +Another challenge was responsive web design. The integrated applications
  23 +had varying degrees of support for responsiveness, and the common
  24 +interface had to adapt for each individual scenario. In particular
  25 +Noosfero did not yet have a responsive design; we engaged in its
  26 +development and contributed towards that goal.
  27 +
  28 +After the initial release of the new SPB Portal in 2014, several
  29 +validations activities were implemented in 2015 and 2016. The aim was to
  30 +provide the most wanted features by casual users (such as public
  31 +servants interested in downloads and documentation) immediately, while
  32 +allowing more experienced users (such as developers) to easily drill down
  33 +to the details.
opensym2017/content/08-contributions.tex
@@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
1 -\section{Contributions to the upstream communities}  
2 -\label{sec:contributions}  
3 -  
4 -%- projeto feito do jeito certo com relação ao software livre (contribuições upstream etc)  
5 -%* Colab -> RevProxy  
6 -%* Colab, atualização do python/django  
7 -%* Contribuições para o GitLab (autenticação)  
8 -%* Noosfero, atualização do Rails, preparação para federação, nova interface ...  
9 -%* Coper, empacotamentos (obs), omniauth  
10 -  
11 -  
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.  
31 -  
32 -Gitlab was the tool that we made the least number of modifications. We  
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  
36 -Colab uses this mechanism to manage the authentication.  
37 -  
38 -Noosfero was the tool that contemplated several functional requirements,  
39 -therefore we made a large number of contributions with upstream. We helped to  
40 -migrate to the latest Rails version (web framework used by Noosfero), enable  
41 -the federation implementation (federation with other social networks), and  
42 -decouple the interface and the back-end.  
43 -  
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.  
49 -  
50 -%TODO: Mezuro  
51 -  
opensym2017/content/08-process.tex 0 → 100644
@@ -0,0 +1,174 @@ @@ -0,0 +1,174 @@
  1 +\section{Development Organization and Process}
  2 +\label{sec:process}
  3 +
  4 +The SPB team was composed of a variety of professionals with different levels
  5 +and skills, where most of them were undergraduate students with major in
  6 +software engineering (from 4th semester or upper). Since the students could
  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
  9 +order to not harm their classes and coursework. Their daily work routine
  10 +in the project included programming and DevOps tasks.
  11 +
  12 +The development of SPB project required a vast experience and background that
  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 +
  22 +In short, our work process was based on open and collaborative software
  23 +development practices. The development process was defined based on the
  24 +adaptation of different agile and FOSS communities practices, highlighting the
  25 +high degree of automation resulting from DevOps practices. Thus, the work
  26 +process was executed in a cadenced and continuous way.
  27 +
  28 +Finally, the last group of actors of this project was composed of employees
  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 +decisions, validations, and scope definitions were made by them. In this way we
  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 +
  36 +\subsection{Team organization}
  37 +
  38 +Approximately 70\% of the development teams were composed of software
  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:
  45 +
  46 +\begin{enumerate}
  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.
  54 +\end{enumerate}
  55 +
  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 members in different places, we used: video
  96 +conferencing with shared terminal tools, IRC, and mailing lists. For example,
  97 +when one student had to work in pair with a senior, normally, they used video
  98 +conferencing tool for talking and shared a terminal session (both typing and
  99 +seeing the screen in real time). For questions and fast discussion, we used
  100 +IRC. For general notification, we used the mailing lists.
  101 +
  102 +For managing the project we used the SPB Portal itself; first to validate it by
  103 +ourselves, and also because it had all the required tools. We basically created
  104 +one wiki page per release in the SPB Gitlab instance with a mapping between
  105 +strategical, tactical, and operational views. In a practical point of view, one
  106 +milestone per user history (feature), and one or more issues for addressing
  107 +each feature. With this approach we achieved two important goals: keeping all
  108 +the management as close possible to to the source code, and tracking every
  109 +feature developed during the project.
  110 +
  111 +\subsection{High-level project management and reporting}
  112 +
  113 +The Brazilian government used to work with software development in a
  114 +very traditional way. They would frequently focus on documents and not
  115 +on what was, in our opinion, what really matters: working software. This
  116 +dissonance caused us a communication noise with MP, because they would
  117 +often question our work style. It was especially hard to convince them
  118 +to accept the idea of open scope and agile development, but after months
  119 +of labor and showing results they stopped resisting.
  120 +
  121 +We defined some level of meeting granularity to avoid generating too
  122 +much overhead to the developers. We had a strategical and validating
  123 +meeting with MP (the former once in a month and the latter each 15th
  124 +day), release plaining with the entire team (one per month), and finally
  125 +a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a
  126 +diagram that represents our meeting organization.
  127 +
  128 +\begin{figure}[hbt]
  129 + \centering
  130 + \includegraphics[width=\linewidth]{figures/meeting_flows.png}
  131 + \caption{Meetings cycles}
  132 + \label{fig:meeting}
  133 +\end{figure}
  134 +
  135 +In the strategical meeting we usually defined the priorities and new
  136 +features with the Brazilian government. Normally the professors, the
  137 +coach of each team, the meta-coach, and some employees of the MP would
  138 +participate in this meeting. We usually discussed what the team already
  139 +produced since our last meeting, and established the new features for
  140 +the next release. Notice that just part of the team would join this
  141 +meeting to avoid generating unnecessary overhead to the developers, but
  142 +all the students interested to participate were allowed to join (many
  143 +students wanted this experience during the project).
  144 +
  145 +After the strategical meeting with Brazilian government agents, we had a
  146 +planning turn with all teams together. In this part, each team worked together
  147 +to convert the MP wishes into smaller parts which were represented by the epics of
  148 +the release. Each coach was responsible for conducting the planning, and after
  149 +that record it on the project wiki (the wiki provided by Gitlab). With this
  150 +epic, each 14th day the team have generated their sprint scheduler (with small
  151 +achievements mapped to issues).
  152 +
  153 +To keep the Brazilian government always updated, we invited them to work
  154 +with us to validate the new features in progress. Normally we had a
  155 +meeting each 15th day. Basically, this was our work flow, we always kept
  156 +everything extremely open to the MP (our way of working, and the one
  157 +often used by open source projects) and to the team.
  158 +
  159 +To keep the track of all of those things we used the SPB itself,
  160 +especially Gitlab. Basically, we had:
  161 +
  162 +\begin{enumerate}
  163 + \item Project repository: We have one organization with many repositories
  164 + \item Milestones: Each milestone was used to register a release
  165 + \item Wiki: Each release has one page on wiki with the compilation of
  166 + strategical meeting
  167 + \item Issues: Each sprint planning generated issues, which we associated to
  168 + the specific milestone and updated the wiki with the issue number related
  169 + with them. Finally each developer assigned the issue to itself.
  170 +\end{enumerate}
  171 +
  172 +Notice that this workflow gave us and the Brazilian government agents
  173 +full traceability from a high level view of each feature to the lowest
  174 +level (code).
opensym2017/content/09-contributions.tex 0 → 100644
@@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
  1 +\section{Contributions to the upstream communities}
  2 +\label{sec:contributions}
  3 +
  4 +%- projeto feito do jeito certo com relação ao software livre (contribuições upstream etc)
  5 +%* Colab -> RevProxy
  6 +%* Colab, atualização do python/django
  7 +%* Contribuições para o GitLab (autenticação)
  8 +%* Noosfero, atualização do Rails, preparação para federação, nova interface ...
  9 +%* Coper, empacotamentos (obs), omniauth
  10 +
  11 +
  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.
  31 +
  32 +Gitlab was the tool that we made the least number of modifications. We
  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
  36 +Colab uses this mechanism to manage the authentication.
  37 +
  38 +Noosfero was the tool that contemplated several functional requirements,
  39 +therefore we made a large number of contributions with upstream. We helped to
  40 +migrate to the latest Rails version (web framework used by Noosfero), enable
  41 +the federation implementation (federation with other social networks), and
  42 +decouple the interface and the back-end.
  43 +
  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.
  49 +
  50 +%TODO: Mezuro
  51 +
opensym2017/content/09-lessons.tex
@@ -1,161 +0,0 @@ @@ -1,161 +0,0 @@
1 -\section{Lessons Learned}  
2 -\label{sec:lessons}  
3 -  
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 -  
122 -% * Gestão dos recursos: Fizemos mais por menos (2.6M de 3.2M) --- sem os dados  
123 -%% (escopo, custo, tempo e qualidade) bem discutidos é difícil sustentar essa  
124 -%% afirmação, embora eu e Paulo consigamos perceber isso.  
125 -  
126 -%===========  
127 -% Conclusion  
128 -%===========  
129 -  
130 -\textbf{Final remarks.}  
131 -The portal is available at \url{softwarepublico.gov.br}. All  
132 -documentation, including detailed architecture and operation manuals are  
133 -also available\footnote{\url{https://softwarepublico.gov.br/doc/}  
134 -(in Portuguese only at the moment)}).  
135 -%  
136 -All the integrated tools are FOSS and our contributions were published  
137 -in open repositories, available on the SPB Portal itself. We also  
138 -contributed these features back to the respective communities: that  
139 -benefits those communities, as well as us since we can share future  
140 -development and maintenance effort with other organizations that  
141 -participate in their projects.  
142 -  
143 -  
144 -%* utilização do projeto para formação de recursos humanos (alunos)  
145 -  
146 -%* dados da verificação dos repositório para a análise da qualidade dos código via Mezuro e CodeClimate  
147 -  
148 -%* o que achamos que irá acontecer com o SPB no futuro breve (acabar)  
149 -  
150 -%* 69 projetos marcados como SPB, de 81 no total na plataforma.  
151 -  
152 -%* 47\% é desenvolvido em PHP.  
153 -  
154 -% 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).  
155 -  
156 -% 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}.  
157 -  
158 -% 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.  
159 -  
160 -%* Debater economia de recursos em orgão públicos  
161 -  
opensym2017/content/10-conclusion.tex
@@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
1 -\section{Conclusion}  
2 -\label{sec:conclusion}  
3 -  
4 -In this paper we present and discuss issues experienced during a government-  
5 -funded project, in partnership with University of Brasilia and University of  
6 -São Paulo, to evolve the Brazilian Public Software portal.  
7 -  
8 -The contributions of this paper are twofold. First, we present how was  
9 -developed an unprecedent platform, delivered to Brazilian government. This  
10 -platform - developed by an heterogenous team of professors, master and  
11 -undergraduate students, IT professionals and governmental managers - provides  
12 -several modern features from the integration of more than 10 FLOSS systems.  
13 -  
14 -Second, the 30 months project which developed this platform, results in an  
15 -important case that it is possible to mitigate issues seen as conflicting to IT  
16 -development environment and between industry and academy. We shown that, as  
17 -long as the institution can provide a healthy and challenging environment to  
18 -its students, its is possible to conciliate studies and professional training  
19 -in universities. After the end of the project, some students successfully  
20 -embraced opportunities in public and private sectos, within national borders  
21 -and abroad. Some others went further and started their own companies.  
22 -  
23 -We also shown that, with some adaptations/"translation processes", was possible  
24 -to conciliate agile methodologies and FOSS practices to develop software to  
25 -governmental organizations with functional hierarchical structures that use  
26 -traditional development paradigm.  
opensym2017/content/10-lessons.tex 0 → 100644
@@ -0,0 +1,161 @@ @@ -0,0 +1,161 @@
  1 +\section{Lessons Learned}
  2 +\label{sec:lessons}
  3 +
  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 +
  122 +% * Gestão dos recursos: Fizemos mais por menos (2.6M de 3.2M) --- sem os dados
  123 +%% (escopo, custo, tempo e qualidade) bem discutidos é difícil sustentar essa
  124 +%% afirmação, embora eu e Paulo consigamos perceber isso.
  125 +
  126 +%===========
  127 +% Conclusion
  128 +%===========
  129 +
  130 +\textbf{Final remarks.}
  131 +The portal is available at \url{softwarepublico.gov.br}. All
  132 +documentation, including detailed architecture and operation manuals are
  133 +also available\footnote{\url{https://softwarepublico.gov.br/doc/}
  134 +(in Portuguese only at the moment)}).
  135 +%
  136 +All the integrated tools are FOSS and our contributions were published
  137 +in open repositories, available on the SPB Portal itself. We also
  138 +contributed these features back to the respective communities: that
  139 +benefits those communities, as well as us since we can share future
  140 +development and maintenance effort with other organizations that
  141 +participate in their projects.
  142 +
  143 +
  144 +%* utilização do projeto para formação de recursos humanos (alunos)
  145 +
  146 +%* dados da verificação dos repositório para a análise da qualidade dos código via Mezuro e CodeClimate
  147 +
  148 +%* o que achamos que irá acontecer com o SPB no futuro breve (acabar)
  149 +
  150 +%* 69 projetos marcados como SPB, de 81 no total na plataforma.
  151 +
  152 +%* 47\% é desenvolvido em PHP.
  153 +
  154 +% 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).
  155 +
  156 +% 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}.
  157 +
  158 +% 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.
  159 +
  160 +%* Debater economia de recursos em orgão públicos
  161 +
opensym2017/content/11-conclusion.tex 0 → 100644
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
  1 +\section{Conclusion}
  2 +\label{sec:conclusion}
  3 +
  4 +In this paper we present and discuss issues experienced during a government-
  5 +funded project, in partnership with University of Brasilia and University of
  6 +São Paulo, to evolve the Brazilian Public Software portal.
  7 +
  8 +The contributions of this paper are twofold. First, we present how was
  9 +developed an unprecedent platform, delivered to Brazilian government. This
  10 +platform - developed by an heterogenous team of professors, master and
  11 +undergraduate students, IT professionals and governmental managers - provides
  12 +several modern features from the integration of more than 10 FLOSS systems.
  13 +
  14 +Second, the 30 months project which developed this platform, results in an
  15 +important case that it is possible to mitigate issues seen as conflicting to IT
  16 +development environment and between industry and academy. We shown that, as
  17 +long as the institution can provide a healthy and challenging environment to
  18 +its students, its is possible to conciliate studies and professional training
  19 +in universities. After the end of the project, some students successfully
  20 +embraced opportunities in public and private sectos, within national borders
  21 +and abroad. Some others went further and started their own companies.
  22 +
  23 +We also shown that, with some adaptations/"translation processes", was possible
  24 +to conciliate agile methodologies and FOSS practices to develop software to
  25 +governmental organizations with functional hierarchical structures that use
  26 +traditional development paradigm.
opensym2017/spb.tex
@@ -152,14 +152,15 @@ @@ -152,14 +152,15 @@
152 %------------------------------------------------------------------------------ 152 %------------------------------------------------------------------------------
153 \input{content/01-introduction} 153 \input{content/01-introduction}
154 \input{content/02-spb} 154 \input{content/02-spb}
155 -\input{content/03-requirements}  
156 -\input{content/04-architecture}  
157 -\input{content/05-features}  
158 -\input{content/06-ux}  
159 -\input{content/07-process}  
160 -\input{content/08-contributions}  
161 -\input{content/09-lessons}  
162 -\input{content/10-conclusion} 155 +\input{content/03-relatedworks}
  156 +\input{content/04-requirements}
  157 +\input{content/05-architecture}
  158 +\input{content/06-features}
  159 +\input{content/07-ux}
  160 +\input{content/08-process}
  161 +\input{content/09-contributions}
  162 +\input{content/10-lessons}
  163 +\input{content/11-conclusion}
163 164
164 %------------------------------------------------------------------------------ 165 %------------------------------------------------------------------------------
165 \bibliographystyle{SIGCHI-Reference-Format} 166 \bibliographystyle{SIGCHI-Reference-Format}