The public cloud end-user spending is approaching 500 billion USD in 2022 and is forecasted to land just south of 600 billion USD in 2023, indicating a rapidly growing industry. A significant portion of this amount is attributable to "pre-production computing", e.g. Continuous Integration workloads running on cloud computing platforms such as GitHub Actions and Azure DevOps Pipelines.
While the different platforms might have their own green software-initiatives baked into the product itself by design, there are limited options for an end-user to further influence the carbon footprint of their workloads. Most, if not all, cloud platforms are bound by SLAs and other customer-facing obligations which leaves limited room for reallocating, delaying, or otherwise altering the delivery of the compute service itself according to when the workload would be the most green.
Furthermore, a portion of workloads might not be time-sensitive and could therefore tolerate a delay in execution, however this is not a feature that is natively supported in most cloud computing platforms today.
This leaves a gap:
How can environmentally conscious end-users ensure that their workloads run during "green" time periods?
"Jord" (named after Jörð) is a GitHub Action that helps move workloads into greener time periods.
Based on available carbon emission data, Jord automatically decides when a workload should be run.
The users can set a tolerance window which defines for how long the workload can be delayed, and Jord finds the greenest time slot within this tolerance window.
If a greener time slot is available in the future and is within the tolerance window, the workload is delayed until that time slot is reached and reports back to the user accordingly.
If not, the workload continues without interruption.
All of the above is achieved using native GitHub Actions functionality, and does not require any hosting or maintenance of infrastructure on the user side.
GUI output when job is delayed
Currently, Jord queries the hosted version of the Carbon Aware Web API, but it also accepts other host URLs (via a dedicated input parameter to the GitHub Action) in case the API is deployed to a different server.
🌱 Reach millions of developers via GitHub, the biggest developer community on the planet.
GitHub has 90+ million users across 338 million repositories, and is by far the largest and most popular collaboration platform in the world for open source software. In addition, 84% of Fortune 100 companies use GitHub Enterprise which represents a significant exposure towards the corporate & enterprise space.
According to the 2021 Octoverse report, 50% of open source projects with more than 1000 contributors are "heavy users" of GitHub Actions. For open source projects maintained by companies ("open source at work"), that number rises further to 60.16%.
The statistics above represent a significant potential for reducing the carbon footprint of workloads running on GitHub Actions. Although it is complex to calculate exact amounts with the data available, it is reasonable to assess the potential as being large in scope. For example if, say, the solution could scale up to being used by every 10,000nd repository on GitHub, that would translate to almost 35,000 software projects actively contributing to reducing their carbon footprint every day.
Jord v0.2.0 has already been released onto the GitHub Actions marketplace and is available to the community for testing.
The first iterations of Jord have revealed some limitations caused either by the implementation itself or by the native GitHub Actions functionality (for example the public GitHub APIs). For some of these it is feasible to implement fixes and/or workarounds, and for others it might be necessary to request feature updates to the GitHub Actions platform.
Having the project open-sourced and thereby leveraging the feedback from the community will assist in finding solutions to these limitations.
Top 3 limitations identified:
To enable every software developer to run green workloads, without any fuss.
For a solution such as this to become sticky and have an impact, it is vital that it has a low barrier of entry and that it can be seamlessly integrated into the Software Development Lifecycle. Thus "GreenOps" might be a suitable description of the overall concept (borrowing from other X-Ops philosophies such as "DevOps", "SecOps", etc.). This is also one of the main reasons behind the current solution strategy, as Jord can just be added to existing workflows in GitHub with minimal overhead (no deployments, no maintenance, no infrastructure to manage).
With that in mind, here are the top 3 highlights for the future: