Carbon emissions#
Why#
The argopy team is concerned about the environmental impact of your favorite software development activities. See for instance our position on AI powered contributions to argopy.
Starting June 1st 2024, we’re experimenting with the Green Metrics Tools from Green Coding to get an estimate of the energy used and CO2eq emitted by our development activities on Github infrastructure.
This experiment shall help us understand the carbon emissions of our digital activities in order to minimize it.
Results#
All data are public and can be obtained with the Green Coding API or simply with the argopy argopy.utils.GreenCoding class.
You can also check the detailed Green-Coding Monitoring dashboards in here:
Note that these dashboards are for activities in the master branch. But all branches are monitored as well.
Branch metrics can be summed to compute each new release specific impact. We make it easy to access this information with the argopy.utils.GreenCoding class.
from argopy.utils import GreenCoding
GreenCoding().measurements(branch='master', start_date='2025-01-01', end_date='2025-01-31')
GreenCoding().total_measurements(branches=['385/merge', '437/merge'])
GreenCoding().footprint_since_last_release()
GreenCoding().footprint_for_release('v1.0.0')
GreenCoding().footprint_baseline()
This class is currently used in the monitoring framework of Argo APIs in here.
Methodology#
Our continuous integration pipeline works with Github Actions that operate on Microsoft Azure VMs. For each run, we use the Eco-CI Energy Estimation tool to monitor CPU usage. Based on the type of machine and their location, a model is used to predict the energy consumed. Then, an estimate at the machine location of the electric grid carbon impact is obtained from Electricity Maps and finally a carbon footprint is obtained. This method is based on a peer-reviewed research paper.
In argopy we furthermore categorise each Github Actions run, in order to get an easier understanding of our software development and maintenance footprint. We do it along the categorisation principle shown in figure Fig. 2. The carbon footprint for each category in then easily accessible with the argopy.utils.GreenCoding class.
Fig. 2 Schematic showing how each commit and corresponding workflows are categorised by the argopy.utils.GreenCoding class.#