\section{Architecture} The two main requirements provided by the Brazilian Federal Government for the new platform were: % 1) \textit{Integrate existing FOSS systems}, with minimal differences from their original versions. This way, the platform can benefit from improvements done by the upstream communities that provide those systems, and the maintenance effort that is specific for the SPB Portal should be reduced; % and 2) \textit{Provide a consistent user interface} across the different systems, as well as centralized authentication. The first requirement was accomplished by dedicating specialized teams for each system that was being integrated. The teams would learn how to develop their assigned systems, and contribute the necessary features directly to the original communities, so that the version we used was not significantly different from the original. Of course, at times project deadlines forced us to use our own version before tho features were fully reviewed and integrated upstream to the original projects, but we managed to contribute the vast majority of the changes back. For the second requirement, we integrated a web integration platform called Colab\footnote{\url{https://github.com/colab/colab}}. Colab serves as a frontend for other web applications as a reverse proxy, manages authentication, and can apply changes to the HTML provided by the integrated applications in order to provide visual consistency. Colab had support for an initial set of applications (Trac, GNU Mailman, Apache Lucene) hard-coded; our team evolved Colab so that it can now receive plugins to add support for new applications with minimal changes to its existing core. We added support for the other applications used in the SPB platform: Noosfero, GitLab, and Mezuro. Noosfero\footnote{\url{http://noosfero.org/}} is a software for building social and collaboration networks. Besides the classical social networking features, it also provides publication features such as blogs and a general-purpose CMS (Content Management System). Most of the user interactions with SPB is through Noosfero: user registration, project home pages and documentation, and contact forms. GitLab\footnote{\url{http://gitlab.com/}} is a web-based Git repository manager with wiki pages and issue tracking features. Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code metric to monitor the internal quality of softwares written in C, C++, Java, Python, Ruby, and PHP. GNU Mailman is used for mailing lists. \begin{figure}[hbt] \centering \includegraphics[width=.6\linewidth]{figures/arch.png} \caption{SPB Portal Architecture.} \label{fig:architecture} \end{figure} The conceptual architecture of the platform is presented in Figure \ref{fig:architecture}. Colab initially handles all user interaction, 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 return content from any of the applications, be it web pages, mailing list posts, or source code.