Commit 44ea36946704e2600acf2a73e3922a5054712f24

Authored by Paulo Meireles
1 parent 139ada8a

[i3eSW] Re-organizing the references and the all source-text

ieeeSW/releaseEng3/IEEE_ThemeIssue_ReleaseEng_CD.md
... ... @@ -2,25 +2,100 @@
2 2  
3 3 ## Abstract
4 4  
5   -Many software development teams think of the operational aspects of Continuous Delivery (CD) and the competitive benefits that come along with it. For us, it was much more: it was a survival technique. This article presents the experience applying CD in a Brazilian Government project for the development of a Collaborative Development Environment, sharing its unconventional challenges and our strategies used to overcome them. This report from the trenches of the Brazilian Federal Government can help practitioners to understand how important the CD adoption is to their projects.
  5 +Many software development teams think of the operational aspects of Continuous
  6 +Delivery (CD) and the competitive benefits that come along with it. For us, it
  7 +was much more: it was a survival technique. This article presents the
  8 +experience applying CD in a Brazilian Government project for the development of
  9 +a Collaborative Development Environment (CDE), sharing its unconventional
  10 +challenges and our strategies used to overcome them. This report from the
  11 +trenches of the Brazilian Federal Government can help practitioners to
  12 +understand how important the CD adoption is to their projects.
6 13  
7 14 ## Introduction and Context
8 15  
9   -We have worked on a Brazilian government three-year-long project to evolve an existing platform that had technical issues and a lack of political support. The evolution project started in a presidential election year and everyone involved were under Presidential re-election campaign pressure to show results. Even with the re-election of the Brazilian President in 2014, leadership in government agencies suddenly changed, what was worsened by corruption scandals revealed by the Brazilian Federal police, in particular the Car-Wash investigation (FOOTNOTE). That reflected on the project’s requirements: each new leader wanted to fulfill their political agenda. In this scenario, delivery delays could have sunk the project into oblivion.
10   -
11   -From 2014 to 2016, our team developed the new platform for the Brazilian Public Software (SPB, Portuguese acronym) Portal (www.softwarepublico.gov.br) funded by a grant of 2,619,965.00 BRL (about 1.000,000.00 USD in January 2014) from the Federal Government. The SPB Portal has evolved to a Collaborative Development Environment (CDE)[1] and this evolution has brought important benefits not just to the Brazilian government , but also to society as a whole. For the government, the bureaucracy on using the same software across government agencies, duplicate works and costs all are reduced. The society gains a transparency and collaboration mechanism, since anyone can check the government expenses on software and contribute to the software communities. To achieve these goals, we have chosen to integrate more than free software tools (such as Gitlab (www.gitlab.com), Mailman (www.gnu.org/software/mailman), Noosfero (www.noosfero.org), and Colab (www.github.com/colab)) rather than write everything from scratch.
12   -
13   -During the entire SPB Portal evolution project, we had to handle three distinct issues, usual in a software engineering scenario: reaching the goals which have guided the platform development, managing the diversity of team project members, and communicating effectively with clients (in this particular case, government agents). Managing the interaction of these elements was not easy and the unstable Brazilian political scenario only made things worse.
14   -
15   -To reaching the SPB project goals, we had to overcome strong political bias tied with complicated technical issues and relatively low budget. Because it is open to the public, the government representatives have seen the platform as a opportunity of marketing and have often ignored the technical advice in favor of political decisions. Furthermore, integrating a number of distinct systems to work seamlessly was not an easy job. We had to learn how each system worked and come up with ideas of how to integrate them as fast as possible, with a team of mostly inexperienced developers.
16   -
17   -We also had to manage the diversity of the SPB team members. This team was composed of approximately 50 undergraduate students (not all simultaneously) together with professors, masters students and professional designers as well as senior developers from the Brazilian free software community. Undergraduate students have received a fellowship and, for most of them, this R&D project was their first professional experience. Seniors developers and masters students had two important contributions to the project: transfer knowledge to undergraduate students and address hard tasks. Finally, professors were responsible for interacting with the Brazilian government and control the political pressures applied to the project.
18   -
19   -Our third point to be handled was the communication with the two independent groups of government representatives: requirements analysts and deployment technicians. Requirements analysts were the real representatives of the Brazilian government in the project. They usually tested new features, provided feedback, and reported for directors. The deployment technicians only had the access to the host machines wherein SPB platform was running. They were, theoretically, responsible for deploying the project. However, the new SPB Portal was composited from more than ten different software projects, generating a complex deploy process working on seven servers.
20   -
21   -Therefore, we realised that we needed to take control over the deployment process. We would use CD as a mean to keep the government satisfied and provide quick response times to their requests which were, most of the time, influenced by the uncertainties of project continuity. We believed that would keep the project alive even in an politically unstable and complex technical scenario. For that, during months we have worked to automate all the deploy process. For instance, we have created a tool called Shak (Self Hosting Applications Kit) that offers an application installation with only instruction. It aims to make the deploy process easier for users without technical knowledge, ensuring privacy and security for their Internet applications. Thereby, we created a specific team dedicated to the deployment process to mature our CD pipeline that would give us confidence to meet the government’s requirements faster and faster.
22   -
23   -We describe our CD pipeline and how it speeded up our software delivery time. The CD made us adaptable for all requested changes and helped us to mitigate those aforementioned political challenges besides the technical issues. Among CD’s known benefits[2], we also explain those that were the most important in the project scenario for us: improving customer satisfaction and making reliable releases. Both kept the project alive for more two years during the worst political crisis after the re-democratization in Brazil.
  16 +We have worked on a Brazilian government three-year-long project to evolve an
  17 +existing platform that had technical issues and a lack of political support.
  18 +The evolution project started in a presidential election year and everyone
  19 +involved were under Presidential re-election campaign pressure to show results.
  20 +Even with the re-election of the Brazilian President in 2014, leadership in
  21 +government agencies suddenly changed, what was worsened by corruption scandals
  22 +revealed by the Brazilian Federal police, in particular the "Car-Wash"
  23 +investigation. That reflected on the project’s requirements: each new leader
  24 +wanted to fulfill their political agenda. In this scenario, delivery delays
  25 +could have sunk the project into oblivion.
  26 +
  27 +From 2014 to 2016, our team developed the new platform for the Brazilian Public
  28 +Software (SPB, Portuguese acronym) Portal (www.softwarepublico.gov.br) funded
  29 +by a grant of 2,619,965.00 BRL (about 1.000,000.00 USD in January 2014) from
  30 +the Federal Government. The SPB Portal has evolved to a CDE [1] and this
  31 +evolution has brought important benefits not just to the Brazilian government ,
  32 +but also to society as a whole. For the government, the bureaucracy on using
  33 +the same software across government agencies, duplicate works and costs all are
  34 +reduced. The society gains a transparency and collaboration mechanism, since
  35 +anyone can check the government expenses on software and contribute to the
  36 +software communities. To achieve these goals, we have chosen to integrate more
  37 +than free software tools (such as Gitlab (www.gitlab.com), Mailman
  38 +(www.gnu.org/software/mailman), Noosfero (www.noosfero.org), and Colab
  39 +(www.github.com/colab)) rather than write everything from scratch.
  40 +
  41 +During the entire SPB Portal evolution project, we had to handle three distinct
  42 +issues, usual in a software engineering scenario: reaching the goals which have
  43 +guided the platform development, managing the diversity of team project
  44 +members, and communicating effectively with clients (in this particular case,
  45 +government agents). Managing the interaction of these elements was not easy and
  46 +the unstable Brazilian political scenario only made things worse.
  47 +
  48 +To reaching the SPB project goals, we had to overcome strong political bias
  49 +tied with complicated technical issues and relatively low budget. Because it is
  50 +open to the public, the government representatives have seen the platform as a
  51 +opportunity of marketing and have often ignored the technical advice in favor
  52 +of political decisions. Furthermore, integrating a number of distinct systems
  53 +to work seamlessly was not an easy job. We had to learn how each system worked
  54 +and come up with ideas of how to integrate them as fast as possible, with a
  55 +team of mostly inexperienced developers.
  56 +
  57 +We also had to manage the diversity of the SPB team members. This team was
  58 +composed of approximately 50 undergraduate students (not all simultaneously)
  59 +together with professors, masters students and professional designers as well
  60 +as senior developers from the Brazilian free software community. Undergraduate
  61 +students have received a fellowship and, for most of them, this R&D project was
  62 +their first professional experience. Seniors developers and masters students
  63 +had two important contributions to the project: transfer knowledge to
  64 +undergraduate students and address hard tasks. Finally, professors were
  65 +responsible for interacting with the Brazilian government and control the
  66 +political pressures applied to the project.
  67 +
  68 +Our third point to be handled was the communication with the two independent
  69 +groups of government representatives: requirements analysts and deployment
  70 +technicians. Requirements analysts were the real representatives of the
  71 +Brazilian government in the project. They usually tested new features, provided
  72 +feedback, and reported for directors. The deployment technicians only had the
  73 +access to the host machines wherein SPB platform was running. They were,
  74 +theoretically, responsible for deploying the project. However, the new SPB
  75 +Portal was composited from more than ten different software projects,
  76 +generating a complex deploy process working on seven servers.
  77 +
  78 +Therefore, we realised that we needed to take control over the deployment
  79 +process. We would use CD as a mean to keep the government satisfied and provide
  80 +quick response times to their requests which were, most of the time, influenced
  81 +by the uncertainties of project continuity. We believed that would keep the
  82 +project alive even in an politically unstable and complex technical scenario.
  83 +For that, during months we have worked to automate all the deploy process. For
  84 +instance, we have created a tool called Shak (Self Hosting Applications Kit)
  85 +that offers an application installation with only instruction. It aims to make
  86 +the deploy process easier for users without technical knowledge, ensuring
  87 +privacy and security for their Internet applications. Thereby, we created a
  88 +specific team dedicated to the deployment process to mature our CD pipeline
  89 +that would give us confidence to meet the government’s requirements faster and
  90 +faster.
  91 +
  92 +We describe our CD pipeline and how it speeded up our software delivery time.
  93 +The CD made us adaptable for all requested changes and helped us to mitigate
  94 +those aforementioned political challenges besides the technical issues. Among
  95 +CD’s known benefits[2], we also explain those that were the most important in
  96 +the project scenario for us: improving customer satisfaction and making
  97 +reliable releases. Both kept the project alive for more two years during the
  98 +worst political crisis after the re-democratization in Brazil.
