Commit 6bf751f5cd212bd68b21232ab1a54dbde30ed68d

Authored by Paulo Meireles
1 parent ae697ff7

re-organizing sections

opensym2017/content/04-architecture.tex 0 → 100644
... ... @@ -0,0 +1,159 @@
  1 +\section{Architecture}
  2 +\label{sec:architecture}
  3 +
  4 +Based on the great list of functional requirements desired by Brazilian Federal
  5 +Government we decided to select some FOSS systems that already contemplate some
  6 +of them and improve these systems. And bringing the idea of community, it is
  7 +undoable build a platform to be used by communities, which is a complex
  8 +scenario, using just one tool.
  9 +
  10 +At the point of view of the architecture, two main requirements was brought by
  11 +the Brazilian Federal Government for the new platform:
  12 +
  13 +\begin{enumerate}
  14 + \item \textit{Integrate existing FOSS systems}, with minimal differences from
  15 + their original versions;
  16 + \item \textit{Provide a consistent user interface} across the different
  17 + systems, as well as centralized authentication.
  18 +\end{enumerate}
  19 +
  20 +Adopting existing FOSS systems by the government could bring the benefit of
  21 +improvements done by the upstream communities, and the maintenance effort. On
  22 +the other hand, integrating different tools with distinct intent, it is not an
  23 +easy task and it was important to have a consistent user interface which
  24 +justifies the last requirement.
  25 +
  26 +For the first requirement, we identified four main systems that required
  27 +specialized teams for work in the integration process. The teams learned how to
  28 +develop for their assigned systems and contributed to the original
  29 +communities, so that the version we used were not significantly different from
  30 +the original. Unfortunately, the deadlines at the end of the project forced us
  31 +to use our own version before the features were fully reviewed and integrated
  32 +into the upstream of the project.
  33 +
  34 +At the end of the project, SPB portal was composed of more than ten systems
  35 +among them we can highlight: Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix,
  36 +Munin, and so forth. The following sections explained a little bit of Colab,
  37 +Noosfero, Mezuro and Gitlab (the main tools which we contributed). Later, we
  38 +described how we integrated those tools and conclude with the deployment.
  39 +
  40 +\subsection{Colab}
  41 +
  42 +Colab integrates web applications as its main goal, the user of this composed
  43 +system should not notice the change between the integrated applications. Colab
  44 +was designed to use one plugin for each system under its domain, this is
  45 +guaranteed by four levels of integration:
  46 +
  47 +\begin{itemize}
  48 + \item Authentication
  49 + \item Visual
  50 + \item Events
  51 + \item Data and search engine
  52 +\end{itemize}
  53 +
  54 +The aforementioned integrations levels were possible, because Colab works as a
  55 +reverse proxy, therefore all external requests pass through it.
  56 +
  57 +Single Sign-On (SSO) is used to login users throughout all integrated
  58 +applications. REMOTE\_USER HTTP header is sent to the applications and we
  59 +expect that they know how to handle it, since this is a common authentication
  60 +mechanism. The integrated applications should be on a local network to avoid
  61 +security issues. With this the user will be able to navigate through the
  62 +platform applications and will not be asked for authentication credentials.
  63 +
  64 +As Colab is a reverse proxy, it makes some HTML transformations in the HTTP
  65 +response of integrated applications to provide a unified interface. Allows one
  66 +to define some default templates to be used by all applications and overwrite
  67 +when needed in its plugin. This approach allowed us to reuse some HTML pages
  68 +which facilitates maintenance.
  69 +
  70 +A publish-subscribe implementation was used to handle events in the platform.
  71 +Thus, if some application want to trigger some action in case that other
  72 +application do something is possible. A registration of the desired events and
  73 +implementation of the handlers must be done in the plugin of each application.
  74 +This bring us many options to innovate in these integrations.
  75 +
  76 +A integrated search engine is provided by Colab. Each plugin specify which data
  77 +will be indexed and will became available for the users, just need an simple
  78 +implementation of how should perform the collection of data.
  79 +
  80 +Initially, Colab had support for a small set of applications (Trac, GNU
  81 +Mailman, Apache Lucene) and all of them was hard-coded; our team evolved Colab
  82 +so that it can now receive plugins to add support for new applications with
  83 +minimal changes to its existing core. We developed plugins to be used in the
  84 +SPB platform: Noosfero, GitLab, and Mezuro.
  85 +
  86 +\subsection{Noosfero}
  87 +
  88 +Noosfero\footnote{\url{http://noosfero.org/}} is a software for building
  89 +social and collaboration networks. Besides the classical social
  90 +networking features, it also provides publication features such as blogs
  91 +and a general-purpose CMS (Content Management System). Most of the user
  92 +interactions with SPB is through Noosfero: user registration, project
  93 +home pages and documentation, and contact forms.
  94 +
  95 +\subsection{Gitlab and Mezuro}
  96 +
  97 +GitLab\footnote{\url{http://gitlab.com/}} is a web-based Git repository
  98 +manager with wiki pages and issue tracking features.
  99 +Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code
  100 +metric to monitor the internal quality of softwares written in C, C++,
  101 +Java, Python, Ruby, and PHP. GNU Mailman is used for mailing lists.
  102 +
  103 +\subsection{System unification}
  104 +
  105 +\begin{figure}[hbt]
  106 + \centering
  107 + \includegraphics[width=\linewidth]{figures/arch.png}
  108 + \caption{SPB architecture overview.}
  109 + \label{fig:architecture}
  110 +\end{figure}
  111 +
  112 +The conceptual architecture of the platform is presented in Figure
  113 +\ref{fig:architecture}. Colab initially handles all user interaction,
  114 +directing requests to one of the integrated applications. It
  115 +post-processes responses from the applications to apply a consistent
  116 +visual appearance, manages authentication, and provides a unified search
  117 +functionality: instead of using the redundant restricted search
  118 +functionality of each application, a search in the SPB portal might
  119 +return content from any of the applications, be it web pages, mailing
  120 +list posts, or source code.
  121 +
  122 +% Falar do devops
  123 +\subsection{Deploy}
  124 +
  125 +The SPB platform was deployed in 7 virtual machines with different functions,
  126 +as we can see in Figure \ref{fig:architecture2}.
  127 +
  128 +\begin{figure*}[hbt]
  129 + \centering
  130 + \includegraphics[width=.8\linewidth]{figures/arch2.png}
  131 + \caption{Instanciation view of the SPB architecture.}
  132 + \label{fig:architecture2}
  133 +\end{figure*}
  134 +
  135 +The \textit{reverseproxy} handles the HTTP requests and redirects them to the
  136 +\textit{integration}, the \textit{email} sends and receives e-mails on behalf
  137 +of the platform and the \textit{monitor} keeps the entire environment tracked.
  138 +These three \textit{VMs} mentioned - \textit{reverseproxy}, \textit{email} and
  139 +\textit{monitor} - are accessible via Internet and the other ones are only
  140 +available in the local network created between them.
  141 +
  142 +\textit{Integration} works as a second layer of proxy beneath
  143 +\textit{reverseproxy}, any request to the platform will be handled by it. The
  144 +Colab service provides interface, authentication and search engine integration
  145 +among all the services. When a request is received to a specific service,
  146 +Colab authenticates the user in the target tool, sends the request and makes a
  147 +visual transformation in the HTML page which is the content of the response.
  148 +Another user-oriented feature is the integrated search engine, when the user
  149 +want to find something in the platform Colab will perform the search in the
  150 +whole databases. Colab itself provides a web interface for GNU Mailman and we
  151 +have two others integrated tools in \textit{integration}: Gitlab and Prezento.
  152 +Gitlab provides web interface for Git repositories and issues tracker, and
  153 +Prezento is a front-end for source code static analysis.
  154 +
  155 +The source code static analysis is performed by \textit{mezuro}. It runs some
  156 +static analysis tools on source code stored in repository and provide this data
  157 +to Prezento. A social network and CMS (Content Manager System) is provided by
  158 +Noosfero in \textit{social}, and the databases of all tools with a cache
  159 +service are in \textit{database}.
... ...
opensym2017/content/04-process.tex
... ... @@ -1,144 +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 and skills, where most of them were undergraduate students with major in software engineering (from 4th semester or upper).
5   -Since the students could not dedicate many hours per week to the project, they always had the flexibility to negotiate their work schedule during the semester in order not to cause any damage to their grades. Their daily work routine in the project included programming and devops tasks.
6   -
7   -The development of SPB project required a vast experience and background that usually undergraduate students do not have yet. For this reason, some senior developers have joined to the project to help with hard issues and to transfer knowledge to the students. Their main task was to provide solutions for complex problems, in other words, they worked as a developer. As these professionals are very skillful and the project could not fund a full time work for them, some of them worked partially on the project. In addition, they lived in a different states spread around Brazil which led much of the communication to be made via Internet.
8   -
9   -Finally, the last group of actors of this project was composed of employees
10   -formally working for the Brazilian Government, in the Ministery of Planning,
11   -development and Management (MPOG is the Brazilian acronyms). All the project
12   -decisions, validations, and scope definitions were made by them. As can be
13   -seen, the project had many kinds of profiles that had to be organized and
14   -synchronized.
15   -
16   -\subsection{Teams organizations}
17   -
18   -More than X\% of the teams was composed of undergraduate students and they
19   -worked physically in the same laboratory in the opposite of the senior. Each
20   -student had their own scheduler based on their class, it made complicated to
21   -implement pair programming. Also, they had a different area of interests. To
22   -cope with those diversity, we had two basic rules which guided the project
23   -organization:
24   -
25   -\begin{enumerate}
26   - \item Classes have to be the top priority for undergraduate students;
27   - \item Always work in pair (locally or remotely).
28   -\end{enumerate}
29   -
30   -With the aforementioned rules we divided all the project into four different
31   -teams: Colab, Noosfero, Design, and DevOps. Each team had one coach responsible
32   -for reducing the communication problem with the other teams and help the
33   -members to organize itself in the best way for everyone (always respecting the
34   -work time). The coach, was a normal student working in some of the teams with
35   -the extra duty of register the current tasks developed in the sprint and with
36   -the responsibility to talk with other teams. One important thing to notice is
37   -the mutability of the team and the coach, during the project many students
38   -changed between the teams to try different areas.
39   -
40   -One characteristic of the teams was the presence of (at least) one senior per
41   -team. This was essential, because hard decisions and complex problems were
42   -usually addressed to them, this relieved the coach duty to take a complicated
43   -technical decisions and encouraged students to be a coach. Lastly, the senior
44   -had to respect a rule number two and work with students, this was important to
45   -gave the undergraduate the opportunity to interact with a savvy professional in
46   -his area and keeping the knowledge flow in the project.
47   -
48   -Finally, we had to add two last elements of the team organization, that was
49   -essential for the project harmony: the meta-coach and professors. The former
50   -was a software engineer recently graduated and which wanted to keep working on
51   -the project, the latter were professors that orchestrated all the interactions
52   -between all members of the project. The meta-coach usually worked in one
53   -specific team and had the extra task of knowing the current status of all
54   -teams. Professors and meta-coaches worked together to reduce the communication
55   -problem between all the teams. Lastly, all the bureaucracy tasks was
56   -centralized in the professors.
57   -
58   -\subsection{Meetings}
59   -
60   -Brazilian government used to work with software development in a very
61   -traditional way, frequently they claim on documents and does not focus on what
62   -really matter (running software). This way of thinking caused to us a
63   -communication noise with MPOG, because they constantly tried to leverage on our
64   -work style. It was especially hard to convince them to accept the idea of open
65   -scope and agile development, but after months of labor and showing results they
66   -stopped resisting.
67   -
68   -We defined some level of meeting granularity to avoid to generate overheads to
69   -the developers. We had a strategical and validating meeting with MPOG (the
70   -former once in a month and the latter each 15th day), release plaining with the
71   -entire team (one per month), and finally a sprint planning (one each 15th day).
72   -Figure \ref{fig:meeting} is a diagram that represents our meeting organization.
73   -
74   -\begin{figure}[hbt]
75   - \centering
76   - \includegraphics[width=\linewidth]{figures/meeting_flows.png}
77   - \caption{Meetings cycles}
78   - \label{fig:meeting}
79   -\end{figure}
80   -
81   -In the strategical meeting we usually defined the priorities and new features
82   -with MPOG (we always had to negotiate next steps with them). Normally the
83   -professors, the coach of each team, the meta-coach, and some employees of MPOG
84   -join in this meeting. We usually discussed what the team already produced since
85   -our last meeting, and we establish the new features for the next release.
86   -Notice that just part of the team join in this meeting to avoid generating
87   -unnecessary overhead to the developers, but all the students interested to
88   -participate was allowed to join (many students wanted this experience during
89   -the project).
90   -
91   -After the strategical meeting with MPOG, we had a planning turn with all teams
92   -together. In this part, each team worked together to convert the MPOG wishes
93   -into small parts which was represented by the epics of the release. Each coach
94   -was responsible for conducting the planning, and after that register it on the
95   -project wiki (the wiki provided by Gitlab). With this epic, each 14th day the
96   -team have generated their sprint scheduler (with small achievements mapped in
97   -issues).
98   -
99   -To keep MPOG always updated, we invited them to work with us to validate the
100   -new features in progress. Normally we had a meeting each 15th day. Basically,
101   -this was our work flow, we always kept everything extremely open to the MPOG
102   -(our way of work and open source projects) and to the team.
103   -
104   -To keep the track of all of those things we used the SPB, especially the
105   -Gitlab. Basically, we had:
106   -
107   -\begin{enumerate}
108   - \item Project repository: We have one organization with many repositories
109   - \item Milestones: Each milestone is used to register a release
110   - \item Wiki: Each release has one page on wiki with the compilation of
111   - strategical meeting
112   - \item Issues: Each sprint planning generated issues, which we associated to
113   - the specific milestone and updated the wiki with the issue number related
114   - with them. Finally each developer assigned the issue to itself.
115   -\end{enumerate}
116   -
117   -Notice that this workflow gave to us and to the MPOG a full traceability from
118   -high view of the feature to the low view (code). This provided a way to MPOG
119   -validated all worked done and proof the concept that work with open source
120   -project can give a proper view to them check.
121   -
122   -\subsection{Tools for communication and management}
123   -
124   -Our team had many people worked together, and most of the seniors worked in a
125   -different city remotely. Also, we tried to keep our work completely clear to
126   -the Brazilian government and citizens interested in follow the project. To
127   -handle those cases, we used a set of tools to communication and other to manage
128   -the project.
129   -
130   -For communication between member in different places, we used: google-talk with
131   -tmate, IRC, and mailing-list. When one student had to work in pair with a
132   -senior, normally, they used google-hangout for communication and they shared a
133   -session with tmate which allow them to share the same terminal. For questions
134   -and fast discussion, we used IRC. For general notification, we used the
135   -mailing-list.
136   -
137   -For managing the project we used the SPB Portal to validate it by ourselves and
138   -because it had all the required tools. We basically create one wiki page per
139   -release in Gitlab, one milestone per sprint, and one or more issues for address
140   -one user history. With this approach we achieve two important things: keep all
141   -the management close to the source code and tracked every feature developed by
142   -the project.
143   -
144   -% Ainda falta adicionar a parte da visita dos seniors e o turno sagrado
opensym2017/content/05-architecture.tex
... ... @@ -1,159 +0,0 @@
1   -\section{Architecture}
2   -\label{sec:architecture}
3   -
4   -Based on the great list of functional requirements desired by Brazilian Federal
5   -Government we decided to select some FOSS systems that already contemplate some
6   -of them and improve these systems. And bringing the idea of community, it is
7   -undoable build a platform to be used by communities, which is a complex
8   -scenario, using just one tool.
9   -
10   -At the point of view of the architecture, two main requirements was brought by
11   -the Brazilian Federal Government for the new platform:
12   -
13   -\begin{enumerate}
14   - \item \textit{Integrate existing FOSS systems}, with minimal differences from
15   - their original versions;
16   - \item \textit{Provide a consistent user interface} across the different
17   - systems, as well as centralized authentication.
18   -\end{enumerate}
19   -
20   -Adopting existing FOSS systems by the government could bring the benefit of
21   -improvements done by the upstream communities, and the maintenance effort. On
22   -the other hand, integrating different tools with distinct intent, it is not an
23   -easy task and it was important to have a consistent user interface which
24   -justifies the last requirement.
25   -
26   -For the first requirement, we identified four main systems that required
27   -specialized teams for work in the integration process. The teams learned how to
28   -develop for their assigned systems and contributed to the original
29   -communities, so that the version we used were not significantly different from
30   -the original. Unfortunately, the deadlines at the end of the project forced us
31   -to use our own version before the features were fully reviewed and integrated
32   -into the upstream of the project.
33   -
34   -At the end of the project, SPB portal was composed of more than ten systems
35   -among them we can highlight: Colab, Noosfero, Mezuro, Gitlab, Mailman, Postfix,
36   -Munin, and so forth. The following sections explained a little bit of Colab,
37   -Noosfero, Mezuro and Gitlab (the main tools which we contributed). Later, we
38   -described how we integrated those tools and conclude with the deployment.
39   -
40   -\subsection{Colab}
41   -
42   -Colab integrates web applications as its main goal, the user of this composed
43   -system should not notice the change between the integrated applications. Colab
44   -was designed to use one plugin for each system under its domain, this is
45   -guaranteed by four levels of integration:
46   -
47   -\begin{itemize}
48   - \item Authentication
49   - \item Visual
50   - \item Events
51   - \item Data and search engine
52   -\end{itemize}
53   -
54   -The aforementioned integrations levels were possible, because Colab works as a
55   -reverse proxy, therefore all external requests pass through it.
56   -
57   -Single Sign-On (SSO) is used to login users throughout all integrated
58   -applications. REMOTE\_USER HTTP header is sent to the applications and we
59   -expect that they know how to handle it, since this is a common authentication
60   -mechanism. The integrated applications should be on a local network to avoid
61   -security issues. With this the user will be able to navigate through the
62   -platform applications and will not be asked for authentication credentials.
63   -
64   -As Colab is a reverse proxy, it makes some HTML transformations in the HTTP
65   -response of integrated applications to provide a unified interface. Allows one
66   -to define some default templates to be used by all applications and overwrite
67   -when needed in its plugin. This approach allowed us to reuse some HTML pages
68   -which facilitates maintenance.
69   -
70   -A publish-subscribe implementation was used to handle events in the platform.
71   -Thus, if some application want to trigger some action in case that other
72   -application do something is possible. A registration of the desired events and
73   -implementation of the handlers must be done in the plugin of each application.
74   -This bring us many options to innovate in these integrations.
75   -
76   -A integrated search engine is provided by Colab. Each plugin specify which data
77   -will be indexed and will became available for the users, just need an simple
78   -implementation of how should perform the collection of data.
79   -
80   -Initially, Colab had support for a small set of applications (Trac, GNU
81   -Mailman, Apache Lucene) and all of them was hard-coded; our team evolved Colab
82   -so that it can now receive plugins to add support for new applications with
83   -minimal changes to its existing core. We developed plugins to be used in the
84   -SPB platform: Noosfero, GitLab, and Mezuro.
85   -
86   -\subsection{Noosfero}
87   -
88   -Noosfero\footnote{\url{http://noosfero.org/}} is a software for building
89   -social and collaboration networks. Besides the classical social
90   -networking features, it also provides publication features such as blogs
91   -and a general-purpose CMS (Content Management System). Most of the user
92   -interactions with SPB is through Noosfero: user registration, project
93   -home pages and documentation, and contact forms.
94   -
95   -\subsection{Gitlab and Mezuro}
96   -
97   -GitLab\footnote{\url{http://gitlab.com/}} is a web-based Git repository
98   -manager with wiki pages and issue tracking features.
99   -Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code
100   -metric to monitor the internal quality of softwares written in C, C++,
101   -Java, Python, Ruby, and PHP. GNU Mailman is used for mailing lists.
102   -
103   -\subsection{System unification}
104   -
105   -\begin{figure}[hbt]
106   - \centering
107   - \includegraphics[width=\linewidth]{figures/arch.png}
108   - \caption{SPB architecture overview.}
109   - \label{fig:architecture}
110   -\end{figure}
111   -
112   -The conceptual architecture of the platform is presented in Figure
113   -\ref{fig:architecture}. Colab initially handles all user interaction,
114   -directing requests to one of the integrated applications. It
115   -post-processes responses from the applications to apply a consistent
116   -visual appearance, manages authentication, and provides a unified search
117   -functionality: instead of using the redundant restricted search
118   -functionality of each application, a search in the SPB portal might
119   -return content from any of the applications, be it web pages, mailing
120   -list posts, or source code.
121   -
122   -% Falar do devops
123   -\subsection{Deploy}
124   -
125   -The SPB platform was deployed in 7 virtual machines with different functions,
126   -as we can see in Figure \ref{fig:architecture2}.
127   -
128   -\begin{figure*}[hbt]
129   - \centering
130   - \includegraphics[width=.8\linewidth]{figures/arch2.png}
131   - \caption{Instanciation view of the SPB architecture.}
132   - \label{fig:architecture2}
133   -\end{figure*}
134   -
135   -The \textit{reverseproxy} handles the HTTP requests and redirects them to the
136   -\textit{integration}, the \textit{email} sends and receives e-mails on behalf
137   -of the platform and the \textit{monitor} keeps the entire environment tracked.
138   -These three \textit{VMs} mentioned - \textit{reverseproxy}, \textit{email} and
139   -\textit{monitor} - are accessible via Internet and the other ones are only
140   -available in the local network created between them.
141   -
142   -\textit{Integration} works as a second layer of proxy beneath
143   -\textit{reverseproxy}, any request to the platform will be handled by it. The
144   -Colab service provides interface, authentication and search engine integration
145   -among all the services. When a request is received to a specific service,
146   -Colab authenticates the user in the target tool, sends the request and makes a
147   -visual transformation in the HTML page which is the content of the response.
148   -Another user-oriented feature is the integrated search engine, when the user
149   -want to find something in the platform Colab will perform the search in the
150   -whole databases. Colab itself provides a web interface for GNU Mailman and we
151   -have two others integrated tools in \textit{integration}: Gitlab and Prezento.
152   -Gitlab provides web interface for Git repositories and issues tracker, and
153   -Prezento is a front-end for source code static analysis.
154   -
155   -The source code static analysis is performed by \textit{mezuro}. It runs some
156   -static analysis tools on source code stored in repository and provide this data
157   -to Prezento. A social network and CMS (Content Manager System) is provided by
158   -Noosfero in \textit{social}, and the databases of all tools with a cache
159   -service are in \textit{database}.
opensym2017/content/05-features.tex 0 → 100644
... ... @@ -0,0 +1,23 @@
  1 +\section{Features}
  2 +\label{sec:spb}
  3 +
  4 +%TODO: Paulo e Melissa
  5 +
  6 +The new generation of the SPB portal is made up of a combination of collaborative softwares features. Some of these features were expanded or limited according to government requirements. Other required features, unavailable in these softwares, were developed and sent back to their official repository as contributions. As result, we have a platform which integrate and harmonize features like social networking, mailing list, version control system, content management and source code quality monitoring.
  7 +
  8 +Our aim was to develop features reusing functions available in the collaborative softwares which integrate the platform. In addition, we treated to remaining this integration transparent to end users.
  9 +
  10 +\subsection{Software, development tools and community}
  11 +In the new SPB portal, each software has a standard set of pages and tools. Besides the pages with help content and user support, a software has a section of download and version control and several mechanisms to manager the software development within the platform. These mechanisms includes git repository, wiki pages and issues tracking.
  12 +
  13 +Focusing on the collaborative development, each software has pages and tools to support the dialog and communication between developers, users and enthusiasts. The software has its own mailing list, where its privacy can be moderated according to the maturity of the software in this aspect. It also has a related community, where you can find its members, a blog or any other relevant content made by the community and a summary of recent activities in the spaces of interaction of this software.
  14 +
  15 +In order to assist decision-making, the new SPB has acquired assessment and statistical tools. Now, the users can rate the software using a score and comment, so this information is displayed to anyone. Moreover, the software dispose a statistic section containing values which are calculated through data provided by user and system.
  16 +
  17 +The rule of administrator exist in the software and in its community. The administrator is responsible to moderate content to be published, members and comments from user rating. He is also the person who can make changes in the software homepage content.
  18 +
  19 +\subsection{Software Catalog and global search}
  20 +
  21 +Some available softwares on the platform are highlighted in the portal homepage, but the best way to index all softwares are by a searching in the Software Catalog. In this catalog, some search options like filters by kind of software or categories, sorting and score were developed to improve the navigation.
  22 +
  23 +Expanding the scope of search to cover other kinds of content, the SPB team developed the global search tool. This tool integrates the search mechanisms provided by the collaborative softwares that make up the platform. Any user can find a public content in the context of social network, mailing list and software development.
0 24 \ No newline at end of file
... ...
opensym2017/content/06-features.tex
... ... @@ -1,23 +0,0 @@
1   -\section{Features}
2   -\label{sec:spb}
3   -
4   -%TODO: Paulo e Melissa
5   -
6   -The new generation of the SPB portal is made up of a combination of collaborative softwares features. Some of these features were expanded or limited according to government requirements. Other required features, unavailable in these softwares, were developed and sent back to their official repository as contributions. As result, we have a platform which integrate and harmonize features like social networking, mailing list, version control system, content management and source code quality monitoring.
7   -
8   -Our aim was to develop features reusing functions available in the collaborative softwares which integrate the platform. In addition, we treated to remaining this integration transparent to end users.
9   -
10   -\subsection{Software, development tools and community}
11   -In the new SPB portal, each software has a standard set of pages and tools. Besides the pages with help content and user support, a software has a section of download and version control and several mechanisms to manager the software development within the platform. These mechanisms includes git repository, wiki pages and issues tracking.
12   -
13   -Focusing on the collaborative development, each software has pages and tools to support the dialog and communication between developers, users and enthusiasts. The software has its own mailing list, where its privacy can be moderated according to the maturity of the software in this aspect. It also has a related community, where you can find its members, a blog or any other relevant content made by the community and a summary of recent activities in the spaces of interaction of this software.
14   -
15   -In order to assist decision-making, the new SPB has acquired assessment and statistical tools. Now, the users can rate the software using a score and comment, so this information is displayed to anyone. Moreover, the software dispose a statistic section containing values which are calculated through data provided by user and system.
16   -
17   -The rule of administrator exist in the software and in its community. The administrator is responsible to moderate content to be published, members and comments from user rating. He is also the person who can make changes in the software homepage content.
18   -
19   -\subsection{Software Catalog and global search}
20   -
21   -Some available softwares on the platform are highlighted in the portal homepage, but the best way to index all softwares are by a searching in the Software Catalog. In this catalog, some search options like filters by kind of software or categories, sorting and score were developed to improve the navigation.
22   -
23   -Expanding the scope of search to cover other kinds of content, the SPB team developed the global search tool. This tool integrates the search mechanisms provided by the collaborative softwares that make up the platform. Any user can find a public content in the context of social network, mailing list and software development.
24 0 \ No newline at end of file
opensym2017/content/06-ux.tex 0 → 100644
... ... @@ -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/07-process.tex 0 → 100644
... ... @@ -0,0 +1,144 @@
  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 and skills, where most of them were undergraduate students with major in software engineering (from 4th semester or upper).
  5 +Since the students could not dedicate many hours per week to the project, they always had the flexibility to negotiate their work schedule during the semester in order not to cause any damage to their grades. Their daily work routine in the project included programming and devops tasks.
  6 +
  7 +The development of SPB project required a vast experience and background that usually undergraduate students do not have yet. For this reason, some senior developers have joined to the project to help with hard issues and to transfer knowledge to the students. Their main task was to provide solutions for complex problems, in other words, they worked as a developer. As these professionals are very skillful and the project could not fund a full time work for them, some of them worked partially on the project. In addition, they lived in a different states spread around Brazil which led much of the communication to be made via Internet.
  8 +
  9 +Finally, the last group of actors of this project was composed of employees
  10 +formally working for the Brazilian Government, in the Ministery of Planning,
  11 +development and Management (MPOG is the Brazilian acronyms). All the project
  12 +decisions, validations, and scope definitions were made by them. As can be
  13 +seen, the project had many kinds of profiles that had to be organized and
  14 +synchronized.
  15 +
  16 +\subsection{Teams organizations}
  17 +
  18 +More than X\% of the teams was composed of undergraduate students and they
  19 +worked physically in the same laboratory in the opposite of the senior. Each
  20 +student had their own scheduler based on their class, it made complicated to
  21 +implement pair programming. Also, they had a different area of interests. To
  22 +cope with those diversity, we had two basic rules which guided the project
  23 +organization:
  24 +
  25 +\begin{enumerate}
  26 + \item Classes have to be the top priority for undergraduate students;
  27 + \item Always work in pair (locally or remotely).
  28 +\end{enumerate}
  29 +
  30 +With the aforementioned rules we divided all the project into four different
  31 +teams: Colab, Noosfero, Design, and DevOps. Each team had one coach responsible
  32 +for reducing the communication problem with the other teams and help the
  33 +members to organize itself in the best way for everyone (always respecting the
  34 +work time). The coach, was a normal student working in some of the teams with
  35 +the extra duty of register the current tasks developed in the sprint and with
  36 +the responsibility to talk with other teams. One important thing to notice is
  37 +the mutability of the team and the coach, during the project many students
  38 +changed between the teams to try different areas.
  39 +
  40 +One characteristic of the teams was the presence of (at least) one senior per
  41 +team. This was essential, because hard decisions and complex problems were
  42 +usually addressed to them, this relieved the coach duty to take a complicated
  43 +technical decisions and encouraged students to be a coach. Lastly, the senior
  44 +had to respect a rule number two and work with students, this was important to
  45 +gave the undergraduate the opportunity to interact with a savvy professional in
  46 +his area and keeping the knowledge flow in the project.
  47 +
  48 +Finally, we had to add two last elements of the team organization, that was
  49 +essential for the project harmony: the meta-coach and professors. The former
  50 +was a software engineer recently graduated and which wanted to keep working on
  51 +the project, the latter were professors that orchestrated all the interactions
  52 +between all members of the project. The meta-coach usually worked in one
  53 +specific team and had the extra task of knowing the current status of all
  54 +teams. Professors and meta-coaches worked together to reduce the communication
  55 +problem between all the teams. Lastly, all the bureaucracy tasks was
  56 +centralized in the professors.
  57 +
  58 +\subsection{Meetings}
  59 +
  60 +Brazilian government used to work with software development in a very
  61 +traditional way, frequently they claim on documents and does not focus on what
  62 +really matter (running software). This way of thinking caused to us a
  63 +communication noise with MPOG, because they constantly tried to leverage on our
  64 +work style. It was especially hard to convince them to accept the idea of open
  65 +scope and agile development, but after months of labor and showing results they
  66 +stopped resisting.
  67 +
  68 +We defined some level of meeting granularity to avoid to generate overheads to
  69 +the developers. We had a strategical and validating meeting with MPOG (the
  70 +former once in a month and the latter each 15th day), release plaining with the
  71 +entire team (one per month), and finally a sprint planning (one each 15th day).
  72 +Figure \ref{fig:meeting} is a diagram that represents our meeting organization.
  73 +
  74 +\begin{figure}[hbt]
  75 + \centering
  76 + \includegraphics[width=\linewidth]{figures/meeting_flows.png}
  77 + \caption{Meetings cycles}
  78 + \label{fig:meeting}
  79 +\end{figure}
  80 +
  81 +In the strategical meeting we usually defined the priorities and new features
  82 +with MPOG (we always had to negotiate next steps with them). Normally the
  83 +professors, the coach of each team, the meta-coach, and some employees of MPOG
  84 +join in this meeting. We usually discussed what the team already produced since
  85 +our last meeting, and we establish the new features for the next release.
  86 +Notice that just part of the team join in this meeting to avoid generating
  87 +unnecessary overhead to the developers, but all the students interested to
  88 +participate was allowed to join (many students wanted this experience during
  89 +the project).
  90 +
  91 +After the strategical meeting with MPOG, we had a planning turn with all teams
  92 +together. In this part, each team worked together to convert the MPOG wishes
  93 +into small parts which was represented by the epics of the release. Each coach
  94 +was responsible for conducting the planning, and after that register it on the
  95 +project wiki (the wiki provided by Gitlab). With this epic, each 14th day the
  96 +team have generated their sprint scheduler (with small achievements mapped in
  97 +issues).
  98 +
  99 +To keep MPOG always updated, we invited them to work with us to validate the
  100 +new features in progress. Normally we had a meeting each 15th day. Basically,
  101 +this was our work flow, we always kept everything extremely open to the MPOG
  102 +(our way of work and open source projects) and to the team.
  103 +
  104 +To keep the track of all of those things we used the SPB, especially the
  105 +Gitlab. Basically, we had:
  106 +
  107 +\begin{enumerate}
  108 + \item Project repository: We have one organization with many repositories
  109 + \item Milestones: Each milestone is used to register a release
  110 + \item Wiki: Each release has one page on wiki with the compilation of
  111 + strategical meeting
  112 + \item Issues: Each sprint planning generated issues, which we associated to
  113 + the specific milestone and updated the wiki with the issue number related
  114 + with them. Finally each developer assigned the issue to itself.
  115 +\end{enumerate}
  116 +
  117 +Notice that this workflow gave to us and to the MPOG a full traceability from
  118 +high view of the feature to the low view (code). This provided a way to MPOG
  119 +validated all worked done and proof the concept that work with open source
  120 +project can give a proper view to them check.
  121 +
  122 +\subsection{Tools for communication and management}
  123 +
  124 +Our team had many people worked together, and most of the seniors worked in a
  125 +different city remotely. Also, we tried to keep our work completely clear to
  126 +the Brazilian government and citizens interested in follow the project. To
  127 +handle those cases, we used a set of tools to communication and other to manage
  128 +the project.
  129 +
  130 +For communication between member in different places, we used: google-talk with
  131 +tmate, IRC, and mailing-list. When one student had to work in pair with a
  132 +senior, normally, they used google-hangout for communication and they shared a
  133 +session with tmate which allow them to share the same terminal. For questions
  134 +and fast discussion, we used IRC. For general notification, we used the
  135 +mailing-list.
  136 +
  137 +For managing the project we used the SPB Portal to validate it by ourselves and
  138 +because it had all the required tools. We basically create one wiki page per
  139 +release in Gitlab, one milestone per sprint, and one or more issues for address
  140 +one user history. With this approach we achieve two important things: keep all
  141 +the management close to the source code and tracked every feature developed by
  142 +the project.
  143 +
  144 +% Ainda falta adicionar a parte da visita dos seniors e o turno sagrado
... ...
opensym2017/content/07-ux.tex
... ... @@ -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/spb.tex
... ... @@ -153,10 +153,10 @@
153 153 \input{content/01-introduction}
154 154 \input{content/02-spb}
155 155 \input{content/03-requirements}
156   -\input{content/04-process}
157   -\input{content/05-architecture}
158   -\input{content/06-features}
159   -\input{content/07-ux}
  156 +\input{content/04-architecture}
  157 +\input{content/05-features}
  158 +\input{content/06-ux}
  159 +\input{content/07-process}
160 160 \input{content/08-contributions}
161 161 \input{content/09-lessons}
162 162 \input{content/10-finals}
... ...