There are two objects that are globals in Conan: one output object and one requester. It makes sense because during the same execution we want those to be consistent, we want the same output object for the code run by Conan itself and the code that is written/invoked in the recipe.
So, Conan at the very beginning of each command creates an output and a requester, and passes them to every function and object, on the other hand, we want the user to know nothing about them and keep using
tools.get(...), so we need global variables unless
tools is an object itself.
This projects groups all the work related to this objective.