As information technology plays an important role in our daily life, its energy demand is increasing rapidly. By 2025, data centers alone will consume about 20 percent of global electricity, and the entire digital ecosystem will account for one-third of global demand.
The concept of Green Software was developed to address these issues, by focusing on developing software with minimal carbon emission. The software we develop today will run on billions of devices over the next few years, consuming energy and potentially contributing to climate change.
Green IT represents a shift in the software industry, enabling software developers and all stakeholders to contribute to a more sustainable future.
Key principles and associated best practices for reducing the carbon footprint of software include:
- Carbon Efficiency: Emit the least amount of carbon possible
- Energy Efficiency: Use the least amount of energy possible
- Carbon Awareness: Do more when the electricity is clean and less when it is dirtier
Our goal is to emit as little carbon into the atmosphere as possible. Therefore, the main principle of Green Software is Carbon Efficiency: minimizing carbon emissions per unit of work.
The definition of Carbon Efficiency is to develop applications that have a lower carbon footprint while providing the same benefits to us or our users.
Creating an energy-efficient application is the same as creating a carbon-efficient application, since carbon is replaced with electricity. Green Software aims to use as little electricity as possible and is responsible for its use.
It's true that all software uses electricity, from mobile phone applications to machine learning models trained in data centers. Increasing the energy efficiency of applications is one of the best strategies for reducing power consumption and carbon footprint. But our responsibility goes beyond that.
Quantifying energy consumption is a critical starting point, but it's also important to consider hardware overhead and end-user impact. By minimizing waste and optimizing energy use at every stage, we can significantly reduce the environmental impact of software development and change the way users use the product to take advantage of energy proportionality.
Generating electricity involves using different resources at different times and in different places, with different carbon emissions. Some energy, such as hydroelectricity, solar energy, and wind, are clean, renewable energy sources with low carbon emissions. However, fossil fuel sources release varying amounts of carbon to produce energy. For example, gas-fired power plants produce less carbon than coal-fired power plants, but both types of energy produce more carbon than renewable energy sources.
The concept of carbon awareness is to increase activity when energy is produced from low carbon sources and to decrease activity when energy is produced from high carbon sources.
Global changes are currently occurring. Around the world, power grids are shifting from primarily burning fossil fuels to generating energy from low-carbon sources, such as solar and wind energy. This is one of our best chances of meeting global reduction targets.
How can you be more carbon aware?
More than any environmental goals, economics are driving this change. Renewable energy will become more important over time as costs fall and become more affordable. That's why we need to make fossil fuel plants less economic and renewable energy plants more profitable to speed up the transition. The best way to do this is to use more electricity from low-carbon sources, such as renewables, and less from high-carbon sources.
The two main principles of Carbon Awareness are:
- Demand Shifting: Being carbon conscious means adjusting demand to changes in carbon intensity. If your job allows you to be flexible with your workload, you can adapt by using energy when carbon intensity is low and stopping production when carbon intensity is high. For example, train your machine learning model using a different time or location where carbon intensity is significantly lower. Studies have shown that these measures can reduce CO2 emissions by 45% to 99%, depending on the number of renewable energy sources used to power the grid.
- Demand Shaping: The tactic of shifting calculations to locations or periods of lowest carbon intensity is called demand shifting. Demand engineering is a similar tactic. However, rather than moving demand to a new location or time, it changes the calculation to match current supply.
The availability of carbon is critical to shaping demand for carbon smart applications. As the cost of running an application in terms of carbon emissions increases, demand is designed to match the carbon supply. Users can choose to do this or have it done automatically.
Video conferencing software that automatically adjusts streaming quality is an example of this. When bandwidth is limited, audio quality is prioritized over video quality and is always streamed at the lowest possible quality.
If we take into account the embodied carbon, it is clear that by the time we come to buy a computer, a significant amount of carbon has already been emitted. In addition, computers also have a limited lifespan, so over time they become obsolete and need to be upgraded to meet the needs of the modern world.
In these terms, hardware is a proxy for carbon, and since our goal is to be carbon efficient, we must also be hardware efficient. There are two main approaches to hardware efficiency:
- For end-user devices, it's extending the lifespan of the hardware.
- For cloud computing, it's increasing the utilization of the device.
How can Green Software be measured?
Most of the companies use the Greenhouse Gas (GHG) method to calculate total carbon emissions. By learning how to evaluate software against greenhouse gas fields and industry standards, you can assess how well green software principles have been implemented and how much room there is for improvement.
GHG accounting standards are the most common and widely used method for measuring total emissions. The GHG Protocol is used by 92% of Fortune 500 companies to calculate and disclose their carbon emissions.
The GHG Protocol divides carbon emissions into three categories. Value chain emissions, or scope 3 emissions, are emissions from companies that supply other companies in the chain. Therefore, the scope 1 and 2 emissions of one organization are added to the scope 3 of another organization.
GHG protocols allow for the calculation of software-related emissions, although open-source software may provide challenges in this regard. It is also possible to adopt Software Carbon Intensity (SCI) specifications in addition to GHG protocols. SCI is a percentage, not a total, and is specifically designed to calculate software emissions.
The purpose of this specification is to evaluate the emission rate of software and encourage its elimination. Greenhouse gas emissions, on the other hand, are a more universal measure that can be used by all types of organizations. The SCI is an additional statistic that helps software teams understand software performance in terms of carbon emissions and make better decisions.
How can you calculate the total carbon footprint of software?
Calculating the total carbon footprint of software requires access to comprehensive information on energy consumption, carbon intensity, and the hardware on which the software runs. This type of data is difficult to collect, even for closed-source software products that companies own and can monitor through telemetry and logs.
Many people from many organizations contribute to open-source projects. Therefore, it is unclear who is responsible for determining emissions and who is responsible for reducing emissions. Considering that 90% of a typical enterprise stack is open-source software, it's clear that a significant portion of carbon emissions remains unsolved.
Carbon Reduction Methodologies
A number of methodologies are commonly used to reduce emissions and to support efforts to address climate change. These can be broadly grouped into the following categories: carbon elimination (also known as “abatement”), carbon avoidance (also known as “compensation”) and carbon removal (also known as "neutralization”).
- Abatement or Elimination: includes increasing energy efficiency to eliminate some of the emissions associated with energy production. Abatement is the most effective way to fight climate change although complete carbon elimination is not possible.
- Compensation or Avoidance: using sustainable living techniques, recycling, planting trees, and other renewable energy sources are examples of compensation.
- Neutralization or Removal: is the removal and permanent storage of carbon from the atmosphere to offset the effects of CO2 emissions into the atmosphere. Offsets tend to remove carbon from the atmosphere in the short to medium term.
An organization can claim to be Carbon Neutral if it offsets emissions and, more ambitiously, to be Net Zero if it reduces emissions as much as possible while offsetting only unavoidable emissions.
The Green Software Foundation
The Green Software movement began as an informal effort, but has become more visible in recent years. The Green Software Foundation was launched in May 2021 to help the software industry reduce its carbon footprint by creating a trusted ecosystem of people, standards, tooling, and best practices for building Green Software.
Specifically, the non-profit organization is part of the Linux Foundation and has three main objectives:
- Establish standards for the green software industry: The Foundation will create and distribute green programming guidelines, models and green practices across computing disciplines and technology domains.
- Accelerate Innovation: To develop the Green Software industry, the Foundation will encourage the creation of robust open source and open data projects that support the creation of green software applications.
- Promote Awareness: One of the Foundation’s key missions is to promote the widespread adoption of Green Software through ambassador programmes, training and education leading to certification, and events to facilitate the development of Green Software.
At Bitrock, we believe that everyone has a role to play in solving climate change. In fact, sustainable software development is inclusive. No matter your industry, role, or technology, there is always more you can do to make an impact. Collective efforts and interdisciplinary collaboration across industries and within engineering are essential to achieve global climate goals.
If you can write greener code, your software projects will be more robust, reliable, faster, and more resilient. Sustainable software applications not only reduce an application's carbon footprint, but also create applications with fewer dependencies, better performance, lower resource consumption, lower costs, and energy-efficient features.