\section{Contributions to the upstream 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 to
the upstream communities we interacted with. This occurred due to our
development process aligned with those of the respective communities.
During development, we would explicitly discuss  the features and bug
fixes that we were working on with the applicable upstream communities.
This contributed to improve the developers technical solutions with
expertise outside of our team, and make it easier for those changes to
be accepted in the original projects. Having changes accepted upstream
in turn makes our life easier as it minimizes the delta between our
codebase and upstream's allowing us to upgrade and benefit from
development work from others.

In Colab, we helped upstream 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 more important dependency
of Colab) 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 plugin that enables user authentication in Gitlab
through the REMOTE\_USER HTTP header. This 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 made some contributions on the DevOps front. Some members of
them team became maintainers of some python libraries that were used by
our scripts to upload packages to OBS (Open Build Service). We developed
a tool called copr-status to keep track of the different stages of the
lifecycle of each of the individual packages we were working on.

%TODO: Mezuro

