NOTE: This article was originally published on the CoderPad blog.
We often have the impression that digital technology does not pollute.
This is usually because software pollution is mainly invisible to the general public thanks to dematerialization (the use of the cloud or online word processing services, for example), which is ultimately only the decentralized materialization of digital services.
However, when we use these digital services, we utilize the 3-tier hardware architecture composed of:
- Devices or terminals: computers, screens, smartphones, smartwatches, etc.
- Networks: all the cables that allow the circulation of data, routers, relay antennas, etc.
Servers: including data centers.
Of all the sectors – transportation, textile industry, agriculture, etc.– the environmental footprint of the digital industry is the one that is growing the fastest on a global scale, notably linked to :4% of greenhouse gases (GHG) in 2020 1.
10% of the world’s electricity usage 2
A 9% annual increase in electricity consumption 2.
The increasing flow of electronic waste – growing at 4% per year and per person 3
Increasing data traffic (25% growth per year), leading to growing development of network and server infrastructures 5
An economic sector that is expected to double its GHG emissions by 2025 compared to 2020 2.
To further show the environmental impact of technology, it’s been shown that a 2G electronic chip found in your phone, printer, laptop, tablet, etc., requires 32kg of natural resources to produce. More and more of these chips (and others) are needed to power our electronic devices each year 4.
According to a study conducted by ARCEP and ADEME in January 2022 6, the carbon footprint of the digital sector in France would be 17 Mt CO2eq (mega tonne CO2 equivalent), i.e., 2.5% of the national footprint, distributed as follows:
- 79% for terminals
- 16% for data centers
- 5% for networks
Understanding the magnitude of the problem is essential to realizing the necessity of levers to reduce the environmental impact of digital technology.
Apart from environmental issues, digital technology poses other problems, particularly social ones. The disparity in access to digital tools is known as the “digital divide.”
To put numbers on the digital divide: 3.7 billion people do not have access to a broadband network, and 87% of people in developed countries have access to the Internet (compared to 19% in developing countries) [7][https://www.itu.int/dms_pub/itu-s/opb/pol/S-POL-BROADBAND.23-2021-PDF-E.pdf].
This is generally due to lacking infrastructure, which implies a lack of access to information, education, communication, etc.
These social problems are also exacerbated by the mineral resource requirements that feed our digital economy.
The mining for these minerals tends to be in countries where geopolitical tensions exploit local populations in disastrous conditions.
For example, 60% of cobalt mining is carried out by children in the Democratic Republic of the Congo 8. It also pollutes the clean surrounding water, rendering it undrinkable for anyone living near the mine 9.
The need to reduce digital technologies’ impact on the environment and humanity cannot be understated. This article will explore ways we can do just that through intelligent eco-design. We’ll also explore the benefits that it can bring to a business and its customers.
Fundamentals of software eco-design
Before we discuss implementing measures to reduce the impact of digital technology, we first need to go over some basic eco-design concepts.
Digital services
A digital service meets a specific need, has one or more functionalities, and a set of users. It is considered a combination of the following:
- Equipment that enables data to be stored, manipulated, and displayed: servers, terminals, boxes, etc.
- Infrastructures that host and connect the equipment: networks, data centers, etc.
- Several software packages stacked on top of each other that run on the different devices.
- Other possible third-party digital services.
Eco-design
The principle of eco-design is to consider the system’s environmental impact from the design phase, with the aim of reducing this impact throughout the product’s lifecycle.
The eco-design of a digital service necessarily takes into account the following points:
- The definition of the functional scope: which features add value, avoid useless widgets, which data and processing are beneficial, etc.
- All stages of the lifecycle and associated equipment: manufacturing, installation, distribution, use, and end-of-life (recycling, reuse, dismantling, etc.)
- Several environmental indicators: resource depletion, pollutant emissions, water consumption, waste production, emission of substances contributing to climate change, etc.
- The three tiers of the architecture: terminals, networks, and data centers
- The implementation of a dialogue with stakeholders Progressive and continuous environmental improvement without transferring pollution or impact
In the digital domain, as we have seen previously, the primary source of impact is located at the terminal level – essentially in the manufacturing phase–representing about 80% of the impact.
It is therefore essential to optimize and size digital services as much as possible to increase the longevity of terminals. This is to avoid their renewal and to make infrastructures more profitable in terms of space, power, and consumption of resources in general (the weight of software has been multiplied by 171 in 20 years, according to the Green IT collective 10).
Levers of optimization
Optimization levers are those aspects of a digital service that we can change to reduce or contain the service’s environmental footprint. They include:
- The definition of the functional scope: which features add value, avoid useless widgets, which data and processing are beneficial, etc.
- The usage, sizing, and solicitation of the associated physical equipment.
- The necessary equipment and infrastructure and their sizing.
- The software layer and its optimization.
- The use of software best practices and the use of measurement tools (which we will explore later).
- Communication with stakeholders to better define functionalities and needs via the UX approach (for example).
ℹ️ No product is completely “green” or “clean.” We can reduce the impact of our products and activities, but that doesn’t make them suitable for the planet. It is mainly a question of making our tools more efficient (less consumption for the same use) and questioning our services to keep only the essential and remove the nonessential. The notion of eliminating the unnecessary is not a substitute for efficiency and vice versa.
Of course, the objective is not necessarily to deprive ourselves or to cut back on certain uses, which is up to each individual. The aim is to adapt our consumption to our actual needs.
Impact transfer
Impact transfer is when impact improvements are made at one stage of the life cycle, implying adverse effects at another phase of the life cycle.
For example, 5G has a lower carbon footprint (between 7 and 35 kWh/user/year) on paper than 4G (50 kWh/user/year) 11, but requires the installation of more antennas than 4G and allows more devices to be connected, thus leading to a rebound effect (Jevons paradox) by indirectly increasing the number of connected devices.
As humans, we have a cognitive bias that pushes us to use the resources offered by a system to the maximum. In this case, that puts additional pressure on data networks by increasing the data flows, which in turn requires more infrastructure to manage these flows, and so on, in a vicious cycle.
In an eco-design approach, it is necessary to conduct a life cycle analysis to consider the notions of impact transfer and rebound effect to make the best possible design choices.
Reasons to choose eco-design
There are many different reasons to start an eco-design approach:
- It eliminates nonessential elements, making services more efficient
- Simplifies the UX and makes it more fluid, improving accessibility
- Saves time and money by reducing costs (energy, consumables, cost to society, etc.)
- Encourages companies to develop a CSR (Corporate Social Responsibility) strategy
- Improves brand image
- Brings more meaning to an employee’s work, therefore reducing burn-out and improving well-being at work
- Develops a longer-term vision for the products
- Attracts new clientele, thus increasing sales
- Creates a network of partners with the same desire to reduce their environmental impact and thus influence others to adopt a CSR strategy
- Attracts potential investors (especially related to the establishment of a CSR strategy)
These reasons aren’t just musings of a philosopher – real numbers back them. According to the 2014 study presented by France’s Agence de la Transition Écologique (ADEME) 12, an eco-design approach:
- Increased margins of eco-designed products by an average of 12%
- Improved at least two functional aspects of the studied products (ease of use, cheaper, more sustainable, etc.)
- May improve profitability. Some indicators of the intensity of the eco-design approach are associated with higher profits. Thus, the more the company takes into account a large number of stages of the product life cycle in its eco-design approach, the more monetary gain it may see
- Increased employee motivation (58% in the EU)
- Easier to recruit employees
- Improved innovation capacity
According to the 2020 GreenConcept study 13, it would be possible to drastically reduce the environmental impact of digital services: 85% less energy consumption, 63% less water needed, 40% fewer material resources, and 58% less greenhouse gas emissions.
Case-in-point: LinkedIn and IBM have managed to reduce server processing time by a factor of 100 by eco-designing their digital services 14.
Finally, eco-design allows you to identify new axes of value creation for your products and offers a triple benefit to your company:
- Increased assets by increasing the value of the company through improved brand image and product design
- Enhanced customer relations by responding better to their expectations and offering more innovative products
- Improved ethical standing by adding social responsibility as a company value (i.e., CSR)
Reminder: CSR is not based on “good deeds” or “philanthropy” but aims to transform companies’ core business models and processes.
Putting software eco-design into practice
You will see that from a technical point of view, eco-design only requires the common sense of the developer. The advantage is that we already have all the tools.
Hosting
The choice of your web host can be important in reducing your environmental footprint. Indeed, behind each hosting option, many servers need to be powered 24/7/365.
According to Science magazine 15, web hosting servers alone represent 1% of the world’s electricity consumption. This may not seem like much, but also consider the following:
- 10% of the world’s electricity is used for ICT (Information and Communication Technologies) 2.
- Electricity usage for digital technology is increasing by 9% every year 2.
- The digital services industry is expected to double its greenhouse gas emissions between 2020 and 2025! 2
A significant portion of this energy expenditure is the cooling needed to ensure that servers function optimally, protect them from failure, and thus ensure their longevity. Cooling consumes up to 40% of the total energy required to run a data center 16.
Calculating the exact environmental footprint of a server is very difficult, given the variety of criteria to be taken into account, the diversity of methodologies used to calculate it, and the lack of publicly available data 17.
We can nevertheless estimate that manufacturing a server emits about 1 t CO2eq. This doesn’t account for abiotic resources (non-living resources: air, water, minerals, etc.) and any environmental destruction that results from obtaining those resources.
What can be done about it?
There is a lot you can do to ensure your hosting service has minimal impact on the environment:
- Use a “local” hosting company for your end users to limit the distance traveled by the data (15,000 km on average, according to ADEME).
- Choose a hosting company that communicates its environmental impact and makes commitments like OVH (France) or Infomaniak (Switzerland).
- Check the PUE* of your host. The closer it is to 1, the better (the European average is 1.46). OVH has a PUE between 1.1 and 1.3 (variable according to the sites); Infomaniak’s is slightly lower than 1.1. These two hosts have an excellent PUE.
- Prefer hosting providers with passive cooling systems to limit energy usage.
- Prefer hosting companies that use low-carbon electricity, but beware of “green” energy certificates (you can buy a “green” energy certificate).
- Find out about your host’s hardware renewal practices (ex: Do they use reconditioned equipment, components, etc.?).
- Utilize shared server offerings to avoid having a dedicated server. This way, you reduce the environmental footprint of your hosting, which is divided among the different users of this shared offer.
- Eco-design your applications. This allows you to take up less space and resources on the servers. *PUE: for Power Usage Effectiveness, used to measure the energy efficiency of a data center, it is calculated by dividing the energy consumed by the data center by the energy consumed by the equipment (servers, air conditioning, network, etc.)
Use benchmarks
An excellent way to get started in software eco-design is using best practice frameworks, which save you time in finding ways to optimize your code or the choice of hosting.
In France, for example, we have many frameworks that have emerged:
- The GR491 by the Institute of Responsible Digital (also exists in English): https://gr491.isit-europe.org/en/
- The guide to eco-design of digital services by the Association of Ethical Designers (also in English): https://eco-conception.designersethiques.org/guide/en/
- Ecometer, co-financed by ADEME (in English): http://www.ecometer.org/rules/
- The French government’s Référentiel Général d’Écoconception de Services Numériques (RGESN) also has a general reference framework available (only available in French): https://ecoresponsable.numerique.gouv.fr/publications/referentiel-general-ecoconception/
Some of these best practice frameworks will only address the code aspect; others will also discuss hosting management and UX. Still, overall they present many of the same eco-design principles.
Measurement tools
As the saying goes: you can’t improve what you don’t measure. Indeed, how can we know the critical optimization levers when we have no metrics?
Fortunately for us, many measurement tools already exist. The list I’m going to give you is not exhaustive, but are the ones I use most often:
- Bundlephobia to check the size of the NPM dependencies you want to add to your project, and their download time
- PageSpeed Insight for the performance of your sites. It also lists the points to correct to improve the performance of your site
- GTmetrix, like PageSpeed Insight, uses Google LightHouse metrics for performance indices but uses a non-emulated browser, unlike PageSpeed
- Website Carbon Calculator to measure the carbon footprint of your site
- GreenIT-Analysis (currently available only for Chromium browsers) works with an “EcoIndex” calculated from different parameters such as the number of HTTP requests launched, the resource compression rate, image optimization, etc. (this topic will be discussed in the next section)
All these tools are free, don’t hesitate to use them!
Some technical recommendations for software eco-design
Eco-design requires taking into account physical environmental constraints. This is primarily done in the project’s design phase by considering the user experience (UX).
UX and eco-design also require optimizing interfaces and taking into account accessibility (which also takes into account the loading time of your application on a 2G mobile phone, for example) and requesting as little data as possible. It is also necessary to eliminate superficial functionalities to avoid unnecessary processing.
Technologies are also chosen during the design phase. The 2017 study Energy Efficiency across Programming Languages (R. Pereira et al. 18) studies energy, time, and memory consumption according to the languages. Here is a summary table:
We can note that some languages are much less greedy than others in terms of resources, but this does not mean we should systematically turn to them.
Indeed, the choice of a language is not only based on its raw performance but requires the study of other parameters such as :
- Maintainability: will someone be able to take over the project after it’s complete? Does the job market have competent developers in this language? What is the technical environment in which this project will run? Etc.
- Language competencies of the project team: let’s say that Node.js is more adapted to an upcoming API project. If the rest of the team is only competent in PHP, it might be better to stay with PHP or opt for a PHP framework (Symfony with API Platform, for example) even though Node may be the “better” language.
- Appropriateness to the project: Some languages are better than others at dealing with a particular task. For example, Python is more adapted than PHP for a Machine Learning project. More importantly, how technology is implemented can impact the environment more than how it is used in isolation.
There are a lot of simple tips you can use – many of them found in the references I’ve sprinkled throughout this article – to help you minimize the impact of your digital service implementations:
- Reduce the size of the images, and avoid using them when they are unnecessary.
- Avoid videos as much as possible or reduce their quality, and do not activate automatic playback when possible.
- Think mobile-first. This approach avoids loading content for desktop browsers when unnecessary (because we tend to put more elements on desktop than mobile).
Moreover, a smartphone (which accounts for 60% of web browsing 12) has a power consumption of between 2 and 15W for charging, while a laptop has a power consumption of between 20 and 75W, and a desktop is between 70 and 250W 13.
- Utilize for loops (with ++i) rather than forEach loops. While it ultimately depends on the context and readability constraints, it is better to opt for a for each loop if the code becomes too complicated to read or understand. Code that is difficult to understand is code that is difficult to maintain and evolve, which can contribute to technical debt, contrary to the principles of eco-design.
ℹ️ You can learn more about for and forEach loops in these blog posts about the JavaScript some() method and JavaScript array methods.
- Reduce the size of the DOM as much as possible since it is cumbersome to handle. In web applications, avoid using JavaScript as much as possible, especially for animations – use CSS instead if you can.
ℹ️ Read more about CSS filters, CSS grid, CSS math functions, and CSS pseudo-classes.
- Limit the number of HTTP requests and optimize/group them as much as possible
-
Limit the number of SQL JOIN operations and sub-queries. These are very greedy in terms of server resources and response time. Of course, this is often dependent on the architecture of your database.
Serve static pages rather than dynamic ones.
Use caching as much as possible, especially for assets (images, CSS, JS), and define a long enough caching time according to usage.
Enable server-side file compression (Gzip, minification).
Use tree shaking, available, for example, with Gulp or Webpack.
Avoid using non-standard fonts, or if you must use them, try to choose the lightest fonts possible, and use readable fonts for people with reading disorders (accessibility).
Use lazy loading.
Avoid
SELECT *
in a database. Specify the names of the columns to return instead.Ask for as little data as possible to make the program work. Not only is this an eco-design concept, but it’s a privacy/data protection one as well. For example: do we need the user’s first AND last name?
For Content Management Systems (CMS), deactivate and uninstall useless modules.
Optimize your application’s algorithms as much as possible by evaluating their complexity to reduce them.
✅ If you couldn’t tell, eco-design is also compatible with the Agile methodology! By really focusing on what brings value to the customer and evaluating useful enhancements, agile development can help reduce the energy overhead associated with developing unnecessary product features.
Eco-design is the future of software development
Eco-design is nothing more and nothing less than the global application of good programming and design practices that allow you to improve the performance of your web applications, all the while keeping in mind that our world obeys physical laws with limited resources that are not necessarily renewable on a human life scale.
By applying these good practices, your company will see its image enhanced with your customers, potential investors, and – more importantly – your employees. The more your employees are trained in eco-design principles, the higher the intensity of implementing eco-design in products, the more quality will be present, the more your customers will be satisfied, and the higher your profits will be.
In addition, by eco-designing digital services, we can reduce the amount of processing required and extend devices’ lifespan, thus reducing our impact on the planet’s resources and the energy needed to operate them.
Nevertheless, it is essential to keep in mind that despite the positive indicators that emerge from various studies on eco-design, they may be biased, especially due to the relatively small study samples. For example, the 2014 study 14 is based on a sample of about 100 companies across the EU and Canada. Moreover, the concept of eco-design is relatively recent.
Adopting eco-design at scale cannot be done in a snap of the fingers. Even if it is not a magic formula to boost your business, it is of undeniable interest in your digital services’ environmental impact, user experience, and performance.
Here I’m going to risk paraphrasing Jean-Marc Jancovici 15, but a world of service jobs is not a world without hardware – quite the contrary. Digital service jobs depend on the presence of machines because there are a lot of flows to manage (notably of information and people), and the more the flows increase, the more people are needed to deal with them (thus more machines, and so on).
Thanks for reading!
This article was written by Thomas Laure, a French junior IT engineer who loves solving problems regardless of the technology used, not only in tech, and passionate about many scientific topics and philosophy.
Top comments (0)