Commit 5588ee4556b73c0b72ae04c3bfc235fbd5edece1
1 parent
ca3c632b
Exists in
master
[opensym] Trying 10 pages
Showing
12 changed files
with
508 additions
and
529 deletions
Show diff stats
opensym2017/content/01-introduction.tex
| ... | ... | @@ -3,14 +3,14 @@ |
| 3 | 3 | |
| 4 | 4 | The Brazilian Government released in the year 2000 the Eletronic Government |
| 5 | 5 | program (eGov) aiming at democratizing information access and improving the |
| 6 | -public provision quality of service and information. In 2003, the Federal Government created a | |
| 6 | +public provision quality of service and information. In 2003, the Federal | |
| 7 | +Government created a | |
| 7 | 8 | committee\footnote{\url{http://www.softwarelivre.gov.br/documentos-oficiais/ |
| 8 | 9 | DecretoComite}} for implementation of Free/Libre/Open Source Software |
| 9 | 10 | (FLOSS\footnote{In this work, the acronym ``FLOSS'' is used as a representative |
| 10 | 11 | for ``Free Software'', ``Open Source Software'' (OSS), and``Free/Open Source |
| 11 | -Software'' (FOSS).}) and thereafter a | |
| 12 | -circular-letter was sent to all Ministries in which the recommendation to adopt FLOSS | |
| 13 | -became a public | |
| 12 | +Software'' (FOSS).}) and thereafter a circular-letter was sent to all | |
| 13 | +Ministries in which the recommendation to adopt FLOSS became a public | |
| 14 | 14 | policy\footnote{\url{http://www.softwarelivre.gov.br/documentos-oficiais/circulardoministro}}. |
| 15 | 15 | In 2007, the Brazilian Public Software Portal (\textit{Portal do Software |
| 16 | 16 | Público Brasileiro}, in Portuguese) was released with the goal of sharing FLOSS |
| ... | ... | @@ -82,9 +82,11 @@ can help other projects to overcome similar software engineering challenges in |
| 82 | 82 | the future, as well as to illustrate how universities can improve the |
| 83 | 83 | real-world experience of their students. |
| 84 | 84 | |
| 85 | -The remainder of this work is organized as follows. Section \ref{sec:spb} | |
| 86 | -discusses the concepts of Brazilian Public Software and Free Software. Section | |
| 87 | -\ref{sec:related} enumerates a number of related projects from other countries. | |
| 85 | +\begin{comment} | |
| 86 | +%FALTA ESPAÇO | |
| 87 | +The remainder of this work is organized as follows. Section \ref{sec:spb} | |
| 88 | +discusses the concepts of Brazilian Public Software and Free Software. Section | |
| 89 | +\ref{sec:related} enumerates some related projects from other countries. | |
| 88 | 90 | Section \ref{sec:researchdesign} presents the open questions these guided this |
| 89 | 91 | paper. Section \ref{sec:requirements} reports how the Brazilian Government |
| 90 | 92 | stakeholders collected the theoretical requirements as well as how we define |
| ... | ... | @@ -92,12 +94,9 @@ the technological requirements to release an initial version. Section |
| 92 | 94 | \ref{sec:architecture} shares our decisions about the systems that together |
| 93 | 95 | provided a wide subset of the requirements and our strategy to integrate them. |
| 94 | 96 | Section \ref{sec:features} describes the main features of the new SPB Portal. |
| 95 | -Section \ref{sec:ux} reports the user experience evolution during the | |
| 96 | -integration of the selected FLOSS tools. Section \ref{sec:process} discusses | |
| 97 | -our strategies to support the different organizational cultures and to involve | |
| 98 | -undergraduate students as protagonists of the development process. Section | |
| 99 | -\ref{sec:contributions} summarizes the contributions to the FLOSS upstream | |
| 100 | -communities we interacted with. Finally, Sections \ref{sec:conclusion} | |
| 101 | -concludes the paper highlighting its main contributions, sharing our lessons | |
| 102 | -learned, and pointing paths to future works. | |
| 103 | - | |
| 97 | +Section \ref{sec:process} discusses our strategies to support the different | |
| 98 | +organizational cultures and to involve undergraduate students as protagonists | |
| 99 | +of the development process. Finally, Sections \ref{sec:conclusion} concludes | |
| 100 | +the paper highlighting its main contributions, sharing our lessons learned, and | |
| 101 | +pointing paths to future works. | |
| 102 | +\end{comment} | ... | ... |
opensym2017/content/03-relatedworks.tex
| ... | ... | @@ -11,10 +11,8 @@ making it easy for users and developers to obtain information and to access thei |
| 11 | 11 | source code repositories at GitHub. However, it does not provide social networking |
| 12 | 12 | and CMS features, as well as, other communication resources. |
| 13 | 13 | |
| 14 | -Additionally, there are two initiatives in Europe: | |
| 15 | -OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} and | |
| 16 | -OW2\footnote{\url{http://ow2.org}}. The Open Source Observatory (OSOR) is a | |
| 17 | -community hosted in the JoinUp platform powered by the European Commission. | |
| 14 | +The European Commission supports the Open Source Observatory\footnote{\url{https://joinup.ec.europa.eu/community/osor}} (OSOR) that is a | |
| 15 | +community hosted in the JoinUp platform. | |
| 18 | 16 | OSOR intends to exchange information, experiences, and best practices around the |
| 19 | 17 | use of FLOSS in the public administration. It supports the discovering of FLOSS projects made |
| 20 | 18 | available by public agencies, providing information about these projects, such |
| ... | ... | @@ -23,13 +21,6 @@ It also offers discussion forums and community mailing lists. But it |
| 23 | 21 | does not have an integrated source code repository manager, so for each |
| 24 | 22 | project there is a link to its own external repository. |
| 25 | 23 | % |
| 26 | -OW2 is an organization that promotes the development, deployment and management | |
| 27 | -of FLOSS middleware, generic | |
| 28 | -business applications, and cloud computing platforms, besides fostering a community and | |
| 29 | -business ecosystem around such projects. | |
| 30 | - | |
| 31 | -\leo{E aí, o que a OW2 tem a ver com o SPB?} | |
| 32 | - | |
| 33 | 24 | Moreover, in 2007 the European Comission published a study examining the impact |
| 34 | 25 | that the development and distribution of FLOSS by public agencies have on eGovernment |
| 35 | 26 | services and the economy~\cite{ghosh2004}. And, from 2007 to 2011, there |
| ... | ... | @@ -61,6 +52,3 @@ avoiding the usage of private platforms, especially the ones provided by foreign |
| 61 | 52 | companies. Therefore, we needed to develop our own solution to cover all the |
| 62 | 53 | requirements, producing a complete governmental integrated platform for |
| 63 | 54 | collaborative software development. |
| 64 | - | |
| 65 | -\leo{Me parece que o decreto fala sobre sistemas de comunicação. Acho que o foco era e-mail. Não me parece que o SPB tenha a ver com isso. A menos que se considere algo pelos fóruns... para refletir.} | |
| 66 | - | ... | ... |
opensym2017/content/06-architecture.tex
| ... | ... | @@ -104,7 +104,7 @@ stores the metrics evolution history, presents results in a friendly |
| 104 | 104 | way, as well as, allows users to customize the given interpretation |
| 105 | 105 | accordingly to their own context. |
| 106 | 106 | |
| 107 | -\subsection{System unification} | |
| 107 | +\subsection{System unification and User eXperience evolution} | |
| 108 | 108 | |
| 109 | 109 | \begin{figure}[hbt] |
| 110 | 110 | \centering |
| ... | ... | @@ -123,7 +123,33 @@ functionality of each application, a search o n the SPB portal might |
| 123 | 123 | return content from any of the applications, be it web pages, mailing |
| 124 | 124 | list posts, or source code. |
| 125 | 125 | |
| 126 | -% Falar do devops | |
| 126 | +The integration of collaborative environments goes beyond functional aspects. | |
| 127 | +Offering the population an unified experience across these environments has | |
| 128 | +been the key to encourage the use of the platform as it reduces the perception | |
| 129 | +of complexity. Thus, the SPB Portal information architecture was redesigned | |
| 130 | +to provide a transparent navigation and to reach users with different profiles. | |
| 131 | +A process of harmonization has been employed on the interaction models of each | |
| 132 | +tool to reduce the learning curve. At the same time, a new visual style was | |
| 133 | +created to unify the navigation experience and to comply with the guidelines of | |
| 134 | +the digital communication identity standard established by the Federal | |
| 135 | +Government. | |
| 136 | + | |
| 137 | +With the increase in system features and the addition of new tools, the | |
| 138 | +visual style has steadily evolved to keep the navigation unified. Moreover, | |
| 139 | +tools from different backgrounds, which in many cases provide similar | |
| 140 | +functionality, prompted the development of an unified interface. Some | |
| 141 | +features, such as search and user profile editing were eliminated from | |
| 142 | +the individual applications, and implemented centrally to ensure a | |
| 143 | +consistent look and feel. | |
| 144 | + | |
| 145 | +Another challenge was responsive web design. The integrated applications | |
| 146 | +had varying degrees of support for responsiveness, and the common | |
| 147 | +interface had to adapt for each individual scenario. In particular | |
| 148 | +Noosfero did not yet have a responsive design; we engaged in its | |
| 149 | +development and contributed towards that goal. | |
| 150 | + | |
| 151 | +\begin{comment} | |
| 152 | +%FALTA DE ESPAÇO | |
| 127 | 153 | \subsection{Deploy} |
| 128 | 154 | |
| 129 | 155 | The SPB platform was deployed in 7 virtual machines with different functions, |
| ... | ... | @@ -161,3 +187,4 @@ static analysis tools on source code stored in repository and provide this data |
| 161 | 187 | to Prezento. A social network and CMS (Content Manager System) is provided by |
| 162 | 188 | Noosfero in \textit{social}, and the databases of all tools with a cache |
| 163 | 189 | service are in \textit{database}. |
| 190 | +\end{comment} | ... | ... |
opensym2017/content/07-features.tex
| ... | ... | @@ -0,0 +1,181 @@ |
| 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 FLOSS 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 | +sort 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. Our decision to | |
| 110 | +use Wiki initially was empirical, but later reinforced by a research conducted | |
| 111 | +by Joseph Chao showing the advantage of using Wikis \cite{chao2007student, | |
| 112 | +opensourcestyle}. | |
| 113 | + | |
| 114 | +\subsection{High-level project management and reporting} | |
| 115 | + | |
| 116 | +The Brazilian government used to work with software development in a | |
| 117 | +very traditional way. They would frequently focus on documents and not | |
| 118 | +on what was, in our opinion, what really matters: working software. This | |
| 119 | +dissonance caused us a communication noise with MP, because they would | |
| 120 | +often question our work style. It was especially hard to convince them | |
| 121 | +to accept the idea of open scope and agile development, but after months | |
| 122 | +of labor and showing results they stopped resisting. | |
| 123 | + | |
| 124 | +We defined some level of meeting granularity to avoid generating too | |
| 125 | +much overhead to the developers. We had a strategical and validating | |
| 126 | +meeting with MP (the former once in a month and the latter each 15th | |
| 127 | +day), release plaining with the entire team (one per month), and finally | |
| 128 | +a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a | |
| 129 | +diagram that represents our meeting organization. | |
| 130 | + | |
| 131 | +\begin{figure}[hbt] | |
| 132 | + \centering | |
| 133 | + \includegraphics[width=\linewidth]{figures/meeting_flows.png} | |
| 134 | + \caption{Meetings cycles.} | |
| 135 | + \label{fig:meeting} | |
| 136 | +\end{figure} | |
| 137 | + | |
| 138 | +In the strategical meeting we usually defined the priorities and new | |
| 139 | +features with the Brazilian government. Normally the professors, the | |
| 140 | +coach of each team, the meta-coach, and some employees of the MP would | |
| 141 | +participate in this meeting. We usually discussed what the team already | |
| 142 | +produced since our last meeting, and established the new features for | |
| 143 | +the next release. Notice that just part of the team would join this | |
| 144 | +meeting to avoid generating unnecessary overhead to the developers, but | |
| 145 | +all the students interested to participate were allowed to join (many | |
| 146 | +students wanted this experience during the project). | |
| 147 | + | |
| 148 | +After the strategical meeting with Brazilian government agents, we had a | |
| 149 | +planning turn with all teams together. In this part, each team worked together | |
| 150 | +to convert the MP wishes into smaller parts which were represented by the epics of | |
| 151 | +the release. Each coach was responsible for conducting the planning, and after | |
| 152 | +that record it on the project wiki (the wiki provided by Gitlab). With this | |
| 153 | +epic, each 14th day the team have generated their sprint scheduler (with small | |
| 154 | +achievements mapped to issues). | |
| 155 | + | |
| 156 | +To keep the Brazilian government always updated, we invited them to work | |
| 157 | +with us to validate the new features in progress. Normally we had a | |
| 158 | +meeting each 15th day. Basically, this was our work flow, we always kept | |
| 159 | +everything extremely open to the MP (our way of working, and the one | |
| 160 | +often used by open source projects) and to the team. | |
| 161 | + | |
| 162 | +To keep the track of all of those things we used the SPB itself, | |
| 163 | +especially Gitlab. Basically, we had: | |
| 164 | + | |
| 165 | +\begin{enumerate} | |
| 166 | + \item Project repository: We have one organization with many repositories; | |
| 167 | + \item Milestones: Each milestone was used to register a release; | |
| 168 | + \item Wiki: Each release has one page on wiki with the compilation of | |
| 169 | + strategical meeting; | |
| 170 | + \item Issues: Each sprint planning generated issues, which we associated to | |
| 171 | + the specific milestone and updated the wiki with the issue number related | |
| 172 | + with them. Finally each developer assigned the issue to itself. | |
| 173 | +\end{enumerate} | |
| 174 | + | |
| 175 | +Notice that this workflow gave us and the Brazilian government agents full | |
| 176 | +traceability from a high level view of each feature to the lowest level (code). | |
| 177 | +It is important to highlight that we converge to this workflow after many | |
| 178 | +experiments. For example, we used a tool named Redmine for organizing our tasks | |
| 179 | +during the sprints, however, this tool revealed inefficient for our case since | |
| 180 | +the government agents lost part of the project traceability. We realized that | |
| 181 | +centralize all the work in the SPB portal is the best option for our case. | ... | ... |
opensym2017/content/08-ux.tex
| ... | ... | @@ -1,34 +0,0 @@ |
| 1 | -\section{User eXperience evolution} | |
| 2 | -\label{sec:ux} | |
| 3 | - | |
| 4 | -The integration of collaborative environments goes beyond functional aspects. | |
| 5 | -Offering the population an unified experience across these environments has | |
| 6 | -been the key to encourage the use of the platform as it reduces the perception | |
| 7 | -of complexity. Thus, the SPB Portal information architecture was redesigned | |
| 8 | -to provide a transparent navigation and to reach users with different profiles. | |
| 9 | -A process of harmonization has been employed on the interaction models of each | |
| 10 | -tool to reduce the learning curve. At the same time, a new visual style was | |
| 11 | -created to unify the navigation experience and to comply with the guidelines of | |
| 12 | -the digital communication identity standard established by the Federal | |
| 13 | -Government. | |
| 14 | - | |
| 15 | -With the increase in system features and the addition of new tools, the | |
| 16 | -visual style has steadily evolved to keep the navigation unified. Moreover, | |
| 17 | -tools from different backgrounds, which in many cases provide similar | |
| 18 | -functionality, prompted the development of an unified interface. Some | |
| 19 | -features, such as search and user profile editing were eliminated from | |
| 20 | -the individual applications, and implemented centrally to ensure a | |
| 21 | -consistent look and feel. | |
| 22 | - | |
| 23 | -Another challenge was responsive web design. The integrated applications | |
| 24 | -had varying degrees of support for responsiveness, and the common | |
| 25 | -interface had to adapt for each individual scenario. In particular | |
| 26 | -Noosfero did not yet have a responsive design; we engaged in its | |
| 27 | -development and contributed towards that goal. | |
| 28 | - | |
| 29 | -After the initial release of the new SPB Portal in 2014, several | |
| 30 | -validations activities were implemented in 2015 and 2016. The aim was to | |
| 31 | -provide the most wanted features by casual users (such as public | |
| 32 | -servants interested in downloads and documentation) immediately, while | |
| 33 | -allowing more experienced users (such as developers) to easily drill down | |
| 34 | -to the details. |
| ... | ... | @@ -0,0 +1,220 @@ |
| 1 | +\section{Conclusion} | |
| 2 | +\label{sec:conclusion} | |
| 3 | + | |
| 4 | +In this work, we presented and discussed issues experienced during a government-funded | |
| 5 | +project, in partnership with the University of Brasilia and the University of | |
| 6 | +São Paulo, to evolve the Brazilian Public Software Portal. | |
| 7 | +Its contributions are twofold. First, we present the strategy used to develop | |
| 8 | +and to deliver an unprecedented platform to Brazilian government. Second, | |
| 9 | +based on the results of the SPB Portal project, we point out that it is | |
| 10 | +possible to mitigate conflicts experienced in the development environment | |
| 11 | +and to conciliate governmental and academy cultures. To summarize our main contributions, we answered in this section the three open questions those guided this paper. | |
| 12 | + | |
| 13 | + | |
| 14 | +\textbf{Q1 -- Which strategy could be used to integrate several existing | |
| 15 | +FLOSS tools to promote the collaborative software development?} | |
| 16 | +% | |
| 17 | +The SPB portal integrates more than 10 FLOSS tools and provides several features, | |
| 18 | +such as social network, mailing list, version control, content management and | |
| 19 | +source code quality monitoring. Concerned with the platform sustainability and | |
| 20 | +maintainability, the aforementioned 10 FLOSS tools were integrated with minimum | |
| 21 | +differences from their official versions and the new developed features were | |
| 22 | +sent upstream to ensure an alignment between the portal systems and their | |
| 23 | +respective official versions. In the integration process, the main softwares | |
| 24 | +were identified, specific teams were formed to work with each one of them | |
| 25 | +and each team was composed of students with different levels of skills and at | |
| 26 | +least one senior professional. | |
| 27 | + | |
| 28 | +\textbf{Q2 -- How to involve students in real-world projects interacting with | |
| 29 | +real customers?} | |
| 30 | +% | |
| 31 | +In terms of mitigating conflicts, we tried to show that, as long as the | |
| 32 | +university can provide a healthy and challenging environment to its students, | |
| 33 | +one may conciliate studies and professional training in universities. | |
| 34 | +% | |
| 35 | +The students interacted with professionals of diverse fields of expertise, and they were | |
| 36 | +able to participate in all levels of the software development process. | |
| 37 | +This contributed to a great learning opportunity. | |
| 38 | +% | |
| 39 | +In our work process, based on open and collaborative software development | |
| 40 | +practices, students could negotiate their work schedule as well as count on IT | |
| 41 | +professionals to solve development issues. | |
| 42 | +% | |
| 43 | +Among the students, we have defined coaches for each team and a meta-coach | |
| 44 | +(coach of whole project). All coaches, together with professors, have | |
| 45 | +intermediated the communication between client (Ministry of Planning of Brazil) | |
| 46 | +and the rest of the group. | |
| 47 | +After the end of the project, some students successfully | |
| 48 | +embraced opportunities in public and private sectors, within national borders | |
| 49 | +and abroad. Some other students went further and started their own companies. | |
| 50 | + | |
| 51 | +\textbf{Q3 -- How to introduce the FLOSS collaborative and agile | |
| 52 | +practices to governmental development process?} | |
| 53 | +With some adaptations, what we called the ``translation processes'', it is feasible | |
| 54 | +to conciliate agile methodologies and FLOSS practices to develop software to | |
| 55 | +governmental organizations with functional hierarchical structures that use | |
| 56 | +traditional development paradigm. | |
| 57 | +% | |
| 58 | +Aiming at reducing client questions about workconclusion, a DevOps front was | |
| 59 | +created to automate all deploy process and also to work in continuous | |
| 60 | +delivery. The government was brought to our work environment and interacted | |
| 61 | +with our management and communication tools. For the project success, we | |
| 62 | +focused on providing a friendly working environment as well as on showing to | |
| 63 | +governmental agents another way to interact with the FLOSS community and the | |
| 64 | +university. | |
| 65 | + | |
| 66 | +\subsection{Lessons Learned} | |
| 67 | +\label{sec:lessons} | |
| 68 | + | |
| 69 | +From the answers of our initial open questions, we can also highlighted six lessons learned to make easier to share our experience during the development of the new SPB Portal. | |
| 70 | + | |
| 71 | +\textbf{L1 -- The participation of experienced professionals is crucial to | |
| 72 | +the success of the project.} | |
| 73 | +One important factor for the students was the composition of the teams | |
| 74 | +with the participation of experienced professionals. | |
| 75 | +% | |
| 76 | +On the technical side, the senior developers and designers would handle | |
| 77 | +the more difficult technical decisions, creating a work environment | |
| 78 | +where the students could develop their skills in a didactic way without | |
| 79 | +pressure. | |
| 80 | +% | |
| 81 | +On the management side, the active participation of professors -- who | |
| 82 | +are, in the end, the ones responsible for the project -- is crucial to | |
| 83 | +make sure students participation is conducted in a healthy way, and it is an | |
| 84 | +instance of leading by example. | |
| 85 | + | |
| 86 | +\textbf{L2 -- A balanced relationship between academia and industry.} | |
| 87 | +The experience of the SPB project led UnB to develop a work style which | |
| 88 | +proved to be appropriate for an educational environment that brings | |
| 89 | +academia and industry together. | |
| 90 | +% | |
| 91 | +The highest priority from the university's point of view is the | |
| 92 | +students. Considering this, the activities of the project were never | |
| 93 | +prioritized to the detriment of classes and other pedagogical | |
| 94 | +activities. In summary, we had students working at different times, part | |
| 95 | +time, remotely or locally, always respecting their individual | |
| 96 | +conditions, but doing the work in a collective, collaborative and open | |
| 97 | +way. | |
| 98 | +% | |
| 99 | +And even under a potentially adverse environment, the project delivered | |
| 100 | +the desired solution with success. | |
| 101 | +% | |
| 102 | +At the end of the project, we noted that the skills developed by the | |
| 103 | +students were at the software engineering state of the art. | |
| 104 | +After the project ended, we had team members successfully embracing | |
| 105 | +opportunities in public, private, national, and international | |
| 106 | +organizations, in addition to those students that | |
| 107 | +opened their own companies. | |
| 108 | + | |
| 109 | +\textbf{L3 -- Managing different organizational cultures.} | |
| 110 | +In the beginning of the project, the Brazilian Government stakeholders | |
| 111 | +had certain expectations about the project development that, let's | |
| 112 | +say, didn't exactly match our work style based on agile and FLOSS practices. | |
| 113 | +% | |
| 114 | +We had to develop strategies that would support these different | |
| 115 | +organizational cultures. The | |
| 116 | +MP is organized in a functional hierarchical organizational structure, | |
| 117 | +typically adopting a traditional development paradigm. Therefore, we had to | |
| 118 | +create a translation process between our team and the MP managers who | |
| 119 | +managed the project on their side assuming a traditional waterfall | |
| 120 | +process. | |
| 121 | + | |
| 122 | +\textbf{L4 -- Managing higher-level and lower-level goals separately.} | |
| 123 | +During the initial phase of the project, the MP team has brought | |
| 124 | +strategic discussions to technical/operational meetings that | |
| 125 | +were supposed to be about practical technical decisions. | |
| 126 | +% | |
| 127 | +This produced a highly complex communication and management environment, | |
| 128 | +overloading the professors because they were supposed | |
| 129 | +for maintaining the MP strategy synchronized with the | |
| 130 | +implementation plans of the development team. This was hard, especially because the | |
| 131 | +aforementioned cultural mismatch. Mixing both concerns in the same | |
| 132 | +discussions caused confusion on both sides. | |
| 133 | +% | |
| 134 | +From the middle of the project we were able to keep those | |
| 135 | +concerns separated, what eased the work of everyone involved. | |
| 136 | + | |
| 137 | +\textbf{L5 -- Living with ill-advised political decisions.} | |
| 138 | +At the initial phases of the project, by political and personal | |
| 139 | +motivation, the main stakeholders from the Brazilian government imposed | |
| 140 | +the use of Colab to guide the development of the new SPB platform. Our | |
| 141 | +team was totally against the idea because we already knew that Colab was | |
| 142 | +a very experimental project and its adoption could dramatically increase | |
| 143 | +the project complexity. Even though we provided technical reasons to | |
| 144 | +not utilize Colab, the MP was adamant and we had to manage this problem. We did massive changes to | |
| 145 | +Colab, and at the end of the project we have completely rewritten it to make | |
| 146 | +it stable. It is important to notice that the MP compelled us to accept | |
| 147 | +a technical decision based only on political interests, without considering | |
| 148 | +all the resources that would be spent due to that decision. At the end | |
| 149 | +of the project, we verified that Colab indeed consumed a vast amount of | |
| 150 | +the budget and increased the project complexity. At the end of the | |
| 151 | +project and after our analysis on the decision made by the MP, we | |
| 152 | +understand that MP managers are capable of ignoring technical reasons | |
| 153 | +in favor of political decisions. | |
| 154 | + | |
| 155 | +\textbf{L6 -- Consider sustainability from the beginning.} | |
| 156 | +In the process of deploying the SPB platform in the MP infrastructure we had | |
| 157 | +to interact with the MP technicians. We did several workshops, training | |
| 158 | +and a meticulous documentation describing all the required procedures to | |
| 159 | +update the platform, however, we realized that the MP technicians | |
| 160 | +constantly avoid the responsibility. After noticing the aforementioned | |
| 161 | +situation, we organized a DevOps team that completely automated all | |
| 162 | +the deployment procedure. We simplified all the platform deployment to a | |
| 163 | +few steps: (1) initial configurations (just ssh configuration) and (2) | |
| 164 | +the execution of simple commands to completely update the platform. By | |
| 165 | +the end of the project, we observed that the MP technicians invariably | |
| 166 | +still depended on our support to update the platform even with all the | |
| 167 | +automation provided by us. We were sadly left with a feeling of | |
| 168 | +uncertainty about the future of the platform after the project ended. In | |
| 169 | +hindsight, we realize that the MP dedicated system analysts and | |
| 170 | +managers to the project, but not operations technicians. The later | |
| 171 | +should have been more involved with the process so they could at least be | |
| 172 | +comfortable in managing the platform infrastructure. | |
| 173 | + | |
| 174 | + | |
| 175 | +\textbf{Final remarks and future work} | |
| 176 | + | |
| 177 | +The portal is available at \url{softwarepublico.gov.br}. All | |
| 178 | +documentation, including detailed architecture and operation manuals are | |
| 179 | +also available\footnote{\url{https://softwarepublico.gov.br/doc/} | |
| 180 | +(in Portuguese only at the moment)}. | |
| 181 | +% | |
| 182 | +All the integrated tools are FLOSS and our contributions were published | |
| 183 | +in open repositories, available on the SPB Portal itself. We also | |
| 184 | +contributed these features back to the respective communities, which | |
| 185 | +benefits both those communities and us, since we can share future | |
| 186 | +development and maintenance effort with other organizations that | |
| 187 | +participate in these projects. | |
| 188 | + | |
| 189 | +Future work should use data produced by the project to validate and evaluate | |
| 190 | +how the used FLOSS and Agile practices have impacted the students and the | |
| 191 | +governmental development process. For this, we would conduce a \textit{postmortem} | |
| 192 | +analysis using the project open data and a survey targeting the involved actors. | |
| 193 | + | |
| 194 | +%=========== | |
| 195 | +% Conclusion | |
| 196 | +%=========== | |
| 197 | + | |
| 198 | +% * Gestão dos recursos: Fizemos mais por menos (2.6M de 3.2M) --- sem os dados | |
| 199 | +%% (escopo, custo, tempo e qualidade) bem discutidos é difícil sustentar essa | |
| 200 | +%% afirmação, embora eu e Paulo consigamos perceber isso. | |
| 201 | + | |
| 202 | + | |
| 203 | +%* utilização do projeto para formação de recursos humanos (alunos) | |
| 204 | + | |
| 205 | +%* dados da verificação dos repositório para a análise da qualidade dos código via Mezuro e CodeClimate | |
| 206 | + | |
| 207 | +%* o que achamos que irá acontecer com o SPB no futuro breve (acabar) | |
| 208 | + | |
| 209 | +%* 69 projetos marcados como SPB, de 81 no total na plataforma. | |
| 210 | + | |
| 211 | +%* 47\% é desenvolvido em PHP. | |
| 212 | + | |
| 213 | +% 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). | |
| 214 | + | |
| 215 | +% 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}. | |
| 216 | + | |
| 217 | +% 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. | |
| 218 | + | |
| 219 | +%* Debater economia de recursos em orgão públicos | |
| 220 | + | ... | ... |
opensym2017/content/09-process.tex
| ... | ... | @@ -1,181 +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 FLOSS 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 | -sort 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. Our decision to | |
| 110 | -use Wiki initially was empirical, but later reinforced by a research conducted | |
| 111 | -by Joseph Chao showing the advantage of using Wikis \cite{chao2007student, | |
| 112 | -opensourcestyle}. | |
| 113 | - | |
| 114 | -\subsection{High-level project management and reporting} | |
| 115 | - | |
| 116 | -The Brazilian government used to work with software development in a | |
| 117 | -very traditional way. They would frequently focus on documents and not | |
| 118 | -on what was, in our opinion, what really matters: working software. This | |
| 119 | -dissonance caused us a communication noise with MP, because they would | |
| 120 | -often question our work style. It was especially hard to convince them | |
| 121 | -to accept the idea of open scope and agile development, but after months | |
| 122 | -of labor and showing results they stopped resisting. | |
| 123 | - | |
| 124 | -We defined some level of meeting granularity to avoid generating too | |
| 125 | -much overhead to the developers. We had a strategical and validating | |
| 126 | -meeting with MP (the former once in a month and the latter each 15th | |
| 127 | -day), release plaining with the entire team (one per month), and finally | |
| 128 | -a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a | |
| 129 | -diagram that represents our meeting organization. | |
| 130 | - | |
| 131 | -\begin{figure}[hbt] | |
| 132 | - \centering | |
| 133 | - \includegraphics[width=\linewidth]{figures/meeting_flows.png} | |
| 134 | - \caption{Meetings cycles.} | |
| 135 | - \label{fig:meeting} | |
| 136 | -\end{figure} | |
| 137 | - | |
| 138 | -In the strategical meeting we usually defined the priorities and new | |
| 139 | -features with the Brazilian government. Normally the professors, the | |
| 140 | -coach of each team, the meta-coach, and some employees of the MP would | |
| 141 | -participate in this meeting. We usually discussed what the team already | |
| 142 | -produced since our last meeting, and established the new features for | |
| 143 | -the next release. Notice that just part of the team would join this | |
| 144 | -meeting to avoid generating unnecessary overhead to the developers, but | |
| 145 | -all the students interested to participate were allowed to join (many | |
| 146 | -students wanted this experience during the project). | |
| 147 | - | |
| 148 | -After the strategical meeting with Brazilian government agents, we had a | |
| 149 | -planning turn with all teams together. In this part, each team worked together | |
| 150 | -to convert the MP wishes into smaller parts which were represented by the epics of | |
| 151 | -the release. Each coach was responsible for conducting the planning, and after | |
| 152 | -that record it on the project wiki (the wiki provided by Gitlab). With this | |
| 153 | -epic, each 14th day the team have generated their sprint scheduler (with small | |
| 154 | -achievements mapped to issues). | |
| 155 | - | |
| 156 | -To keep the Brazilian government always updated, we invited them to work | |
| 157 | -with us to validate the new features in progress. Normally we had a | |
| 158 | -meeting each 15th day. Basically, this was our work flow, we always kept | |
| 159 | -everything extremely open to the MP (our way of working, and the one | |
| 160 | -often used by open source projects) and to the team. | |
| 161 | - | |
| 162 | -To keep the track of all of those things we used the SPB itself, | |
| 163 | -especially Gitlab. Basically, we had: | |
| 164 | - | |
| 165 | -\begin{enumerate} | |
| 166 | - \item Project repository: We have one organization with many repositories; | |
| 167 | - \item Milestones: Each milestone was used to register a release; | |
| 168 | - \item Wiki: Each release has one page on wiki with the compilation of | |
| 169 | - strategical meeting; | |
| 170 | - \item Issues: Each sprint planning generated issues, which we associated to | |
| 171 | - the specific milestone and updated the wiki with the issue number related | |
| 172 | - with them. Finally each developer assigned the issue to itself. | |
| 173 | -\end{enumerate} | |
| 174 | - | |
| 175 | -Notice that this workflow gave us and the Brazilian government agents full | |
| 176 | -traceability from a high level view of each feature to the lowest level (code). | |
| 177 | -It is important to highlight that we converge to this workflow after many | |
| 178 | -experiments. For example, we used a tool named Redmine for organizing our tasks | |
| 179 | -during the sprints, however, this tool revealed inefficient for our case since | |
| 180 | -the government agents lost part of the project traceability. We realized that | |
| 181 | -centralize all the work in the SPB portal is the best option for our case. |
opensym2017/content/10-contributions.tex
| ... | ... | @@ -1,58 +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 | -Mezuro was completely rewritten and its architecture evolved adopting the | |
| 45 | -microservice architecture\cite{namiot2014micro}. This way, we minimize the | |
| 46 | -amount of code to maintain it, helping to test it and grant its code quality. | |
| 47 | -In practice, we modularize the Mezuro project in several independent services. | |
| 48 | -Currently, its computation and visualization modules use Kalibro and Prezento, | |
| 49 | -respectively. They were developed into the Mezuro project and evolved during | |
| 50 | -its integration to the new SPB Portal. | |
| 51 | - | |
| 52 | - | |
| 53 | -We also made some contributions on the DevOps front. Some members of | |
| 54 | -them team became maintainers of some Python libraries that were used by | |
| 55 | -our scripts to upload packages to OBS (Open Build Service). We developed | |
| 56 | -a tool called copr-status to keep track of the different stages of the | |
| 57 | -lifecycle of each of the individual packages we were working on. | |
| 58 | - |
opensym2017/content/11-conclusion.tex
| ... | ... | @@ -1,220 +0,0 @@ |
| 1 | -\section{Conclusion} | |
| 2 | -\label{sec:conclusion} | |
| 3 | - | |
| 4 | -In this work, we presented and discussed issues experienced during a government-funded | |
| 5 | -project, in partnership with the University of Brasilia and the University of | |
| 6 | -São Paulo, to evolve the Brazilian Public Software Portal. | |
| 7 | -Its contributions are twofold. First, we present the strategy used to develop | |
| 8 | -and to deliver an unprecedented platform to Brazilian government. Second, | |
| 9 | -based on the results of the SPB Portal project, we point out that it is | |
| 10 | -possible to mitigate conflicts experienced in the development environment | |
| 11 | -and to conciliate governmental and academy cultures. To summarize our main contributions, we answered in this section the three open questions those guided this paper. | |
| 12 | - | |
| 13 | - | |
| 14 | -\textbf{Q1 -- Which strategy could be used to integrate several existing | |
| 15 | -FLOSS tools to promote the collaborative software development?} | |
| 16 | -% | |
| 17 | -The SPB portal integrates more than 10 FLOSS tools and provides several features, | |
| 18 | -such as social network, mailing list, version control, content management and | |
| 19 | -source code quality monitoring. Concerned with the platform sustainability and | |
| 20 | -maintainability, the aforementioned 10 FLOSS tools were integrated with minimum | |
| 21 | -differences from their official versions and the new developed features were | |
| 22 | -sent upstream to ensure an alignment between the portal systems and their | |
| 23 | -respective official versions. In the integration process, the main softwares | |
| 24 | -were identified, specific teams were formed to work with each one of them | |
| 25 | -and each team was composed of students with different levels of skills and at | |
| 26 | -least one senior professional. | |
| 27 | - | |
| 28 | -\textbf{Q2 -- How to involve students in real-world projects interacting with | |
| 29 | -real customers?} | |
| 30 | -% | |
| 31 | -In terms of mitigating conflicts, we tried to show that, as long as the | |
| 32 | -university can provide a healthy and challenging environment to its students, | |
| 33 | -one may conciliate studies and professional training in universities. | |
| 34 | -% | |
| 35 | -The students interacted with professionals of diverse fields of expertise, and they were | |
| 36 | -able to participate in all levels of the software development process. | |
| 37 | -This contributed to a great learning opportunity. | |
| 38 | -% | |
| 39 | -In our work process, based on open and collaborative software development | |
| 40 | -practices, students could negotiate their work schedule as well as count on IT | |
| 41 | -professionals to solve development issues. | |
| 42 | -% | |
| 43 | -Among the students, we have defined coaches for each team and a meta-coach | |
| 44 | -(coach of whole project). All coaches, together with professors, have | |
| 45 | -intermediated the communication between client (Ministry of Planning of Brazil) | |
| 46 | -and the rest of the group. | |
| 47 | -After the end of the project, some students successfully | |
| 48 | -embraced opportunities in public and private sectors, within national borders | |
| 49 | -and abroad. Some other students went further and started their own companies. | |
| 50 | - | |
| 51 | -\textbf{Q3 -- How to introduce the FLOSS collaborative and agile | |
| 52 | -practices to governmental development process?} | |
| 53 | -With some adaptations, what we called the ``translation processes'', it is feasible | |
| 54 | -to conciliate agile methodologies and FLOSS practices to develop software to | |
| 55 | -governmental organizations with functional hierarchical structures that use | |
| 56 | -traditional development paradigm. | |
| 57 | -% | |
| 58 | -Aiming at reducing client questions about workconclusion, a DevOps front was | |
| 59 | -created to automate all deploy process and also to work in continuous | |
| 60 | -delivery. The government was brought to our work environment and interacted | |
| 61 | -with our management and communication tools. For the project success, we | |
| 62 | -focused on providing a friendly working environment as well as on showing to | |
| 63 | -governmental agents another way to interact with the FLOSS community and the | |
| 64 | -university. | |
| 65 | - | |
| 66 | -\subsection{Lessons Learned} | |
| 67 | -\label{sec:lessons} | |
| 68 | - | |
| 69 | -From the answers of our initial open questions, we can also highlighted six lessons learned to make easier to share our experience during the development of the new SPB Portal. | |
| 70 | - | |
| 71 | -\textbf{L1 -- The participation of experienced professionals is crucial to | |
| 72 | -the success of the project.} | |
| 73 | -One important factor for the students was the composition of the teams | |
| 74 | -with the participation of experienced professionals. | |
| 75 | -% | |
| 76 | -On the technical side, the senior developers and designers would handle | |
| 77 | -the more difficult technical decisions, creating a work environment | |
| 78 | -where the students could develop their skills in a didactic way without | |
| 79 | -pressure. | |
| 80 | -% | |
| 81 | -On the management side, the active participation of professors -- who | |
| 82 | -are, in the end, the ones responsible for the project -- is crucial to | |
| 83 | -make sure students participation is conducted in a healthy way, and it is an | |
| 84 | -instance of leading by example. | |
| 85 | - | |
| 86 | -\textbf{L2 -- A balanced relationship between academia and industry.} | |
| 87 | -The experience of the SPB project led UnB to develop a work style which | |
| 88 | -proved to be appropriate for an educational environment that brings | |
| 89 | -academia and industry together. | |
| 90 | -% | |
| 91 | -The highest priority from the university's point of view is the | |
| 92 | -students. Considering this, the activities of the project were never | |
| 93 | -prioritized to the detriment of classes and other pedagogical | |
| 94 | -activities. In summary, we had students working at different times, part | |
| 95 | -time, remotely or locally, always respecting their individual | |
| 96 | -conditions, but doing the work in a collective, collaborative and open | |
| 97 | -way. | |
| 98 | -% | |
| 99 | -And even under a potentially adverse environment, the project delivered | |
| 100 | -the desired solution with success. | |
| 101 | -% | |
| 102 | -At the end of the project, we noted that the skills developed by the | |
| 103 | -students were at the software engineering state of the art. | |
| 104 | -After the project ended, we had team members successfully embracing | |
| 105 | -opportunities in public, private, national, and international | |
| 106 | -organizations, in addition to those students that | |
| 107 | -opened their own companies. | |
| 108 | - | |
| 109 | -\textbf{L3 -- Managing different organizational cultures.} | |
| 110 | -In the beginning of the project, the Brazilian Government stakeholders | |
| 111 | -had certain expectations about the project development that, let's | |
| 112 | -say, didn't exactly match our work style based on agile and FLOSS practices. | |
| 113 | -% | |
| 114 | -We had to develop strategies that would support these different | |
| 115 | -organizational cultures. The | |
| 116 | -MP is organized in a functional hierarchical organizational structure, | |
| 117 | -typically adopting a traditional development paradigm. Therefore, we had to | |
| 118 | -create a translation process between our team and the MP managers who | |
| 119 | -managed the project on their side assuming a traditional waterfall | |
| 120 | -process. | |
| 121 | - | |
| 122 | -\textbf{L4 -- Managing higher-level and lower-level goals separately.} | |
| 123 | -During the initial phase of the project, the MP team has brought | |
| 124 | -strategic discussions to technical/operational meetings that | |
| 125 | -were supposed to be about practical technical decisions. | |
| 126 | -% | |
| 127 | -This produced a highly complex communication and management environment, | |
| 128 | -overloading the professors because they were supposed | |
| 129 | -for maintaining the MP strategy synchronized with the | |
| 130 | -implementation plans of the development team. This was hard, especially because the | |
| 131 | -aforementioned cultural mismatch. Mixing both concerns in the same | |
| 132 | -discussions caused confusion on both sides. | |
| 133 | -% | |
| 134 | -From the middle of the project we were able to keep those | |
| 135 | -concerns separated, what eased the work of everyone involved. | |
| 136 | - | |
| 137 | -\textbf{L5 -- Living with ill-advised political decisions.} | |
| 138 | -At the initial phases of the project, by political and personal | |
| 139 | -motivation, the main stakeholders from the Brazilian government imposed | |
| 140 | -the use of Colab to guide the development of the new SPB platform. Our | |
| 141 | -team was totally against the idea because we already knew that Colab was | |
| 142 | -a very experimental project and its adoption could dramatically increase | |
| 143 | -the project complexity. Even though we provided technical reasons to | |
| 144 | -not utilize Colab, the MP was adamant and we had to manage this problem. We did massive changes to | |
| 145 | -Colab, and at the end of the project we have completely rewritten it to make | |
| 146 | -it stable. It is important to notice that the MP compelled us to accept | |
| 147 | -a technical decision based only on political interests, without considering | |
| 148 | -all the resources that would be spent due to that decision. At the end | |
| 149 | -of the project, we verified that Colab indeed consumed a vast amount of | |
| 150 | -the budget and increased the project complexity. At the end of the | |
| 151 | -project and after our analysis on the decision made by the MP, we | |
| 152 | -understand that MP managers are capable of ignoring technical reasons | |
| 153 | -in favor of political decisions. | |
| 154 | - | |
| 155 | -\textbf{L6 -- Consider sustainability from the beginning.} | |
| 156 | -In the process of deploying the SPB platform in the MP infrastructure we had | |
| 157 | -to interact with the MP technicians. We did several workshops, training | |
| 158 | -and a meticulous documentation describing all the required procedures to | |
| 159 | -update the platform, however, we realized that the MP technicians | |
| 160 | -constantly avoid the responsibility. After noticing the aforementioned | |
| 161 | -situation, we organized a DevOps team that completely automated all | |
| 162 | -the deployment procedure. We simplified all the platform deployment to a | |
| 163 | -few steps: (1) initial configurations (just ssh configuration) and (2) | |
| 164 | -the execution of simple commands to completely update the platform. By | |
| 165 | -the end of the project, we observed that the MP technicians invariably | |
| 166 | -still depended on our support to update the platform even with all the | |
| 167 | -automation provided by us. We were sadly left with a feeling of | |
| 168 | -uncertainty about the future of the platform after the project ended. In | |
| 169 | -hindsight, we realize that the MP dedicated system analysts and | |
| 170 | -managers to the project, but not operations technicians. The later | |
| 171 | -should have been more involved with the process so they could at least be | |
| 172 | -comfortable in managing the platform infrastructure. | |
| 173 | - | |
| 174 | - | |
| 175 | -\textbf{Final remarks and future work} | |
| 176 | - | |
| 177 | -The portal is available at \url{softwarepublico.gov.br}. All | |
| 178 | -documentation, including detailed architecture and operation manuals are | |
| 179 | -also available\footnote{\url{https://softwarepublico.gov.br/doc/} | |
| 180 | -(in Portuguese only at the moment)}. | |
| 181 | -% | |
| 182 | -All the integrated tools are FLOSS and our contributions were published | |
| 183 | -in open repositories, available on the SPB Portal itself. We also | |
| 184 | -contributed these features back to the respective communities, which | |
| 185 | -benefits both those communities and us, since we can share future | |
| 186 | -development and maintenance effort with other organizations that | |
| 187 | -participate in these projects. | |
| 188 | - | |
| 189 | -Future work should use data produced by the project to validate and evaluate | |
| 190 | -how the used FLOSS and Agile practices have impacted the students and the | |
| 191 | -governmental development process. For this, we would conduce a \textit{postmortem} | |
| 192 | -analysis using the project open data and a survey targeting the involved actors. | |
| 193 | - | |
| 194 | -%=========== | |
| 195 | -% Conclusion | |
| 196 | -%=========== | |
| 197 | - | |
| 198 | -% * Gestão dos recursos: Fizemos mais por menos (2.6M de 3.2M) --- sem os dados | |
| 199 | -%% (escopo, custo, tempo e qualidade) bem discutidos é difícil sustentar essa | |
| 200 | -%% afirmação, embora eu e Paulo consigamos perceber isso. | |
| 201 | - | |
| 202 | - | |
| 203 | -%* utilização do projeto para formação de recursos humanos (alunos) | |
| 204 | - | |
| 205 | -%* dados da verificação dos repositório para a análise da qualidade dos código via Mezuro e CodeClimate | |
| 206 | - | |
| 207 | -%* o que achamos que irá acontecer com o SPB no futuro breve (acabar) | |
| 208 | - | |
| 209 | -%* 69 projetos marcados como SPB, de 81 no total na plataforma. | |
| 210 | - | |
| 211 | -%* 47\% é desenvolvido em PHP. | |
| 212 | - | |
| 213 | -% 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). | |
| 214 | - | |
| 215 | -% 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}. | |
| 216 | - | |
| 217 | -% 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. | |
| 218 | - | |
| 219 | -%* Debater economia de recursos em orgão públicos | |
| 220 | - |
| ... | ... | @@ -0,0 +1,58 @@ |
| 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 | +Mezuro was completely rewritten and its architecture evolved adopting the | |
| 45 | +microservice architecture\cite{namiot2014micro}. This way, we minimize the | |
| 46 | +amount of code to maintain it, helping to test it and grant its code quality. | |
| 47 | +In practice, we modularize the Mezuro project in several independent services. | |
| 48 | +Currently, its computation and visualization modules use Kalibro and Prezento, | |
| 49 | +respectively. They were developed into the Mezuro project and evolved during | |
| 50 | +its integration to the new SPB Portal. | |
| 51 | + | |
| 52 | + | |
| 53 | +We also made some contributions on the DevOps front. Some members of | |
| 54 | +them team became maintainers of some Python libraries that were used by | |
| 55 | +our scripts to upload packages to OBS (Open Build Service). We developed | |
| 56 | +a tool called copr-status to keep track of the different stages of the | |
| 57 | +lifecycle of each of the individual packages we were working on. | |
| 58 | + | ... | ... |
opensym2017/spb.tex
| ... | ... | @@ -151,10 +151,8 @@ |
| 151 | 151 | \input{content/05-requirements} |
| 152 | 152 | \input{content/06-architecture} |
| 153 | 153 | \input{content/07-features} |
| 154 | -\input{content/08-ux} | |
| 155 | -\input{content/09-process} | |
| 156 | -\input{content/10-contributions} | |
| 157 | -\input{content/11-conclusion} | |
| 154 | +\input{content/08-process} | |
| 155 | +\input{content/09-conclusion} | |
| 158 | 156 | |
| 159 | 157 | %------------------------------------------------------------------------------ |
| 160 | 158 | \bibliographystyle{SIGCHI-Reference-Format} | ... | ... |