Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub Green Software Project: Request for Feedback #124

Closed
abbitude opened this issue Sep 11, 2024 · 3 comments
Closed

GitHub Green Software Project: Request for Feedback #124

abbitude opened this issue Sep 11, 2024 · 3 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@abbitude
Copy link

abbitude commented Sep 11, 2024

Project Context

GitHub Green Software Directory: We are launching the GitHub Green Software Directory as a simple and easy-to-use resource that developers can use to adopt green software tools. The format is a simple list-style blog post and a GitHub repository that we hope developers can use to get started with, navigate, and scale their green software efforts.

We are finalizing the draft and preparing for a launch on Sep 17th prior to the Green IO conference.

Feedback Request

Questions for your review:
Is there any information in this outline that seems to be missing or feel 'off'?
Are there any green software tools that are clearly missing from our blog post list?
Any other general feedback?

Deadline: Looking for feedback by EOD Friday, Sept. 13.

Outline of GitHub Green Software Directory

  • Blog Post

Context around climate change and “green software”
Links to key industry references
A select set of repos, with descriptions/screenshots, that we selected based on:
Is related to and self-identifies as tool for “green software” (or topics that fall within green software, based on industry definitions)
A GitHub community favorite as measured by Number of Stars
Link to GitHub Repository version of the directory

  • GitHub Repository

A longer list of green software repos
Includes some categorization by topics within green software, such as: measurement, carbon efficiency, carbon awareness

Blog Post

Below is the repo list to be featured in the blog post:

Repo Notes Num Stars Num Watchers Num Forks
https://github.com/hubblo-org/scaphandre ⚡ Energy consumption metrology agent. Let "scaph" dive and bring back the metrics that will help you make your systems and applications more sustainable ! 1500 22 102
https://github.com/sustainable-computing-io/kepler Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe performance counters and other system stats, use ML models to estimate workload energy consumption based on these stats, and exports them as Prometheus metrics 1100 24 171
https://github.com/mlco2/codecarbon Track emissions from Compute and recommend ways to reduce their impact on the environment.Also highlight: https://github.com/mlco2/impact 1100 19 167
https://github.com/kube-green/kube-green A K8s operator to reduce CO2 footprint of your clusters 947 12 60
https://github.com/cloud-carbon-footprint/cloud-carbon-footprint Cloud Carbon Footprint is a tool to estimate energy use (kilowatt-hours) and carbon emissions (metric tons CO2e) from public cloud usage 880 31 290
https://github.com/Green-Software-Foundation/carbon-aware-sdk The Carbon Aware SDK is a toolset to help you measure the carbon emissions of your software, in turn helping you measure and reduce your software's carbon emissions, and choose when and where you run your software to make it greener.Also highlight: https://github.com/Green-Software-Foundation/if 455 26 97
https://github.com/thegreenwebfoundation/co2.js/ An npm module for accessing the green web API, and estimating the carbon emissions from using digital services.Also highlight: https://github.com/thegreenwebfoundation/green-cost-explorerhttps://github.com/thegreenwebfoundation/grid-intensity-go 381 16 47
https://github.com/lfwa/carbontracker Track and predict the energy consumption and carbon footprint of training deep learning models. 356 12 28
https://github.com/Breakend/experiment-impact-tracker The experiment-impact-tracker is meant to be a simple drop-in method to track energy usage, carbon emissions, and compute utilization of your system. 266 9 31
https://github.com/kerneltuner/kernel_tuner Create optimized GPU applications in any mainstream GPU programming language (CUDA, HIP, OpenCL, OpenACC). 266 9 46
https://github.com/green-coding-solutions/green-metrics-toolhttps://github.com/green-coding-solutions/eco-ci-energy-estimation The Green Metrics Tool is a developer tool indented for measuring the energy and CO2 consumption of software through a software life cycle analysis (SLCA).Eco-CI is a project aimed at estimating energy consumption in continuous integration (CI) environments. It provides functionality to calculate the energy consumption of CI jobs based on the power consumption characteristics of the underlying hardware.      

Repo

Below is the full list included on the repo:

Categories:

Measurement

