diff --git a/opensym2017/content/01-introduction.tex b/opensym2017/content/01-introduction.tex index a376eb7..38e61da 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 diff --git a/opensym2017/content/02-spb.tex b/opensym2017/content/02-spb.tex index 3da72d0..dd07508 100644 --- a/opensym2017/content/02-spb.tex +++ b/opensym2017/content/02-spb.tex @@ -50,7 +50,7 @@ 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 diff --git a/opensym2017/content/04-requirements.tex b/opensym2017/content/04-requirements.tex index 7cb5aa0..4d0da46 100644 --- a/opensym2017/content/04-requirements.tex +++ b/opensym2017/content/04-requirements.tex @@ -18,27 +18,27 @@ 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 Report of the experience about the use of 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} \begin{figure}[hbt] \centering \includegraphics[width=\linewidth]{figures/technological-requirements.png} - \caption{Technological requirements overview.} + \caption{Technological requirements.} \label{fig:requirements} \end{figure} @@ -57,18 +57,18 @@ 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 Mailing lists and discussion forums. +\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} 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/05-architecture.tex b/opensym2017/content/05-architecture.tex index ff74bfc..0df272a 100644 --- a/opensym2017/content/05-architecture.tex +++ b/opensym2017/content/05-architecture.tex @@ -50,17 +50,17 @@ for: \begin{itemize} \item \textit{Centralized authentication}: Users are automatically identified for each application without having to enter login -credentials on each of them. +credentials on each of them; \item \textit{Visual consistency}: Colab is able to change the HTML code produced by the integrated applications, such as defining default template or reusing common HTML pages, in order to provide a unified -interface. +interface; \item \textit{Relaying of events between applications}: The integrated applications or Colab itself are able to trigger an action -on another application. +on another application; \item \textit{Integrated search engine}: It is possible to set up exactly which data needs to be indexed from each application and how -users are directed to this information on correspondent application. +users are directed to this information on correspondent application; \end{itemize} Colab implements this integration by working as a reverse proxy for the @@ -70,9 +70,7 @@ Colab before reaching them. 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. +new applications without the need of changes to the Colab core. \subsection{Noosfero} @@ -98,9 +96,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 @@ -129,7 +127,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 o n 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/06-features.tex b/opensym2017/content/06-features.tex index 9767637..8291cc7 100644 --- a/opensym2017/content/06-features.tex +++ b/opensym2017/content/06-features.tex @@ -48,12 +48,15 @@ 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 portal. Any user can find a public content in the context of social networking, mailing list and software development. \subsection{Software development tools} +Usually, Collaborative Development Environments (CDE) demand a version control +system, trackers, build tools, knowledge centers, and communication tools +\cite{collaboration_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 diff --git a/opensym2017/content/08-process.tex b/opensym2017/content/08-process.tex index 1a0871b..82781d2 100644 --- a/opensym2017/content/08-process.tex +++ b/opensym2017/content/08-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} @@ -106,7 +106,10 @@ 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. +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 +131,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 +163,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/10-lessons.tex b/opensym2017/content/10-lessons.tex index dd3839d..53b72ce 100644 --- a/opensym2017/content/10-lessons.tex +++ b/opensym2017/content/10-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/11-conclusion.tex b/opensym2017/content/11-conclusion.tex index fe65a0b..2879fc9 100644 --- a/opensym2017/content/11-conclusion.tex +++ b/opensym2017/content/11-conclusion.tex @@ -11,7 +11,7 @@ platform - developed by an heterogenous 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 +Second, the 30 months project which developed this platform results in an important case that it is possible to mitigate issues seen as conflicting to IT development environment and between industry and academy. We shown that, as long as the institution can provide a healthy and challenging environment to @@ -19,8 +19,17 @@ its students, its is possible to conciliate studies and professional training in universities. After the end of the project, some students successfully 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 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..d206202 100644 --- a/opensym2017/spb.bib +++ b/opensym2017/spb.bib @@ -197,22 +197,15 @@ year = {2003} } -@inproceedings{chao2007, - added-at = {2015-11-18T00:00:00.000+0100}, - author = {Chao, Joseph}, - biburl = {https://www.bibsonomy.org/bibtex/261af946a27913bd7eab12c1e6aa3db3a/dblp}, - booktitle = {CSEET}, - ee = {http://doi.ieeecomputersociety.org/10.1109/CSEET.2007.49}, - interhash = {9d86cf791b047bb6d9484c32cfa0ee92}, - intrahash = {61af946a27913bd7eab12c1e6aa3db3a}, - isbn = {0-7695-2893-7}, - keywords = {dblp}, - pages = {255-261}, - publisher = {IEEE Computer Society}, - timestamp = {2015-11-19T11:37:24.000+0100}, - title = {Student Project Collaboration Using Wikis.}, +@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}, url = {http://dblp.uni-trier.de/db/conf/csee/csee2007.html}, - year = {2007} + publisher = {IEEE Computer Society}, + organization={IEEE} } @inproceedings{tosi2015, @@ -257,3 +250,50 @@ 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} +} + +@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