\section{Requirements and Related Projects} \label{sec:requirements} In 2013, the SPB Portal had more than 600 thousand unique visitors, generating more than 16 million page views with about 50 million hits. By evaluating only the main projects, there were more than 15 thousand downloads and 4 thousand messages exchanged in their forums. These data illustrates the potential of the SPB Portal, even with several limitations in the past. By preparing the evolution project described in this paper, the Brazilian government promoted 3 events to collect the requirements, in particular from society point of view: (i) an online form to collect general ideas; (ii) a face-to-face meeting with society in general; (iii) a workshop to review the SPB concepts and requirements with IT stakeholders from the Brazilian government and public organizations. 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: \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. \end{enumerate} \begin{figure}[hbt] \centering \includegraphics[width=\linewidth]{figures/technological-requirements.png} \caption{Technological requirements overview.} \label{fig:requirements} \end{figure} There were other requirements based on the experience of the IT stakeholders from the Brazilian government and from the Brazilian FOSS community (that UnB and USP were representing too in this project). The new platform would only work properly if there is a unique authentication to use the provided tools. Additionally, a unified interface was an important non-functional requirement to have a better user experience in the new platform. At the first moment, we desired to release an initial version that could replace the old SPB portal. For that, the first version should have 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. \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 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 several existing systems that were already implemented in different programming languages and frameworks, adding features such as a centralized authentication, unified interface, and a search engine, as well as, other back-end features, would require a non-trivial amount of work. The new SPB platform is a fully integrated environment, as we can see in Figure \ref{fig:requirements}, being very advanced in comparison with related projects and initiatives. For example, the USA government has a platform designed to improve access to the federal government developed software\footnote{\url{https://code.gov}}. Code.gov is an interface to organize the USA government projects and, in short, make it easy for users and developers to obtain information and access their source code repositories at GitHub. However, there are not social networking and CMS features, as well as, other communication resources provided by that platform. Additionally, there are two initiatives in Europe: OSOR\footnote{\url{https://joinup.ec.europa.eu/community/osor}} and OW2\footnote{\url{http://ow2.org}}. The Open Source Observatory (OSOR) is a community hosted in the JoinUp platform powered by the European Commission. OSOR aims at exchanging information, experiences and best practices around the use of FOSS in the public administration. It helps to find a FOSS made available by other public administrations, providing access to information such as news, events, studies and solutions related to implementation of open source software. It also offers forum discussions and community mailing lists, but it does not have an integrated source code repository manager and for the each project there is a link to its own external repository (or its tarball file). % OW2 is a FOSS community to promote the development of FOSS middleware, generic business applications, cloud computing platforms and foster a community and business ecosystem. In short, it aims to support the development, deployment and management of distributed applications with a focus on FOSS middleware and related development and management tools. % Moreover, from the European Commission in 2007 until 20011, there was the QualiPSo project that aimed at providing FOSS users, developers, and consumers, with quality resources and expertise on the various topics related to FOSS. The QualiPSo project also had planned to develop a platform called QualiPSo Factory but it was not fully completed. In Latin American there is an initiative based on the SPB project called ``Software Publico Regional''\footnote{\url{http://softwarepublicoregionalbeta.net}}. From a practical point of view, it provides a customized Gitlab instance to share the source code and documentation of the project from the involved countries. % Like Brazil, Chile has its own portal also called ``Software Publico''\footnote{\url{http://www.softwarepublico.gob.cl}}. Users can create content in the communities (news items, documents, wiki pages), but source code repositories are available at the Bitbucket platform\footnote{\url{https://bitbucket.org/softwarepublico}}. The Brazilian government needed to evolve the SPB project that existed since 2005. In 2013, when we started this project, the SPB Portal had about 200 thousand registered users. We could not just contact these users and ask them to register an account at Github as well. Moreover, after the Edward Snowden case, the Brazilian government approved a specific law decree (8.135/2013) to rule its communication services, requiring the public administration to host its information systems to be provided by itself, what rules out usage of private platforms, specially ones provided by foreign companies. We thus developed our own solution to cover all the requirements, producing a complete governmental integrated platform for collaborative software development.