Help measure and interpret the impact of emissions and the environmental impact of software use.

  • Scaphadre: Scaphandre [skafɑ̃dʁ] is a metrology agent dedicated to electric power and energy consumption metrics. The goal of the project is to permit to any company or individual to measure the power consumption of its tech services and get this data in a convenient form, sending it through any monitoring or data analysis toolchain.
  • Kepler: Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe performance counters and other system stats, use ML models to estimate workload energy consumption based on these stats, and exports them as Prometheus metrics.
  • Codecarbon: Python package that estimates your hardware electricity power consumption (GPU + CPU + RAM) and applies to it the carbon intensity of the region where the computing is done.
  • Cloud-carbon-footprint: Cloud Carbon Footprint is a tool to estimate energy use (kilowatt-hours) and carbon emissions (metric tons CO2e) from public cloud usage.
  • Carbon-aware-sdk: The Carbon Aware SDK is a toolset to help you measure the carbon emissions of your software, in turn helping you measure and reduce your software's carbon emissions, and choose when and where you run your software to make it greener. - High pri, tool from Green Software Foundation.
  • Co2.js: One day, the internet will be powered by renewable energy. Until that day comes, there’ll be a CO2 cost that comes with every byte of data that’s uploaded or downloaded. By being able to calculate these emissions, developers can be empowered to create more efficient, lower carbon apps, websites, and software.
  • Carbontracker: Track and predict the energy consumption and carbon footprint of training deep learning models.
  • Experiment-impact-tracker: The experiment-impact-tracker is meant to be a simple drop-in method to track energy usage, carbon emissions, and compute utilization of your system.
  • Eco2AI: The Eco2AI is a python library for CO2 emission tracking. It monitors energy consumption of CPU & GPU devices and estimates equivalent carbon emissions taking into account the regional emission coefficient. The Eco2AI is applicable to all python scripts and all you need is to add the couple of strings to your code. All emissions data and information about your devices are recorded in a local file.
  • Greenframe-cli: Estimate carbon footprint of a user scenario on a web application.
  • Impact: ML has an impact on the climate. But not all models are born equal. Compute your model's emissions with our calculator and add the results to your paper with our generated latex template.
  • Zeus: Zeus is a library for (1) measuring the energy consumption of Deep Learning workloads and (2) optimizing their energy consumption.
  • Green-cost-explorer: See how much of your cloud bill is spent on fossil fuels ,so you can do the right thing and switch. We're in a climate crisis, remember?
  • Green-metrics-tool: Green software measurement LCA.
  • Green-metrics-tool: The Green Metrics Tool is a developer tool indented for measuring the energy and CO2 consumption of software through a software life cycle analysis (SLCA).
  • Carbonalyser:The add-on "Carbonalyser" allows to visualize the electricity consumption and greenhouse gases (GHG) emissions that your Internet browsing leads to.
  • Tracarbon: Tracarbon tracks your device's energy consumption and calculates your carbon emissions using your location.
  • Carbonifer: Command Line Tool to control carbon emission of your cloud infrastructure. Reading Terraform files, carbonifer plan will estimate future Carbon Emissions of infrastructure and help make the right choices to reduce Carbon footprint.
  • PyJoules: A Python library to capture the energy consumption of code snippets.
  • Powerjoular: PowerJoular is a command line software to monitor, in real time, the power consumption of software and hardware components.
  • Eco-ci-energy-estimation: Estimates energy consumption of continuous integration jobs based on the characteristics of underlying hardware.
  • Eco-ci-energy-estimation:Eco-CI is a project aimed at estimating energy consumption in continuous integration (CI) environments. It provides functionality to calculate the energy consumption of CI jobs based on the power consumption characteristics of the underlying hardware.
  • Perun: perun is a Python package that calculates the energy consumption of Python scripts by sampling usage statistics from your Intel, Nvidia or AMD hardware components. It can handle MPI applications, gather data from hundreds of nodes, and accumulate it efficiently. perun can be used as a command-line tool or as a function decorator in Python scripts.
  • Cloud-scanner: Get Boavizta impact data for your aws cloud account usage.
  • Carbon-tools: A set of CO2 footprint tools to measure the impact of the code we ship.
  • Ecoinfra: ecoinfra is a powerful tool that helps you predict, asses, and reduce the environmental impact of your cloud infrastructure. By integrating your existing or new IaC project you can harness predictive sustainability into your cloud operations.
  • PSElectricityMaps: This PowerShell module is intended for retrieving emissions data from CO2 Signal for a supplied Azure Region during resource deployments. This is a lightweight solution making use of non-commercial functionality available with a free account at ElectricityMaps. This means the module is only able to get near-realtime emissions data and no prodictive values. This means this module is not a real solution for reduced carbon deployments and -software. It does however provide some nice realtime values so you can simulate the beheaviour of deployments and software based on emissions data without the cost of a paid account for such data. For example in lab- or proof of concept environments.
  • PSWattTime: This PowerShell module is intended for retrieving emissions data from WattTime for a supplied Azure Region during resource deployments. This is a lightweight solution making use of only the limited functionality available with a free account at WattTime. This means the module is only able to get near-realtime emissions data and no prodictive values. This means this module is not a real solution for reduced carbon deployments and -software. It does however provide some nice realtime values so you can simulate the beheaviour of deployments and software based on emissions data without the cost of a paid account for such data. For example in lab- or proof of concept environments.
  • Carbon-appinsights: Azure Function for logging PSElectricityMaps results for Azure regions to Application Insights.
  • Energy-consumption-measuring-toolkit:While running applications on-premises or in the cloud, the main consumers of power on a server will be the CPU, the GPU, the memory, and the Tech Stack. Estimating how much each consumes will give an estimate of how much power your server, or your application on a server, consumes.
  • Green-kernel: In this project we will create an addition to the Linux Kernel which enables developers and end-users to see and quantify the energy cost of their running software on a process level.
  • FrameworkBenchmarks: This project provides representative performance measures across a wide field of web application frameworks. With much help from the community, coverage is quite broad and we are happy to broaden it further with contributions.
  • Energy-Languages: The complete set of tools for energy consumption analysis of programming languages, using Computer Language Benchmark Game.
  • Carbonara: This is a custom element to compute web navigation carbon footprint.
  • Cpu-energy-meter: A tool for measuring energy consumption of Intel CPUs.

Carbon Efficiency

Start making changes to your software and architecture to use less energy and emit less carbon.

  • Kube-green: kube-green is a simple k8s addon that automatically shuts down (some of) your resources when you don't need them.
  • Ec0lint:ec0lint is a static code analysis tool that provides users with hints on how to reduce the carbon footprint of their websites during the development process. Applying code changes suggested by ec0lint results in lower carbon emissions per visit, quicker loading and higher space efficiency. The tool is open-source and community-driven.
  • ecoCode:ecoCode is a collective project aiming to reduce environmental footprint of software at the code level. The goal of the project is to provide a list of static code analyzers to highlight code structures that may have a negative ecological impact: energy and resources over-consumption, "fatware", shortening terminals' lifespan, etc.
  • Ecocode-mobile: Mobile apps running on top of battery-limited, android-powered devices are more than others concerned by the reduction of their environmental footprint. Hence, we created ecoCode android, the version of ecoCode project fully dedicated to the Android platform. It provides static code analyzers to highlight code structures that may have a negative ecological impact: energy over-consumption, "fatware", shortening devices' lifespan, etc.
  • EcoSonar: Raising the awareness of delivery teams to environmental issues: enabling development teams to consider the environmental impact of digital technology during development and to promote knowledge of best eco-design and accessibility practices.
  • EcoCode-ios: Mobile apps running on top of battery-limited devices are more than others concerned by the reduction of their environmental footprint. Hence, we created ecoCode iOS, the version of ecoCode project fully dedicated to the iOS platform. It provides static code analyzers to highlight code structures that may have a negative ecological impact: energy over-consumption, "fatware", shortening devices' lifespan, etc.

Carbon Awareness

Learn behavior changes that will enable less carbon emissions.

  • Carbon-aware-keda-operator: Kubernetes tool.
  • Grid-intensity-go: A tool written in Go, designed to be integrated into Kubernetes, Nomad, and other schedulers, to help you factor carbon intensity into decisions about where and when to run jobs.
  • Vessim: Vessim is a versatile co-simulation testbed for carbon-aware applications and systems which connects domain-specific simulators for renewable power generation and energy storage with real software and hardware.
  • Carbon-Aware-Computing: The goal of this project is to provide developers with hassle free, easy to use, ready to run tools for carbon aware computing. All libraries and data are open source and open data with unrestricted usage. Within private, open source and commercial software. This project will deliver a set of libraries, services and data. There are mostly extensions to other projects and all credits belong to them. To forecast the best execution time the Carbon Aware SDK from the Green Software Foundation is used. The Forecast and actual data is from Energy-Charts provided by Fraunhofer ISE. For UK the data is provided by UK National Grid ESO.
  • Carbon-minimiser: The National Grid have created a Carbon Intensity API for Great Britain. This allows you to access to predictions for carbon intensity across England, Scotland, and Wales. The Carbon Minimiser sits on top of this, and allows you to estimate the optimal time to perform actions to reduce their impact on the planet, by choosing times when your area has a lower carbon intensity.
  • Hangfire.Community.CarbonAwareExecution:A Hangfire extension to schedule tasks with carbon awareness in mind. The best point in time is calculated based on emission forecasts to get a window with a minimal grid carbon intensity.

