diff --git a/opensym2017/content/01-introduction.tex b/opensym2017/content/01-introduction.tex index a376eb7..71a876a 100644 --- a/opensym2017/content/01-introduction.tex +++ b/opensym2017/content/01-introduction.tex @@ -10,9 +10,9 @@ Government released a portal named Brazilian Public Software goal of sharing FOSS projects developed by, or for, the Brazilian Government. Additionally, the Brazilian legal instrument on software contracting (known as IN 04/2012) mandates that public agents must give -priority to solutions available in the SPB Portal. In short, the +priority to solutions available on the SPB Portal. In short, the acquisition of a proprietary solution must be explicitly justified by -demonstrating that there is no suitable alternative in the SPB Portal. +demonstrating that there is no suitable alternative on the SPB Portal. In 2013, the Brazilian Federal Court issued a ruling document (\textit{Acórdão 2314/2013}) about an audit survey regarding the use of agile methodologies in software development contracts with the public @@ -28,13 +28,15 @@ unjustifiable expending of taxpayers' money. % TODO: ^ references -Since 2009, the SPB Portal was having several technical issues. The -original codebase was not being developed anymore, and there was a large -amount of technical debt to overcome. The system was a modified version -of an existing FOSS platform called -OpenACS\footnote{\url{http://openacs.org}}, and the old SPB portal was -not being updated anymore against the official OpenACS releases. In this -scenario, the portal maintenance has become increasingly difficult. + +Since 2009, the SPB Portal was having several technical issues. The original +codebase was not being developed anymore, also, there was a large amount of +knowingly non-optimal or wrong design decisions to overcome (in other words, +technical debt \cite{refactoring}). The system was a modified version of an +existing FOSS platform called OpenACS \footnote{\url{http://openacs.org}}, and +the old SPB portal was not being updated anymore against the official OpenACS +releases. In this scenario, the portal maintenance has become increasingly +difficult. After some events and meetings to collect requirements from the federal government and from the society, a new platform for the SPB Portal was diff --git a/opensym2017/content/02-spb.tex b/opensym2017/content/02-spb.tex index 3da72d0..ace4037 100644 --- a/opensym2017/content/02-spb.tex +++ b/opensym2017/content/02-spb.tex @@ -50,11 +50,11 @@ their software available on the SPB platform. The concept of Brazilian Public Software goes beyond FOSS. In addition to being licensed under a FOSS license, a SPB needs to have explicit guarantees that it is a public good, and that project must be available -in the SPB portal. Being a true public good assumes requirements that +on the SPB portal. Being a true public good assumes requirements that can not be met solely by means of FOSS licensing. For example, there must be a relaxed trademark usage policy by the original vendor that does not stop eventual competitors from advertising services for that -same software. Inclusion in the SPB Portal also has extra requirements, +same software. Inclusion on the SPB Portal also has extra requirements, such as having a public version control system, installation manual, and hardware requirements specification. diff --git a/opensym2017/content/03-requirements.tex b/opensym2017/content/03-requirements.tex index caa4e7f..ad1b7cd 100644 --- a/opensym2017/content/03-requirements.tex +++ b/opensym2017/content/03-requirements.tex @@ -18,19 +18,19 @@ After these 3 rounds discussing the new SPB platform, the Brazilian government listed about 145 requirements and developed a ``mind map''\footnote{\url{https://softwarepublico.gov.br/social/spb/gallery/mapaconceitual.png}} to guide the SPB portal evolution. In this scenario, the 10 most voted -requirements were, for example: +requirements were: \begin{enumerate} -\item Source code repository with public access. -\item Visit community pages without login. -\item Distributed version control system. -\item Scores of users and developers collaboration. -\item Search software by features. -\item Integration with social networks. -\item Repository for future ideas and requirements. -\item Friendly URL to access a public software community page. -\item User feedback about a public software. +\item Source code repository with public access; +\item Visit community pages without login; +\item Distributed version control system; +\item Scores of users and developers collaboration; +\item Search software by features; +\item Integration with social networks; +\item Repository for future ideas and requirements; +\item Friendly URL to access a public software community page; +\item User feedback about a public software; \item Report of the experience about the use of a public software. \end{enumerate} @@ -38,7 +38,7 @@ requirements were, for example: \begin{figure}[hbt] \centering \includegraphics[width=\linewidth]{figures/technological-requirements.png} - \caption{Technological requirements overview.} + \caption{Technological requirements.} \label{fig:requirements} \end{figure} @@ -57,10 +57,10 @@ features such as: \begin{enumerate} -\item An organized public software catalog. -\item Social network environment (profiles for users, software pages, and community pages). -\item Content Management Systems (CMS) features. -\item Web-based Git repository manager with wiki and issue tracking features. +\item An organized public software catalog; +\item Social network environment (profiles for users, software pages, and community pages); +\item Content Management Systems (CMS) features; +\item Web-based Git repository manager with wiki and issue tracking features; \item Mailing lists and discussion forums. \end{enumerate} @@ -68,7 +68,7 @@ features such as: Other requirements were also planned during the conception phase of the SPB evolution project, such as an integrated search engine and a web-based source code static analysis monitor. By analyzing all of these -requirements, we proposed the technological requirements overview +requirements, we proposed the technological requirements illustrated in Figure \ref{fig:requirements} to guide the development of the new SPB platform. In other words, we have designed the SPB evolution project based on existing FOSS tools. However, the integration of diff --git a/opensym2017/content/04-architecture.tex b/opensym2017/content/04-architecture.tex index 62106d7..3bff930 100644 --- a/opensym2017/content/04-architecture.tex +++ b/opensym2017/content/04-architecture.tex @@ -48,10 +48,10 @@ the change between applications. For that, Colab provides facilities for: \begin{itemize} - \item Centralized authentication - \item Visual consistency - \item Relaying of events between applications - \item Integrated search engine + \item Centralized authentication; + \item Visual consistency; + \item Relaying of events between applications; + \item Integrated search engine. \end{itemize} Colab implements this integration by working as a reverse proxy for the @@ -86,14 +86,9 @@ representation of that user account. Colab also provides an integrated search engine, which can be configured to specify exactly what data needs to be indexed for each of the applications, and how to direct the user to that piece of information on -the specific application. - -Initially, Colab had support for a small set of applications (Trac, GNU -Mailman, and Apache Lucene) and support for them was hard-coded. Our -team evolved Colab so that it can now receive plugins that add support -new applications without the need of changes to the Colab core. We also -developed plugins to be used in the SPB platform: Noosfero, GitLab, and -Mezuro. +the specific application. Finally, our team evolved Colab so that it can now +receive plugins that add support new applications without the need of changes +to the Colab core. \subsection{Noosfero} @@ -119,9 +114,9 @@ tracking. \subsection{Mezuro} -Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code -metrics to monitor the internal quality of software written in C, C++, -Java, Python, Ruby, and PHP. +Mezuro\footnote{\url{http://mezuro.org/}} \cite{mezuro_oss} is a platform to +collect source code metrics to monitor the internal quality of software written +in C, C++, Java, Python, Ruby, and PHP. In general, source code metrics tools also do not present a friendly way to interpret its results and, even more, do not follow a standardization @@ -150,7 +145,7 @@ directing requests to one of the integrated applications. It post-processes responses from the applications to apply a consistent visual appearance, manages authentication, and provides a unified search functionality: instead of using the redundant restricted search -functionality of each application, a search in the SPB portal might +functionality of each application, a search on the SPB portal might return content from any of the applications, be it web pages, mailing list posts, or source code. diff --git a/opensym2017/content/05-features.tex b/opensym2017/content/05-features.tex index 9767637..e4aba6e 100644 --- a/opensym2017/content/05-features.tex +++ b/opensym2017/content/05-features.tex @@ -48,17 +48,19 @@ such as filters (by type of software or category), sorting and score. In order to expand the searching scope and cover more types of content, the SPB team developed the global search tool. This tool unifies search mechanisms -provided by the different collaborative software used in the SPB protal. Any user can +provided by the different collaborative software used on the SPB protal. Any user can find a public content in the context of social networking, mailing list and software development. \subsection{Software development tools} -The new SPB also provides -tools to encourage developers to keep source code and its -development activity within the platform. Any created software has, by default, a -an associated git repository with wiki pages and issue tracking. These tools are -supplied by the integration of Gitlab into the platform. +Usually, Collaborative Development Environments (CDE) demand a version control +system, trackers, build tools, knowledge centers, and communication tools +\cite{collaboration_tools}. The new SPB provides tools to encourage developers +to keep source code and its development activity within the platform as a CDE. +Every software in the platform has an associated git repository with wiki pages +and issue tracking. These tools are supplied by the integration of Gitlab into +the platform. Developers can also evaluate the software source code to measure software quality. With Mezuro, they can schedule the analysis of the source-code and follow its diff --git a/opensym2017/content/07-process.tex b/opensym2017/content/07-process.tex index 1a0871b..cd5aaaa 100644 --- a/opensym2017/content/07-process.tex +++ b/opensym2017/content/07-process.tex @@ -31,7 +31,7 @@ Development, and Management (MP is the Brazilian acronym). All the project decisions, validations, and scope definitions were made by them. In this way we developed software product incrementally, with releases aligned to business strategic objectives. As one can see, the project had many different -kinds of stakeholders that had to be organized and synchronized. +sort of stakeholders that had to be organized and synchronized. \subsection{Team organization} @@ -45,10 +45,10 @@ basic rules which guided the project organization: \begin{enumerate} \item Classes have high priority for undergraduate students; - \item Work in pairs whenever possible (locally or remotely). + \item Work in pairs whenever possible (locally or remotely); \item There must be one morning or afternoon per week when \emph{everyone} should be together physically in the laboratory - (except of course the remote team members). + (except of course the remote team members); \item Every 3 to 4 months, the senior developers would fly in and work alongside the students for a few days. \end{enumerate} @@ -100,13 +100,17 @@ seeing the screen in real time). For questions and fast discussion, we used IRC. For general notification, we used the mailing lists. For managing the project we used the SPB Portal itself; first to validate it by -ourselves, and also because it had all the required tools. We basically created -one wiki page per release in the SPB Gitlab instance with a mapping between -strategical, tactical, and operational views. In a practical point of view, one -milestone per user history (feature), and one or more issues for addressing -each feature. With this approach we achieved two important goals: keeping all -the management as close possible to to the source code, and tracking every -feature developed during the project. +ourselves; second, there is scientific evidence that tools similar to GitHub +\cite{opensourcestyle} (Gitlab in our case) can support Collaborative +Development Practices. We created one wiki page per release in the SPB (Gitlab) +with a mapping between strategical, tactical, and operational views. In a +practical point of view, one milestone per user history (feature), and one or +more issues for addressing each feature. With this approach, we achieved two +important goals: keeping all the management as close possible to the source +code and tracking every feature developed during the project. Our decision to +use Wiki initially was empirical, but later reinforced by a research conducted +by Joseph Chao showing the advantage of using Wikis \cite{chao2007student, +opensourcestyle}. \subsection{High-level project management and reporting} @@ -128,7 +132,7 @@ diagram that represents our meeting organization. \begin{figure}[hbt] \centering \includegraphics[width=\linewidth]{figures/meeting_flows.png} - \caption{Meetings cycles} + \caption{Meetings cycles.} \label{fig:meeting} \end{figure} @@ -160,15 +164,19 @@ To keep the track of all of those things we used the SPB itself, especially Gitlab. Basically, we had: \begin{enumerate} - \item Project repository: We have one organization with many repositories - \item Milestones: Each milestone was used to register a release + \item Project repository: We have one organization with many repositories; + \item Milestones: Each milestone was used to register a release; \item Wiki: Each release has one page on wiki with the compilation of - strategical meeting + strategical meeting; \item Issues: Each sprint planning generated issues, which we associated to the specific milestone and updated the wiki with the issue number related with them. Finally each developer assigned the issue to itself. \end{enumerate} -Notice that this workflow gave us and the Brazilian government agents -full traceability from a high level view of each feature to the lowest -level (code). +Notice that this workflow gave us and the Brazilian government agents full +traceability from a high level view of each feature to the lowest level (code). +It is important to highlight that we converge to this workflow after many +experiments. For example, we used a tool named Redmine for organizing our tasks +during the sprints, however, this tool revealed inefficient for our case since +the government agents lost part of the project traceability. We realized that +centralize all the work in the SPB portal is the best option for our case. diff --git a/opensym2017/content/09-lessons.tex b/opensym2017/content/09-lessons.tex index dd3839d..53b72ce 100644 --- a/opensym2017/content/09-lessons.tex +++ b/opensym2017/content/09-lessons.tex @@ -12,7 +12,7 @@ UnB. % They interacted with professionals that had diverse expertises, and were able to participate in all levels of the software development process. -This contribted to a great learning opportunity, and for a majority of +This contributed to a great learning opportunity, and for a majority of them this was their first professional experience. \textbf{The participation of experienced professionals is crucial to diff --git a/opensym2017/content/10-conclusion.tex b/opensym2017/content/10-conclusion.tex index fe65a0b..ca5669d 100644 --- a/opensym2017/content/10-conclusion.tex +++ b/opensym2017/content/10-conclusion.tex @@ -3,12 +3,12 @@ In this paper we present and discuss issues experienced during a government- funded project, in partnership with University of Brasilia and University of -São Paulo, to evolve the Brazilian Public Software portal. +São Paulo, to evolve the Brazilian Public Software portal. The contributions of this paper are twofold. First, we present how was -developed an unprecedent platform, delivered to Brazilian government. This -platform - developed by an heterogenous team of professors, master and -undergraduate students, IT professionals and governmental managers - provides +developed an unprecedented platform, delivered to Brazilian government. This +platform - developed by an heterogeneous team of professors, master and +undergraduate students, IT professionals and governmental managers - provides several modern features from the integration of more than 10 FLOSS systems. Second, the 30 months project which developed this platform, results in an @@ -21,6 +21,16 @@ embraced opportunities in public and private sectos, within national borders and abroad. Some others went further and started their own companies. We also shown that, with some adaptations/"translation processes", was possible -to conciliate agile methodologies and FOSS practices to develop software to -governmental organizations with functional hierarchical structures that use +to conciliate agile methodologies and FOSS practices to develop software to +governmental organizations with functional hierarchical structures that use traditional development paradigm. + +The SPB project represented an opportunity for us to apply many of our belief +related to FLOSS and Agile Method. We put an enormous effort to create a +friendly environment for everybody involved in the project, and for showing to +the government another way to interact with FLOSS community and university. Our +work style was extremely open and we tried to be transparent for the entire +society. As a consequence, we believe that we still need to investigate more +all the data produced by the project and the impacts on the students. We +expected to conduct a post-mortem analyze in the project since we have many +open data and we applied many concepts that still extra validation. diff --git a/opensym2017/spb.bib b/opensym2017/spb.bib index 650e431..ac60e0f 100644 --- a/opensym2017/spb.bib +++ b/opensym2017/spb.bib @@ -257,3 +257,58 @@ note = {In: 2020 FLOSS Roadmap}, year = {2008} } + +@book{refactoring, + title={Refactoring for software design smells: Managing technical debt}, + author={Suryanarayana, Girish and Samarthyam, Ganesh and Sharma, Tushar}, + year={2014}, + publisher={Morgan Kaufmann} +} + +@article{mezuro_oss, + title={Mezuro: Understanding source code metrics}, + author={Guedes and Meirelles and Manzo and Camarinha}, + journal={International Conference on Open Source Systems}, + volume={01}, + year={2017}, + publisher={OSS} +} + +@article{collaboration_tools, + title={Collaboration tools for global software engineering}, + author={Lanubile, Filippo and Ebert, Christof and Prikladnicki, Rafael and Vizca{\'\i}no, Aurora}, + journal={IEEE software}, + volume={27}, + number={2}, + year={2010}, + publisher={IEEE} +} + +@inproceedings{chao2007student, + title={Student project collaboration using Wikis}, + author={Chao, Joseph}, + booktitle={Software Engineering Education \& Training, 2007. CSEET'07. 20th Conference on}, + pages={255--261}, + year={2007}, + organization={IEEE} +} + +@article{parker2007wiki, + title={Wiki as a teaching tool}, + author={Parker, Kevin and Chao, Joseph}, + journal={Interdisciplinary Journal of e-learning and Learning Objects}, + volume={3}, + number={1}, + pages={57--72}, + year={2007}, + publisher={Informing Science Institute} +} + +@inproceedings{opensourcestyle, + title={Open source-style collaborative development practices in commercial projects using github}, + author={Kalliamvakou, Eirini and Damian, Daniela and Blincoe, Kelly and Singer, Leif and German, Daniel M}, + booktitle={Proceedings of the 37th International Conference on Software Engineering-Volume 1}, + pages={574--585}, + year={2015}, + organization={IEEE Press} +} -- libgit2 0.21.2