24 99  
25 100 ## Our Continuous Delivery Pipeline
26 101  
... ... @@ -30,7 +105,9 @@ We describe our CD pipeline and how it speeded up our software delivery time. Th
30 105  
31 106 [//]: # (TODO - Rever essa frase - é uma legenda da imagem?)
32 107  
33   -Figure X represents our CD pipeline. After each release, we have defined a set of features we would develop to comply with government’s requirements and then we have followed this pipeline.
  108 +Figure X represents our CD pipeline. After each release, we have defined a set
  109 +of features we would develop to comply with government’s requirements and then
  110 +we have followed this pipeline.
34 111  
35 112 ### Automated tests
36 113  
... ... @@ -38,17 +115,34 @@ Figure X represents our CD pipeline. After each release, we have defined a set o
38 115 [//]: # (TODO - Adicionar que as mudanças no Colab quebravam todos os plugins.)
39 116 [//]: # (https://www.linux.com/blog/learn/chapter/dev-ops/2017/7/devops-fundamentals-part-3-continuous-delivery-and-deployment)
40 117  
41   -The SPB portal is composed of a set of FOSS systems. All of them have their own automated test suite. So, we encouraged the teams to keep unit tests coverage high for each system. We implemented the systems integration using a plugin architecture and wrote integration tests to check if they were working properly. The plugin architecture made the PSPB’s components decoupled. That allowed us to be confident that changes on one system would not affect others. This characteristic allowed the test execution of only the component with changes instead of the entire system.
42   -
43   -Our CD’s first step was to execute each system’s automated test suite. If any error was found, the pipeline stopped and the developers were notified. Only after all tests passed we move to preparing the release.
44   -Preparing a new release
45   -
46   -Our release system was divided into two perspectives: the application and the PSPB. The application tag refers to the specific feature or bug fix and is a monotonically increasing. A new tag on any system yielded a new PSPB tag.
47   -
48   -When all tests passed for a given component, we manually created a new application tag for it. As a consequence, that automatically created a new tag for the PSPB. Notice that we have forks of the original softwares and, as consequence, we had different tag values.
49   -Packaging
50   -
51   -The PSPB platform is running under the CentOS GNU/Linux distribution. Basically, packaging a software for that distribution has three steps: (1) write the script for the specific environment (RPM), (2) build the package, and (3) upload it to a package repository. We chose to package our components for several reasons:
  118 +The SPB portal is composed of a set of FOSS systems. All of them have their own
  119 +automated test suite. So, we encouraged the teams to keep unit tests coverage
  120 +high for each system. We implemented the systems integration using a plugin
  121 +architecture and wrote integration tests to check if they were working
  122 +properly. The plugin architecture made the PSPB’s components decoupled. That
  123 +allowed us to be confident that changes on one system would not affect others.
  124 +This characteristic allowed the test execution of only the component with
  125 +changes instead of the entire system.
  126 +
  127 +Our CD’s first step was to execute each system’s automated test suite. If any
  128 +error was found, the pipeline stopped and the developers were notified. Only
  129 +after all tests passed we move to preparing the release. Preparing a new
  130 +release
  131 +
  132 +Our release system was divided into two perspectives: the application and the
  133 +PSPB. The application tag refers to the specific feature or bug fix and is a
  134 +monotonically increasing. A new tag on any system yielded a new PSPB tag.
  135 +
  136 +When all tests passed for a given component, we manually created a new
  137 +application tag for it. As a consequence, that automatically created a new tag
  138 +for the PSPB. Notice that we have forks of the original softwares and, as
  139 +consequence, we had different tag values. Packaging
  140 +
  141 +The PSPB platform is running under the CentOS GNU/Linux distribution.
  142 +Basically, packaging a software for that distribution has three steps: (1)
  143 +write the script for the specific environment (RPM), (2) build the package, and
  144 +(3) upload it to a package repository. We chose to package our components for
  145 +several reasons:
52 146 * Not all software was packaged by the community;
53 147 * And those that existed were outdated;
54 148 * Packaging makes it easy to manage the software on a given distribution;
... ... @@ -56,28 +150,49 @@ The PSPB platform is running under the CentOS GNU/Linux distribution. Basically,
56 150 * Packaging follows the distribution’s best practices and,
57 151 * Allows configurations and permissions control.
58 152  
59   -After creating a new tag for one component, the DevOps team was notified and packaging process began. In the normal case, the three packaging steps aforementioned are fully automated by a set of scripts. However, if the team reports to DevOps any eventual dependency change, the first step has to be manual. For instance, one system could start requiring another system to be initialized and that made necessary for someone to manually update the package script.
  153 +After creating a new tag for one component, the DevOps team was notified and
  154 +packaging process began. In the normal case, the three packaging steps
  155 +aforementioned are fully automated by a set of scripts. However, if the team
  156 +reports to DevOps any eventual dependency change, the first step has to be
  157 +manual. For instance, one system could start requiring another system to be
  158 +initialized and that made necessary for someone to manually update the package
  159 +script.
60 160  
61   -After all these scripts have run successfully, the new packages would be ready to use by our subsequent deployment scripts.
  161 +After all these scripts have run successfully, the new packages would be ready
  162 +to use by our subsequent deployment scripts.
62 163  
63 164 ### Validation Environment
64 165  
65 166 [//]: # (TODO - Mencionar que a ferramenta era baseada em Chef - Dá um peso importante.)
66 167  
67   -The Validation Environment (VE) is a replica of the Production Environment (PE), with two exceptions: only the government officers and us had access to it and all the data is anonymised. To configure the environment, we use a configuration management tool. That maintained environment consistency which makes the deployment process simpler. Additionally, the packages we built on the last step were readily available to use by the management tool.
  168 +The Validation Environment (VE) is a replica of the Production Environment
  169 +(PE), with two exceptions: only the government officers and us had access to it
  170 +and all the data is anonymised. To configure the environment, we use a
  171 +configuration management tool. That maintained environment consistency which
  172 +makes the deployment process simpler. Additionally, the packages we built on
  173 +the last step were readily available to use by the management tool.
68 174  
69   -The VE was used by the government agents to validate new features and required changes. Also, the VE was useful to verify the integrity of the entire portal as part of the next step in the pipeline.
70   -Acceptance Tests
  175 +The VE was used by the government agents to validate new features and required
  176 +changes. Also, the VE was useful to verify the integrity of the entire portal
  177 +as part of the next step in the pipeline. Acceptance Tests
71 178  
72   -After we completely deploy a new PSPB version in the VE, the government agents are responsible for checking features and/or bug fixes required by them. If the technicians identify a problem, they notify the developers, the problems are fixed and the pipeline restarts from scratch. If everything is validated, we move to production deployment.
73   -Production Deployment
  179 +After we completely deploy a new PSPB version in the VE, the government agents
  180 +are responsible for checking features and/or bug fixes required by them. If the
  181 +technicians identify a problem, they notify the developers, the problems are
  182 +fixed and the pipeline restarts from scratch. If everything is validated, we
  183 +move to production deployment. Production Deployment
74 184  
75   -After the government authorizes the VE, we can finally begin the production deployment. We use the same configuration management tool with the same scripts. After the deploy is completed, both VE and PE are on the same state. The new features and bug fixes are finally available to end users.
  185 +After the government authorizes the VE, we can finally begin the production
  186 +deployment. We use the same configuration management tool with the same
  187 +scripts. After the deploy is completed, both VE and PE are on the same state.
  188 +The new features and bug fixes are finally available to end users.
76 189  
77 190  
78 191 ## Benefits
79 192  
80   -We had to handle many tensions between development and political issues. Our CD pipeline gave us strong mechanisms to tackle most of the problems. As a result we came with some benefits from our decision to adopt CD.
  193 +We had to handle many tensions between development and political issues. Our CD
  194 +pipeline gave us strong mechanisms to tackle most of the problems. As a result
  195 +we came with some benefits from our decision to adopt CD.
81 196  
82 197 [//]: # (TODO - Melhorar título - Ideias: Response to mistrust)
83 198  
... ... @@ -85,27 +200,58 @@ We had to handle many tensions between development and political issues. Our CD
85 200  
86 201 [//]: # (TODO - Decisão do secretario acima do diretor)
87 202  
88   -The direct benefit from the CD pipeline was the fast response to the changes required by the government. That was vital for the project’s renewal over the years. We could manage the tension between the government and the development team better. Every meeting with the government leader was delicate and resulted on many new requirements, most of them motivated by political needs. For example, once it was demanded a completely layout change because one director suddenly decided to make a marketing campaign about the portal. They would use undelivered requirements as a means to suggest the project’s cancellation. We believed that if we took too long to attend their demands, the project would end. CD helped us to move fast on deploying to production, even of smaller parts of the requirements. That way, we always had something to show on the meetings, reducing their eagerness to end the project. For our team, it made the developers more confident the project would last a little longer and they would not go looking for another jobs.
  203 +The direct benefit from the CD pipeline was the fast response to the changes
  204 +required by the government. That was vital for the project’s renewal over the
  205 +years. We could manage the tension between the government and the development
  206 +team better. Every meeting with the government leader was delicate and resulted
  207 +on many new requirements, most of them motivated by political needs. For
  208 +example, once it was demanded a completely layout change because one director
  209 +suddenly decided to make a marketing campaign about the portal. They would use
  210 +undelivered requirements as a means to suggest the project’s cancellation. We
  211 +believed that if we took too long to attend their demands, the project would
  212 +end. CD helped us to move fast on deploying to production, even of smaller
  213 +parts of the requirements. That way, we always had something to show on the
  214 +meetings, reducing their eagerness to end the project. For our team, it made
  215 +the developers more confident the project would last a little longer and they
  216 +would not go looking for another jobs.
89 217  
90 218 ### Build client’s trust
91 219  
92   -After we established the CD, the government agents started to be more confident in our work. First, because they noticed that each new deploy made by us in the VE was stable and reliable. Second, they could see new features fast since we constantly updated the VE based on their feedback. This made our relation strong and in moments that needed quick action they would rather give us access to production.
  220 +After we established the CD, the government agents started to be more confident
  221 +in our work. First, because they noticed that each new deploy made by us in the
  222 +VE was stable and reliable. Second, they could see new features fast since we
  223 +constantly updated the VE based on their feedback. This made our relation
  224 +strong and in moments that needed quick action they would rather give us access
  225 +to production.
93 226  
94 227  
95 228 ## Challenges
96 229  
97   -We successfully built a functional CD pipeline. In the end, we took over the deployment process from the government. That allowed us to survive into an unstable political scenario. However, we recognized that many challenges still need to be addressed by the industry and academia together.
98   -Build CD from scratch
  230 +We successfully built a functional CD pipeline. In the end, we took over the
  231 +deployment process from the government. That allowed us to survive into an
  232 +unstable political scenario. However, we recognized that many challenges still
  233 +need to be addressed by the industry and academia together. Build CD from
  234 +scratch
99 235  
100   -Taking on CD responsibilities had a significant impact on the team. We did not have the know-how and had little time to come up with a working pipeline. To make things worse, we were not aware of how companies normally organized their teams to make CD feasible.
  236 +Taking on CD responsibilities had a significant impact on the team. We did not
  237 +have the know-how and had little time to come up with a working pipeline. To
  238 +make things worse, we were not aware of how companies normally organized their
  239 +teams to make CD feasible.
101 240  
102 241 [//]: # (TODO - Deixar uma abertura para uma eventual pesquisa)
103 242  
104   -The seniors were crucial at this point. They came up with an initial solution to get us started. That already enabled us to automatize the deploy, even though the process was still rudimentary. We had to evolve our solution on-the-fly. We dedicated a few developers to this task.
  243 +The seniors were crucial at this point. They came up with an initial solution
  244 +to get us started. That already enabled us to automatize the deploy, even
  245 +though the process was still rudimentary. We had to evolve our solution
  246 +on-the-fly. We dedicated a few developers to this task.
105 247  
106 248 ### Handling inexperienced teams
107 249  
108   -After the developers learned how CD worked, it was difficult to pass the knowledge along to other teammates. We tried to mitigate this by encouraging a member's migration to the DevOps team. Further research on how to effectively spread knowledge across inexperienced developers in a scenario with a high turnover are needed.
  250 +After the developers learned how CD worked, it was difficult to pass the
  251 +knowledge along to other teammates. We tried to mitigate this by encouraging a
  252 +member's migration to the DevOps team. Further research on how to effectively
  253 +spread knowledge across inexperienced developers in a scenario with a high
  254 +turnover are needed.
109 255  
110 256 [//]: # (TODO - Refazer título abaixo - ideias: overcoming the challenges / overcoming the mistrust)
111 257  
... ... @@ -113,14 +259,23 @@ After the developers learned how CD worked, it was difficult to pass the knowled
113 259  
114 260 [//]: # (TODO - Deixar claro que government = os técnicos , análista ou agentes do governo, conforme for padronizado no texto)
115 261  
116   -In the project’s first half we struggled with deploy related problems in the government structure. We were in a paradoxical situation. The government demanded speedy deliveries but would not give access to their production infrastructure. As an example, only in a very specific situation the government allowed us to access the PE. After some interactions with the government we convinced them to create the VE as an isolated replica of the PE in their own infrastructure. The government agents then realized that it could be good for the project if they granted us access to part of the structure since we could deliver new features to them faster. We believe it is required more research on development protocols and policies to improve the relation between industry and government, specially regarding CD.
  262 +In the project’s first half we struggled with deploy related problems in the
  263 +government structure. We were in a paradoxical situation. The government
  264 +demanded speedy deliveries but would not give access to their production
  265 +infrastructure. As an example, only in a very specific situation the government
  266 +allowed us to access the PE. After some interactions with the government we
  267 +convinced them to create the VE as an isolated replica of the PE in their own
  268 +infrastructure. The government agents then realized that it could be good for
  269 +the project if they granted us access to part of the structure since we could
  270 +deliver new features to them faster. We believe it is required more research on
  271 +development protocols and policies to improve the relation between industry and
  272 +government, specially regarding CD.
117 273  
118 274  
119 275 ## References
120 276  
121   -1. Collaborative Development Environment (TO-DO REF)
122   -1. L. Chen, "Continuous Delivery: Huge Benefits, but Challenges Too," in IEEE Software, vol. 32, no. 2, pp. 50-54, Mar.-Apr. 2015.
123   -1. "Brazilian Public Software Portal: an integrated platform for collaborative development", in OpenSym ’17, August 23–25, 2017, Galway, Ireland.
124   -
  277 +1. G. Booch, A. W. Brown, "Collaborative Development Environments, in Advances in Computers", vol. 59, 2003, pp. 1–27.
  278 +1. L. Chen, "Continuous Delivery: Huge Benefits, but Challenges Too", in IEEE Software, vol. 32, no. 2, 2015, pp. 50-54.
  279 +1. P. Meirelles, M. Wen, A. Terceiro, R. Siqueira, L. Kanashiro, and H. Neri, "Brazilian Public Software Portal: an integrated platform for collaborative development", in Proceedings of the 13th International Symposium on Open Collaboration, 2017.
125 280  
126 281  
... ...