\section{Contributing with Free Software Communities} \label{sec:contributions} %- projeto feito do jeito certo com relação ao software livre (contribuições upstream etc) %* Colab -> RevProxy %* Colab, atualização do python/django %* Contribuições para o GitLab (autenticação) %* Noosfero, atualização do Rails, preparação para federação, nova interface ... %* Coper, empacotamentos (obs), omniauth During the execution of this project we made several contributions from different levels to the communities we interacted with. This occurred due to our development process aligned with those of the respective communities. We used to discuss with upstream the features and bug fixes that we was working on, this kind of discussion improve the developers' technical solutions and allowed upstream to accept our contribution more easily. In Colab we helped upstream to redesign the entirely architecture, enabling the development of plugins to integrate new tools. We also added a feature that allowed Colab to run asynchronous tasks, which was a major improvement for us since we were developing a complex system. A migration to the latest Django version was made (web framework used by Colab). Moreover, we worked on RevProxy (the greatest Colab dependency) to put it in a good shape, fixing many bugs. Gitlab was the tool that we made the least number of modifications. We contributed with some improvements related with configuration files and we developed a new omniauth plugin, which enables the user authentication in Gitlab via REMOTE\_USER HTTP header. This omniauth plugin was needed because Colab uses this mechanism to manage the authentication. Noosfero was the tool that contemplated several functional requirements, therefore we made a large number of contributions with upstream. We helped to migrate to the latest Rails version (web framework used by Noosfero), enable the federation implementation (federation with other social networks), decouple the interface and the back-end, and so forth. We also contributed with some DevOps tools as well during the project. Some member of our team took the maintenance of some python libraries that we used to support our scripts to upload our packages to OBS (Open Build Service). Since we were composed by many teams with large number of developers we had some problems related with the tracking of our per team/software releases, the DevOps team did not know when was the right time to package that software or not. Thus we developed a tool called copr-status to keep tracked the version packaged and the version finished by the developers, basically this is a web interface that helps you to visualize the status of that package/software.