Commit ec1ea2cba7a141303faeccd1d4d81ee368eb66f6

Authored by Paulo Meireles
2 parents fadd8b51 e531f1c0

Merge branch 'master' of http://softwarepublico.gov.br/gitlab/softwarepublico/articles

opensym2017/content/05-features.tex
1 \section{Features} 1 \section{Features}
2 \label{sec:spb} 2 \label{sec:spb}
3 3
4 -The new generation of the SPB portal combines adapted features of existing collaborative softwares 4 +The new generation of the SPB portal combines features adapted from existing collaborative software
5 and features developed by the SPB team. Whenever possible, new functions 5 and features developed by the SPB team. Whenever possible, new functions
6 -(newly developed or partially modified) were sent to official repositories, as a contribution. 6 +(newly developed or partially modified) were contributed back to the official repositories.
7 7
8 As a result, we have a platform that integrates and harmonizes different features such as 8 As a result, we have a platform that integrates and harmonizes different features such as
9 social networking, mailing list, version control system, content management and 9 social networking, mailing list, version control system, content management and
10 source code quality monitoring. Our aim was to develop functionalities by reusing 10 source code quality monitoring. Our aim was to develop functionalities by reusing
11 -functions of collaborative softwares already integrated to the platform. In 11 +functionality of collaborative software already integrated to the platform. In
12 addition, we tried to keep this integration transparent to end users. 12 addition, we tried to keep this integration transparent to end users.
13 13
14 \subsection{Software and Software Community} 14 \subsection{Software and Software Community}
@@ -17,47 +17,47 @@ In the new SPB portal, each software has a standard set of pages and tools. @@ -17,47 +17,47 @@ In the new SPB portal, each software has a standard set of pages and tools.
17 Besides accessing support pages (such as FAQ and installation guide) within the platform, users will be able to download 17 Besides accessing support pages (such as FAQ and installation guide) within the platform, users will be able to download
18 different versions of the software and find several mechanisms of software development management. 18 different versions of the software and find several mechanisms of software development management.
19 19
20 -Focusing on the collaborative development, the Mailman was integrated to the platform in order to allow 20 +Focusing on the collaborative development, Mailman was integrated to the platform in order to allow
21 the dialogue and communication between developers, users and 21 the dialogue and communication between developers, users and
22 enthusiasts of a determined software. The software has its own mailing list whose privacy 22 enthusiasts of a determined software. The software has its own mailing list whose privacy
23 can be configured/set by administrators. 23 can be configured/set by administrators.
24 24
25 -The software has a social interface area (aka "software community") where users can find other users, blogs, 25 +The software has a social interface area ("software community") where users can find other users, blogs,
26 summary of recent activities, or any other relevant community-produced content. 26 summary of recent activities, or any other relevant community-produced content.
27 Users logged to the platform can request membership to different software communities 27 Users logged to the platform can request membership to different software communities
28 and each community member can access and edit restricted content. For this purpose, 28 and each community member can access and edit restricted content. For this purpose,
29 -many Noosfero features related to social network and content management was integrated to the portal. 29 +many Noosfero features related to social networking and content management were integrated to the portal.
30 30
31 To assist decision-making, the new SPB has acquired assessment and statistical 31 To assist decision-making, the new SPB has acquired assessment and statistical
32 tools. Now, users will be able to rate the software and make comments and all 32 tools. Now, users will be able to rate the software and make comments and all
33 information will be avaiable to other users. Moreover, the software has a section 33 information will be avaiable to other users. Moreover, the software has a section
34 -containing its statistical data, where values are calculated through data 34 +containing its statistical data, where values are calculated based on data
35 provided by users and the system. 35 provided by users and the system.
36 36
37 The role of the administrator will be present in the software and in its community. The 37 The role of the administrator will be present in the software and in its community. The
38 administrator is responsible for moderating content, memberships and user 38 administrator is responsible for moderating content, memberships and user
39 -comments. He is also the one who can make changes in the software homepage 39 +comments. The administrator is also the one who can make changes in the software homepage
40 content. 40 content.
41 41
42 \subsection{Software Catalog and global search} 42 \subsection{Software Catalog and global search}
43 43
44 The platform also provides a search tool called Software Catalog, 44 The platform also provides a search tool called Software Catalog,
45 -which allows users to find softwares available in its directory. 45 +which allows users to find softwares available in the portal.
46 In this catalog, some search options were developed to make the navigation easier, 46 In this catalog, some search options were developed to make the navigation easier,
47 such as filters (by type of software or category), sorting and score. 47 such as filters (by type of software or category), sorting and score.
48 48
49 In order to expand the searching scope and cover more types of content, the SPB team 49 In order to expand the searching scope and cover more types of content, the SPB team
50 developed the global search tool. This tool unifies search mechanisms 50 developed the global search tool. This tool unifies search mechanisms
51 -provided by the mentioned collaborative softwares. Any user can  
52 -find a public content in the context of social network, mailing list and 51 +provided by the different collaborative software used in the SPB protal. Any user can
  52 +find a public content in the context of social networking, mailing list and