Special Tools

  • Nvidia-co2: Show gCO2eq emissions information with nvidia-smi, at the top right corner. For example: 79.2gCO2eq/h or 23.76mm^2/h sea ice.
  • Sustainability-scanner: "Sustainability scanner is an open source tool that helps you create a more sustainable infrastructure on AWS. It takes in your Cloudformation template as input, evaluates it against a set of sustainability best practices and generates a report with a sustainability score and suggested improvements to apply to your template.
    -Infrastructure as code, automates rightsizing and autoscaling"
  • Leaf: LEAF is a simulator for analytical modeling of energy consumption in cloud, fog, or edge computing environments. It enables the modeling of simple tasks running on a single node as well as complex application graphs in distributed, heterogeneous, and resource-constrained infrastructures. LEAF is based on SimPy for discrete-event simulation and NetworkX for modeling infrastructure or application graphs.
  • Lite-youtuve-embed: Provide videos with a supercharged focus on visual performance. This custom element renders just like the real thing but approximately 224× faster.
  • Ipmitool: An open-source tool for controlling IPMI-enabled systems
  • gets the power consumption of a bare metal machine.
  • Ethereum-nft-activity: How much energy does it take to power popular Ethereum-backed CryptoArt platforms? And what emissions are associated with this energy use?

Other

  • Kernel_tuner: Kernel level. Create optimized GPU applications in any mainstream GPU programming language (CUDA, HIP, OpenCL, OpenACC).
  • Powerapi: PowerAPI is a middleware toolkit for building software-defined power meters. Software-defined power meters are configurable software libraries that can estimate the power consumption of software in real-time. PowerAPI supports the acquisition of raw metrics from a wide diversity of sensors (eg., physical meters, processor interfaces, hardware counters, OS counters) and the delivery of power consumptions via different channels (including file system, network, web, graphical). As a middleware toolkit, PowerAPI offers the capability of assembling power meters «à la carte» to accommodate user requirements.
  • GreenIT-Analysis:"GreenIT-Analysis est une extension pour navigateur qui vous permet de quantifier les impacts environnementaux d'un parcours utilisateur complet, même derrière un firewall et / ou une authentification applicative. L'outil vérifie également l'utilisation de bonnes pratiques visant à diminuer ces impacts.
  • Geopm: The Global Extensible Open Power Manager (GEOPM) provides a framework to explore power and energy optimizations on platforms with heterogeneous mixes of computing hardware.
  • Region-carbon-info: This repository contains sustainability characteristics of Google Cloud regions in a machine readable format. Read more on the Google Cloud website.
  • E-footprint: The current perimeter is the carbon footprint associated with the fabrication and usage of servers, storage, network (usage only) and end-user devices necessary for the existence of a digital service. Other environmental impacts (water, rare earth metals, etc.) will be added soon through an integration with the Boavizta API, and the lifecycle phases of device transportation and end of life are currently considered negligible.
  • Coppers: Measure energy consumption of unit tests, Rust.
  • Cloud-jewels: Estimate energy consumption using GCP Billing Data.
  • Green-algorithms-tool
  • Patch-node
@jmcook1186
Copy link

HI @abbitude
Can I propose the GSF Impact framework Project to be added to the blog post list? We are a framework for transparently calculating and sharing software carbon emissions.
Our Github is here: https://github.com/Green-Software-Foundation/if
Docs website is here: https://if.greensoftware.foundation/
And we also have an "explorer" website where the community can share their own plugins, here: https://explorer.if.greensoftware.foundation/

cc @jawache @russelltrow

@abbitude
Copy link
Author

Hi @jmcook1186

Thank you for your recommendation! The GSF Impact Framework Project has been added to our repo list and will be mentioned in the blog post.

@abbitude
Copy link
Author

GitHub's Green Software Directory is live and open for contributions! Feel free to check it out and propose any additions 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants