Commit 2d3361ec64bd4acfad2ac49af34e2f765d5321d3
1 parent
b14ce14d
Exists in
master
and in
3 other branches
Re-organize sections Requirements and Related Works
Showing
18 changed files
with
840 additions
and
837 deletions
Show diff stats
@@ -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}. |
@@ -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. |
@@ -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. |
@@ -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). |
@@ -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 | - |
@@ -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). |
@@ -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. |
@@ -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 | + |
@@ -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} |