53 software development. 53 software development.
54 54
55 \subsection{Software development tools} 55 \subsection{Software development tools}
56 56
57 The new SPB also provides 57 The new SPB also provides
58 -tools to encourage developers to keep each source code and its  
59 -developments within the platform. Any created software has, by default, a  
60 -related git repository with wiki pages and issues tracking. These tools are 58 +tools to encourage developers to keep source code and its
  59 +development activity within the platform. Any created software has, by default, a
  60 +an associated git repository with wiki pages and issue tracking. These tools are
61 supplied by the integration of Gitlab into the platform. 61 supplied by the integration of Gitlab into the platform.
62 62
63 Developers can also evaluate the software source code to measure software 63 Developers can also evaluate the software source code to measure software
@@ -67,7 +67,7 @@ public, which allows greater transparency between the developer and the @@ -67,7 +67,7 @@ public, which allows greater transparency between the developer and the
67 community that uses the software. Thereby, the maintainers can decide if the 67 community that uses the software. Thereby, the maintainers can decide if the
68 given solution meets the source code quality requirements. 68 given solution meets the source code quality requirements.
69 69
70 -Thus, the SPB becomes a platform to stimulate the openness of the source code; 70 +Thus, the SPB becamr a platform to stimulate the openness of the source code;
71 dialogue between users and the development team; and also 71 dialogue between users and the development team; and also
72 maintenance and evolution of the software, which will provide more 72 maintenance and evolution of the software, which will provide more
73 transparency in government investments. 73 transparency in government investments.
opensym2017/content/07-process.tex
@@ -5,19 +5,19 @@ The SPB team was composed of a variety of professionals with different levels @@ -5,19 +5,19 @@ 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 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 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 7 not dedicate many hours per week to the project, they always had the
8 -flexibility to negotiate their work schedule during the semester in order not  
9 -to cause any damage to their grades. Their daily work routine in the project  
10 -included programming and devops tasks. 8 +flexibility to negotiate their work schedule during the semester in
  9 +order to not harm their classes and coursework. Their daily work routine
  10 +in the project included programming and devops tasks.
11 11
12 The development of SPB project required a vast experience and background that 12 The development of SPB project required a vast experience and background that
13 -usually undergraduate students do not have yet. For this reason, some senior  
14 -developers have joined to the project to help with hard issues and to transfer 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 and to transfer
15 knowledge to the students. Their main task was to provide solutions for complex 15 knowledge to the students. Their main task was to provide solutions for complex
16 -problems, in other words, they worked as a developer. As these professionals 16 +problems, in other words, they worked as developers. As these professionals
17 are very skillful and the project could not fund a full time work for them, 17 are very skillful and the project could not fund a full time work for them,
18 some of them worked partially on the project. In addition, they lived in a 18 some of them worked partially on the project. In addition, they lived in a
19 different states spread around Brazil which led much of the communication to be 19 different states spread around Brazil which led much of the communication to be
20 -made via Internet. 20 +online.
21 21
22 In short, our work process was based on open and collaborative software 22 In short, our work process was based on open and collaborative software
23 development practices. The development process was defined based on the 23 development practices. The development process was defined based on the
@@ -26,70 +26,104 @@ high degree of automation resulting from DevOps practices. Thus, the work @@ -26,70 +26,104 @@ high degree of automation resulting from DevOps practices. Thus, the work
26 process was executed in a cadenced and continuous way. 26 process was executed in a cadenced and continuous way.
27 27
28 Finally, the last group of actors of this project was composed of employees 28 Finally, the last group of actors of this project was composed of employees
29 -formally working for the Brazilian government, in the Ministery of Planning,  
30 -Development, and Management (MP is the Brazilian acronyms). All the project 29 +formally working for the Brazilian government, in the Ministry of Planning,
  30 +Development, and Management (MP is the Brazilian acronym). All the project
