Introducing Software Sustainability
Welcome to the first post on the Sustainable Software Engineering (SSE) blog. Sustainable Software Engineering is an emerging discipline at the intersection of climate science, software, hardware, electricity markets, and data center design.
The Principles of Sustainable Software Engineering are a core set of competencies needed to define, build, and run sustainable software applications. You can find more about the 8 principles at principles.green as well as in future blog posts.
In January Microsoft launched one of the most audacious sustainability goals by any company to date. Part of that strategy included “Enlisting our employees” as one of the key approaches to achieve that goal. Microsoft, while its many things, is a software company at its core. Spurred on by this call to action many of us began organizing, focusing, and connecting the dots on all the various aspects of where software can play a role in this. This blog is one output from that collective effort. In the journey to this point, we’ve identified several areas where we can add to the sustainability conversation with patterns, practices, guidance, and stories to help enable you to make an impact within software development.
Our goal for this blog is to provide both a set of resources but also a community for developers wanting to make an impact. The content will cover a broad range of topics but will be entirely about decreasing the amount of carbon, waste, or water wasted directly or indirectly through improved software. As we develop the methodologies we’ll put numbers to these goals as well as illustrate how we are doing against them. In addition, we’ll enable you to be part of those goals and enable you to see those impacts in your software.
We think about software sustainability across a number of dimensions including:
Today there are over 1 billion Windows 10 PCs in the world. When we think about the sustainability of PCs there are two primary things we think about:
- Was that PC manufactured and reclaimed in a sustainable way?
- Is that PC using power in a sustainable way?
While we’ll likely spend the most time in this blog on the second of those two points the first is important to note as well. Lets take my laptop for example, a Surface Pro 2017. You can view its eco profile here:
We see that the estimated emissions for 3 years of product use are roughly ¼ that of the emissions related to manufacturing, transport, and disposal. It’s important to keep this point in mind: while the impact of software on the product use is fairly direct and easy to rationalize, when possible we should also consider whether the applications we build as developers unnecessarily require powerful machines for local compute. The relationship between machine compute power and the manufacturing CO2 impact is roughly correlated. For example, compare the Surface Book 2 13” ecoprofile which is estimated to have a 35% higher emissions impact. This raises a worthwhile question about weather moving that impactful compute to the cloud might be a more sustainable choice. The other important factor to consider when looking at PC sustainability is that they are plugged in to their local grids which vary greatly in the amount of CO2 generated per kWHr. Thus, optimizing software for a machine plugged in Norway, with an emissions factor of .011 kgCO2e per kWHr, has less impact that one for in Poland, with an emissions factor of .846 kgCO2e per kWHr4. Luckily software is largely global so its usually only necessary to keep this difference in mind when calculating impact statements.
Cloud/Data Center computing
In the United States alone, datacenters consume about 70 billion kilowatt-hours (kWh) of electricity each year, roughly 1.8 percent of the total electricity consumed in the country. This number is expected to grow to 73 billion kWh by the end of 2020, about the same amount of energy that 6 million homes consume in one year. Electricity is a proxy for carbon because most electricity is still created through the burning of fossil fuels.
Electricity is not the only sustainability question for cloud computing, we need to include the embodied carbon of the servers and data-centers themselves, that is the carbon released during the creation and disposal of a device.
Secondary Impacts of Computing on Sustainability
We are all living through a rapid transition period, brought on by COVID-19, which is changing work patterns for everyone the role of software’s impact on that shift and the subsequent impact to carbon, waste, and water is one example of a secondary impact. Today, virtual meetings and shifting workloads to the cloud have replaced commutes for some workers and added additional onus on us as developers to ensure those shifts in behaviors continue to stay on the positive side of the sustainability dial. Machine Learning and High Performance Computing services are enabling companies that extract Oil and Gas to become more advanced but we also need to ensure that Sustainable Software Engineers also help them tap in to the technologies they need to transition to a more sustainable future 8. Software development innovation in areas such as agriculture also have a large role to play such as the reduction of unnecessary fertilizer or increasing yields which lead to sustainability impacts. These are just a few examples where software is fundamental to enabling positive sustainability impacts to each of the above experiences which are shaping our modern world. When considering our total impact on the climate software developers need to be empowered with the tools and techniques to start quantifying the impacts across these secondary domains.
Here are some things we have planned for the blog:
- Further refinement on what sustainable software engineering is.
- How you can measure the power impact of your application and estimate the carbon impact of that application.
- Case studies in how we’ve worked with application developers to lower their application’s carbon impact.
- How we measure sustainability at Microsoft and the key levers for software in that.
- Application development patterns to lower the sustainability impact of your applications.
- Ways to engage with the community through OSS, feedback, and projects to harness collective action to increase impact as well as other community-focused content
We are looking forward to being part of this community! Please leave a comment and let us know what you’d like to hear as we build this community and help drive the change needed to solve this global problem.
Hey Scott, thanks for this post.
There are two things would be nice to hear from you:
As a beginner in these area (I’m a software dev), with few information, what I would like is an information entrypoint. For these subjects for example: climate science, electricity markets, and data center design. If I try to find by myself a website, a book, a blog, there are so many resources, it almost give me the wish to not enter in all this. It’s too much and many not reliable.
And you guys have already some knowledge in this, some experience and maybe you could have some advice to start learning a subject: with a book, a MOOC, or anything with a great pedagogy.
practical examples for software, how in my dailylife can I apply those principles (and share with my colleagues)
This I would like you could share 🙂
Have a nice day