31 decisions, validations, and scope definitions were made by them. In this way we 31 decisions, validations, and scope definitions were made by them. In this way we
32 -developed software product increments, releases, aligned with business  
33 -strategic objectives. As can be seen, the project had many kinds of profiles  
34 -that had to be organized and synchronized. 32 +developed software product incrementally, with releases aligned to business
  33 +strategic objectives. As one can see, the project had many different
  34 +kinds of stakeholders that had to be organized and synchronized.
35 35
36 -\subsection{Teams organizations} 36 +\subsection{Team organization}
37 37
38 Approximately 70\% of the development teams were composed of software 38 Approximately 70\% of the development teams were composed of software
39 -engineering undergraduate students from UnB and they worked physically in the  
40 -same laboratory in the opposite of the senior. Each student had their own  
41 -scheduler based on their class, it made complicated to implement pair  
42 -programming. Also, they had a different area of interests. To cope with those  
43 -diversity, we had two basic rules which guided the project organization: 39 +engineering undergraduate students from UnB and they worked physically
  40 +in the same laboratory. Each student had their own schedule based on
  41 +their classes, what complicates the implementation of pair programming.
  42 +The senior developers tried to synchronize their schedule with the
  43 +students on their sub-team. To cope with this environment, we had a few
  44 +basic rules which guided the project organization:
44 45
45 \begin{enumerate} 46 \begin{enumerate}
46 - \item Classes have to be the high priority for undergraduate students;  
47 - \item Always work in pair (locally or remotely). 47 + \item Classes have high priority for undergraduate students;
  48 + \item Work in pairs whenever possible (locally or remotely).
  49 + \item There must be one morning or afternoon per week when
  50 + \emph{everyone} should be together physically in the laboratory
  51 + (except of course the remote team members).
  52 + \item Every 3 to 4 months, the senior developers would fly in and work
  53 + alongside the students for a few days.
48 \end{enumerate} 54 \end{enumerate}
49 55
50 -With the aforementioned rules we divided all the project into four different  
51 -teams: Colab, Noosfero, Design, and DevOps. Each team had one coach responsible  
52 -for reducing the communication problem with the other teams and help the  
53 -members to organize itself in the best way for everyone (always respecting the  
54 -work time). The coach, was a normal student working in some of the teams with  
55 -the extra duty of register the current tasks developed in the sprint and with  
56 -the responsibility to talk with other teams. One important thing to notice is  
57 -the mutability of the team and the coach, during the project many students  
58 -changed between the teams to try different areas.  
59 -  
60 -One characteristic of the teams was the presence of (at least) one senior per  
61 -team. This was essential, because hard decisions and complex problems were  
62 -usually addressed to them, this relieved the coach duty to take a complicated  
63 -technical decisions and encouraged students to be a coach. Lastly, the senior  
64 -had to respect a rule number two and work with students, this was important to  
65 -gave the undergraduate the opportunity to interact with a savvy professional in  
66 -his area and keeping the knowledge flow in the project.  
67 -  
68 -Finally, we had to add two last elements of the team organization, that was  
69 -essential for the project harmony: the meta-coach and professors. The former  
70 -was a software engineer recently graduated and which wanted to keep working on  
71 -the project, the latter were professors that orchestrated all the interactions  
72 -between all members of the project. The meta-coach usually worked in one  
73 -specific team and had the extra task of knowing the current status of all  
74 -teams. Professors and meta-coaches worked together to reduce the communication  
75 -problem between all the teams. Lastly, all the bureaucracy tasks was  
76 -centralized in the professors.  
77 -  
78 -\subsection{Meetings}  
79 -  
80 -Brazilian government used to work with software development in a very  
81 -traditional way, frequently they claim on documents and does not focus on what  
82 -really matter (running software). This way of thinking caused to us a  
83 -communication noise with MP, because they constantly tried to leverage on our  
84 -work style. It was especially hard to convince them to accept the idea of open  
85 -scope and agile development, but after months of labor and showing results they  
86 -stopped resisting.  
87 -  
88 -We defined some level of meeting granularity to avoid to generate overheads to  
89 -the developers. We had a strategical and validating meeting with MP (the  
90 -former once in a month and the latter each 15th day), release plaining with the  
91 -entire team (one per month), and finally a sprint planning (one each 15th day).  
92 -Figure \ref{fig:meeting} is a diagram that represents our meeting organization. 56 +With the aforementioned rules we divided all the project into four
  57 +different teams: Colab, Noosfero, Design, and DevOps. Each team had one
  58 +coach responsible for reducing the communication problem with the other
  59 +teams and help the members to organize themselves in the best way for
  60 +everyone (always respecting their work time). The coach was one of the
  61 +students working in some of the teams with the extra duty of registering
  62 +the current tasks developed in the sprint and with the responsibility to
  63 +talk with other teams. One important thing to notice is the mutability
  64 +of the team and the coach, during the project many students changed
  65 +between the teams to try different areas.
  66 +
  67 +One characteristic of the teams was the presence of (at least) one
  68 +senior per team. This was essential, because hard decisions and complex
  69 +problems were usually referred to them. This kept having to take
  70 +complicated technical decisions from the coach tole, what encouraged
  71 +students to be coaches. Lastly, the senior developers worked directly
  72 +with the students, and this was important to give the undergraduate the
  73 +opportunity to interact with a savvy professional in his area and to
  74 +keep the knowledge flowing in the project.
  75 +
  76 +Finally, we had to add two last elements of the team organization, that
  77 +was essential for the project harmony: the meta-coach and professors.
  78 +The former was a software engineer recently graduated and which wanted
  79 +to keep working on the project, the latter were professors that
  80 +orchestrated all the interactions between all members of the project.
  81 +The meta-coach usually worked in one specific team and had the extra
  82 +task of knowing the current status of all teams. Professors and
  83 +meta-coaches worked together to reduce the communication problem between
  84 +all the teams. Lastly, all the paperwork tasks, such as reporting on the
  85 +project progress to the Ministry, was handled by the professors.
  86 +
  87 +\subsection{Communication and management}
  88 +
  89 +Our team had many people working together, and most of the seniors worked in a
  90 +different city remotely. Also, we tried to keep our work completely clear to
  91 +the Brazilian government and citizens interested in following the project. To
  92 +handle those cases, we used a set of tools to communication and other to manage
  93 +the project.
  94 +
  95 +For communication between member in different places, we used: Google
  96 +handouts with tmate, IRC, and mailing lists. When one student had to
  97 +work in pair with a senior, normally, they used Google hangout for
  98 +communication and they shared a terminal session with tmate which allow
  99 +them to share the same terminal, with both typing and seeing the screen.
  100 +For questions and fast discussion, we used IRC. For general
  101 +notification, we used the mailing lists.
  102 +
  103 +For managing the project we used the SPB Portal itself; first to
  104 +validate it by ourselves, and also because it had all the required
  105 +tools. We basically created one wiki page per release Gitlab, one
  106 +milestone per sprint, and one or more issues for addressing each
  107 +feature. With this approach we achieved two important goals: keeping all
  108 +the management as close possible to to the source codem, and tracking
  109 +every feature developed during the project.
  110 +
  111 +\subsection{High-level project management and reporting}
  112 +
  113 +The Brazilian government used to work with software development in a
  114 +very traditional way. They would frequently focus on documents and not
  115 +on what was, in our opinion, what really matters: working software. This
  116 +dissonance caused us a communication noise with MP, because they would
  117 +often question our work style. It was especially hard to convince them
  118 +to accept the idea of open scope and agile development, but after months
  119 +of labor and showing results they stopped resisting.
  120 +
  121 +We defined some level of meeting granularity to avoid generating too
  122 +much overhead to the developers. We had a strategical and validating
  123 +meeting with MP (the former once in a month and the latter each 15th
  124 +day), release plaining with the entire team (one per month), and finally
  125 +a sprint planning (one each 15th day). Figure \ref{fig:meeting} is a
  126 +diagram that represents our meeting organization.
93 127
94 \begin{figure}[hbt] 128 \begin{figure}[hbt]
95 \centering 129 \centering
@@ -98,36 +132,36 @@ Figure \ref{fig:meeting} is a diagram that represents our meeting organization. @@ -98,36 +132,36 @@ Figure \ref{fig:meeting} is a diagram that represents our meeting organization.
98 \label{fig:meeting} 132 \label{fig:meeting}
99 \end{figure} 133 \end{figure}
100 134
101 -In the strategical meeting we usually defined the priorities and new features  
102 -with the Brazilian government (we always had to negotiate next steps with  
103 -them). Normally the professors, the coach of each team, the meta-coach, and  
104 -some employees of the MP join in this meeting. We usually discussed what the  
105 -team already produced since our last meeting, and we establish the new features  
106 -for the next release. Notice that just part of the team join in this meeting  
107 -to avoid generating unnecessary overhead to the developers, but all the  
108 -students interested to participate was allowed to join (many students wanted  
109 -this experience during the project). 135 +In the strategical meeting we usually defined the priorities and new
  136 +features with the Brazilian government. Normally the professors, the
  137 +coach of each team, the meta-coach, and some employees of the MP would
  138 +participate in this meeting. We usually discussed what the team already
  139 +produced since our last meeting, and established the new features for
  140 +the next release. Notice that just part of the team would join this
  141 +meeting to avoid generating unnecessary overhead to the developers, but
  142 +all the students interested to participate were allowed to join (many
  143 +students wanted this experience during the project).
110 144
111 After the strategical meeting with Brazilian government agents, we had a 145 After the strategical meeting with Brazilian government agents, we had a
112 planning turn with all teams together. In this part, each team worked together 146 planning turn with all teams together. In this part, each team worked together
113 -to convert the MP wishes into small parts which was represented by the epics of 147 +to convert the MP wishes into smaller parts which were represented by the epics of
114 the release. Each coach was responsible for conducting the planning, and after 148 the release. Each coach was responsible for conducting the planning, and after
115 -that register it on the project wiki (the wiki provided by Gitlab). With this 149 +that record it on the project wiki (the wiki provided by Gitlab). With this
116 epic, each 14th day the team have generated their sprint scheduler (with small 150 epic, each 14th day the team have generated their sprint scheduler (with small
117 -achievements mapped in issues). 151 +achievements mapped to issues).
118 152
119 -To keep the Brazilian government always updated, we invited them to work with  
120 -us to validate the new features in progress. Normally we had a meeting each  
121 -15th day. Basically, this was our work flow, we always kept everything  
122 -extremely open to the MP (our way of work and open source projects) and to the  
123 -team. 153 +To keep the Brazilian government always updated, we invited them to work
  154 +with us to validate the new features in progress. Normally we had a
  155 +meeting each 15th day. Basically, this was our work flow, we always kept
  156 +everything extremely open to the MP (our way of working, and the one
  157 +often used by open source projects) and to the team.
124 158
125 -To keep the track of all of those things we used the SPB, especially the  
126 -Gitlab. Basically, we had: 159 +To keep the track of all of those things we used the SPB itself,
  160 +especially Gitlab. Basically, we had:
127 161
128 \begin{enumerate} 162 \begin{enumerate}
129 \item Project repository: We have one organization with many repositories 163 \item Project repository: We have one organization with many repositories
130 - \item Milestones: Each milestone is used to register a release 164 + \item Milestones: Each milestone was used to register a release
131 \item Wiki: Each release has one page on wiki with the compilation of 165 \item Wiki: Each release has one page on wiki with the compilation of
132 strategical meeting 166 strategical meeting
133 \item Issues: Each sprint planning generated issues, which we associated to 167 \item Issues: Each sprint planning generated issues, which we associated to
@@ -135,32 +169,6 @@ Gitlab. Basically, we had: @@ -135,32 +169,6 @@ Gitlab. Basically, we had:
135 with them. Finally each developer assigned the issue to itself. 169 with them. Finally each developer assigned the issue to itself.
136 \end{enumerate} 170 \end{enumerate}
137 171
138 -Notice that this workflow gave to us and to the Brazilian government agents a  
139 -full traceability from high view of the feature to the low view (code). This  
140 -provided to them a way to validate all worked done and proof the concept that  
141 -work with open source project can give a proper view to them check.  
142 -  
143 -\subsection{Tools for communication and management}  
144 -  
145 -Our team had many people worked together, and most of the seniors worked in a  
146 -different city remotely. Also, we tried to keep our work completely clear to  
147 -the Brazilian government and citizens interested in follow the project. To  
148 -handle those cases, we used a set of tools to communication and other to manage  
149 -the project.  
150 -  
151 -For communication between member in different places, we used: google-talk with  
152 -tmate, IRC, and mailing-list. When one student had to work in pair with a  
153 -senior, normally, they used google-hangout for communication and they shared a  
154 -session with tmate which allow them to share the same terminal. For questions  
155 -and fast discussion, we used IRC. For general notification, we used the  
156 -mailing-list.  
157 -  
158 -For managing the project we used the SPB Portal to validate it by ourselves and  
159 -because it had all the required tools. We basically create one wiki page per  
160 -release in Gitlab, one milestone per sprint, and one or more issues for address  
161 -one user history. With this approach we achieve two important things: keep all  
162 -the management close to the source code and tracked every feature developed by  
163 -the project.  
164 -  
165 -%TODO: Ainda falta adicionar a parte da visita dos seniors e o turno sagrado  
166 - 172 +Notice that this workflow gave us and the Brazilian government agents
  173 +full traceability from a high level view of each feature to the lowest
  174 +level (code).