Sustainable Software
Open, Needs TriagePublic

Subscribers
Tokens
"Love" token, awarded by marzal."Love" token, awarded by meven."Love" token, awarded by tfella."Like" token, awarded by ognarb."Like" token, awarded by fusionfuture."Love" token, awarded by joseph."Like" token, awarded by aguldner."Love" token, awarded by thomross.
Assigned To
Authored By
cschumac, Jul 11 2022

Description

Summary

Software has an impact on our future. It has an affect on energy and resource usage. KDE can deliver software which does this in a way which preserves environment and society for us and future generations. KDE can deliver Sustainable Software.

This goal is about promoting sustainable software in KDE by (i) aligning existing activities, (ii) highlighting where our software is already sustainably designed, (iii) stimulating actions to increase sustainability, and (iv) creating standards/tools to quantify software sustainability.

Motivation

The human species has a big challenge. If we continue to use resources and energy in the way we do today, future generations will not have adequate conditions to live well. Our planet is at stake. We do need to find and implement more sustainable ways to live. The goal of our generation has to be sustainability.

The influence of software on sustainability is not well understood yet. Software design can have a massive influence on energy consumption, lifecycle of hardware, digital waste, sovereignty and autonomy of users. It can prevent users to take sustainable choices. It can have disastrous consequences on the environment as can be seen in certain ecosystems. We need to bring this concerns to the surface. We need to do something about it.

KDE is in a predominant position to take a lead here. We have been driven by sustainable principles since our inception, even if we not always have consciously done so. Software freedom is at the core of ethical use of software, of giving people control to take responsible decisions. Making use of existing hardware always has been a core practice of the Free Software community. KDE software runs on hardware which many vendors have given up a long time ago. We always have focused on native implementations, not wasting the overhead of overly virtualized software stacks.

At the beginning of 2022, KDE's sustainability efforts were officially blessed by the "Blue Angel" eco-label certification of the German government for resource and energy efficient software as the world-wide first software product in this category.

KDE has the opportunity, capability, and the responsibility to push forward and implement the idea of sustainable software. This goal will serve as a focal point to stimulate and bring together KDE's activities in this area. We can and must contribute our share to save the planet.

Plan

Core activities

The goal has four focus areas:

  • Aligning existing sustainability activities
  • Giving visibility to the many areas where our software already is designed for sustainability
  • Stimulating initiatives and concrete actions across KDE to increase sustainability or make it more transparent
  • Create standards and tools to quantify software sustainability
Alignment

We have some activities which explicitly address sustainability, the FOSS Energy Efficiency Project (FEEP), the BE4FOSS project, funded by the German state, the Blue Angel certification efforts or the lab for measuring energy efficiency.

We also have activities which support sustainability implicitly, although we often don't think about it this way. Examples are our privacy policy, the telemetry policy, or generally the values which stand behind Free and Open Source Software in general and KDE in particular.

Bringing this together and telling a compelling story from the perspective of sustainability in and through KDE is one part of the goal.

Visibility

KDE software contributes to sustainability in many ways. Users have control of what they use and how they do it. We don't spy on them or force ads on them. Code and development is transparent and open for participation. KDE software runs on old hardware and doesn't force users to upgrade hardware because of software version updates. KDE software runs natively and efficiently.

For us this is natural, but it actually has a greater societal benefit. It puts users in a position where they can decide and exercise their autonomy to act in a responsible way. This is often not communicated properly and users don't have the means to judge how sustainable KDE software is, also compared to other software.

There are many small steps we can take to improve that:

  • Making sure that documentation covers sustainability, for example links to privacy and telemetry policies
  • Pointing out user autonomy in our communication about our software, e.g. in release announcements or in background stories
  • Do joint activities with other initiatives and organisations focused on sustainability, Green IT initiatives, community activities of makers, hackers, environmental activists etc. We have already build a network as part of KDE Eco.
  • Leverage requirements to use sustainable software to position KDE software. One direction could be using the Blue Angel certification to target public administrations which have decided on sustainability as one criteria for the procurement choices
Initiatives

There are concrete initiatives we can take to make KDE software more sustainable and promote the aspects where it already is addressing sustainability in an exemplary way. These initiatives could benefit from attention, participation, and funding.

There are some initial initiatives. Using the power and creativity of the community we can probably come up with more. Initial initiatives are:

  • Creating a network of labs to measure energy efficiency of software. There is a first lab in Berlin being built in collaboration with KDAB to provide infrastructure necessary to measure energy consumption of software according to the procedure defined by the criteria for the Blue Angel for resource and energy efficient software. This uses external current measurement devices to get exact data. It's relatively easy to replicate and could give more people the opportunity to get hard data and insight into the efficiency of their software.
  • Certifying more applications with the Blue Angel. The Blue Angel is a German eco-label with a long history and a very good reputation. We got KDE Okular certified as the first software product meeting the criteria of resource and energy efficient software. We can extend this to get more applications covered. This can support marketing of our software and can be a decision factor for organisations and individuals considering sustainability when choosing what software to use.
  • Making energy efficiency a quality criteria for software releases. When we are able to measure energy efficiency in an automated way, we can make it part of the tests which run in CI. This would make it possible to detect regressions and define quantitative feedback for optimisation efforts. The very basics for this are in place, but it needs more effort to actually make it part of our development process. The result would be that we can claim and make sure that our software is designed for sustainability.

Standards and tools

One of the biggest challenges is to quantify sustainability so you can compare different implementations, notice regressions, and can do targeted optimization. There are some frameworks for quantifying sustainability, for example the methods to measure energy efficiency developed by the Umweltcampus Birkenfeld, or the Green Metrics tool by Green Coding Berlin. There are still many gaps, where no tools exist yet, and we need standards which make it practical to exchange data.

Activities in this area include:

  • Develop good practices to use the existing tools
  • Bring KDE software, such as LabPlot, into the toolchain to quantify sustainability
  • Create, improve and contribute to tools for quantifying sustainability (including fun hacks such as using cheap Wifi power plugs to measure energy)
  • Define, improve, and use standards to connect tools and data (e.g. the XML format used by the Blue Angel criteria)

Steps and milestones

A lot of the work in this goal is happening continuously, driven by motivation and availability of individuals. It's a lot of small steps contributing to the overall goal that can't and don't have to be planned.

Setting concrete goals can help to drive initiative, so here is what we strive to achieve as part of the sustainability goal:

  • Certify three more applications as resource and energy efficient software according to the Blue Angel criteria by 2024
  • Include sustainability information in documentation and web sites of KDE applications (details need to be defined), goal: cover 50% of KDE applications by end of 2023, and 80% by mid of 2024.
  • Present KDE as Sustainable Software at a conference dedicated to this topic.

Community

There are many small steps which can happen in a distributed way. Each KDE application can work on making sustainability aspects transparent, measuring energy efficiency, or promoting how KDE software is contributing to a sustainable world.

We also need the existing community initiatives, such as FEEP, BE4FOSS and others. These reach out to the KDE community but also to other adjacent communities. We can involve other Free Software projects but also projects and organizations focused on sustainability from a different perspective, e.g. coming from a political or environmental background.

And finally the topic of sustainability could be a unique selling point for the KDE community as whole. A lot of our values, our history, our activities, and our software have been built in a sustainable way. We often haven't spelled this out or done it in a conscious way. Bringing this to the surface, communicating its value, making it an explicit part of what we are could make a real difference. We are addressing a problem of global relevance for our future, after all.

Risks and needs

While sustainability is part of our values, it's not always part of our actions. Many things might seem to be more important on a short-term view. Dealing with technological challenges, addressing users' immediate needs, working on fun features, all that can put sustainability aspects in the background.

We need to explain why it's relevant to work on this and make it easy to get results.

Some of the projects also need some infrastructure, tooling, or funding, especially when it comes to physical measurements of energy consumption. This usually is not about huge amounts of resources, but some targeted investments could act as enablers.

Champion

I got intrigued by the topic when I first heard the presentation of Marina Köhn and Eva Kern at the Chaos Communication Congress 2019 about how climate friendly software is (German original, English translation). They presented the sustainability criteria for resource and energy efficient software for the Blue Angel, which were brand new at that time. I thought these were a perfect match for KDE. So I set out on the mission to get the Blue Angel for KDE. In the beginning of 2022 we finally achieved this goal and got the certification for KDE Okular.

There is a lot of momentum around IT and its effect on the environment, on how we can use hardware and software in a sustainable way. It's a relatively new topic, especially considering the impact of software. But it gets attention from groups, organizations, and communities which haven't been involved with Free Software before. So this is an excellent opportunity to extend our network.

One initiative where we are successful with that is the BE4FOSS project to promote sustainability criteria for software and help Free Software developers to consider these aspects in design and implementation. The project is funded by the German ministry for environment and allowed KDE (e.V.) to hire two people to work on the topic for two years. I helped to set up this funding opportunity.

I'm personally convinced that we all need to do more to make sure that future generations will have a livable planet. Software is one aspect where we can do something. There might be other aspects where a bigger effect can be achieved, but software is what we do and where we know how to make a difference, so I believe that we can make a very meaningful contribution here.

Interest

This section is intended for people other than the Champion to sign up and show support for the Goal.
If you are interested to actively join the effort and do the work, add your name below (this does not count as voting for the Goal):

@marzal

cschumac created this task.Jul 11 2022, 9:14 PM
aguldner added a subscriber: aguldner.
joseph added a subscriber: joseph.

Excellent proposal! A couple of suggestions and a few typos to correct, nothing major. Changes marked with asterisks!

"will not have an adequate base to live" -> Base sounds odd to me. Perhaps "will not have adequate resources to live"

"have *disastrous* consequences "

"KDE software runs on hardware'' which many vendors"

"with other initiatives and *organisations*"

"community *activities* of makers"

"individuals considering *sustainability* when *choosing* what software to use"

"for *quantifying* sustainability"

"There are *still* many gaps** where no tools exist yet, and *we need* standards "

"driven by *motivation*"

"put sustainability aspects in the *background*"

"attention from groups, organizations, and communities** which haven't been involved with *Free Software* before"

"funded by the German *ministry*"

"livable planet"

"There might be other aspects** where a bigger effect can be achieved"

In general:

free software -> Free Software?

be4foss -> BE4FOSS

cschumac updated the task description. (Show Details)Jul 12 2022, 5:14 PM

Fixed the typos, thanks for the feedback.

Applications like a document reader or a web browser can be easily tested by measuring the opening speed of a document, but how can other applications measure their efficiency? For example in Plasma how to test one applet's efficiency? Can the current CI framework do it?

Applications like a document reader or a web browser can be easily tested by measuring the opening speed of a document, but how can other applications measure their efficiency? For example in Plasma how to test one applet's efficiency? Can the current CI framework do it?

For applets I could imagine two approaches:

  • compare to an "empty" Plasma shell baseline, ie. does having the applet enabled increase the energy consumption?
  • compare the applet to previous versions of itself in the plamoidviewer, ie. did changes to the applet change energy consumption?

In general, for anything related to Plasma my guess would be that the idle state is more relevant than efficiency of a specific operation, ie. we probably want to ensure that adding a specific applet isn't causing a ton of wakeups for example.

tfella added a subscriber: tfella.
meven awarded a token.Jul 24 2022, 9:03 AM
marzal awarded a token.Aug 6 2022, 8:28 AM
marzal added a subscriber: marzal.
marzal updated the task description. (Show Details)Aug 6 2022, 8:45 AM
adam added a subscriber: adam.Aug 21 2022, 5:30 PM

Notes from the refinement session:

The proposal looks very solid, but requires a lot of reading to understand, especially for those that are not aware about current KDE sustainability work being done. A TLDR/elevator pitch could help with that for the voting phase, probably at the top.

adam added a comment.Aug 21 2022, 6:46 PM

The voting starts in a week, so any changes that you intend to do should be done soon :)

Possible tl;dr / elevator pitch for the goal description?

tl;dr Promote sustainable software in KDE by (i) aligning existing activities, (ii) highlighting where our software is already sustainably designed, (iii) stimulating actions to increase sustainability, and (iv) creating standards/tools to quantify software sustainability.

cschumac updated the task description. (Show Details)Aug 29 2022, 1:02 PM

Thanks @joseph, I added a summary at the beginning of the proposal.

jpetso added a subscriber: jpetso.EditedAug 30 2022, 5:29 PM

I'm a little late for commenting but I'd like to add some thoughts.

This proposal seems to focus on individual pieces of software first and foremost. While reproducible measurements are applicable in all kinds of situations, the undertone that I'm reading is to proceed from one piece of application software to another. Like, following Okular certification, we'd go for Dolphin, then Kate, then Gwenview, perhaps some Kirigami apps, etc.

I think KDE as desktop environment has more and stronger levers that it can pull. Much "wasted" wattage comes from hardware-related sources:

  • Software not making use of hardware acceleration (e.g. hardware video decoding/encoding) or other features (e.g. C-states).
  • People buying over-specced systems that don't scale down well on idle, whether through lack of convenience, lack of knowledge/visibility or hardware limitations.

KDE can't help with all of these, but what it can help with is to surface these shortcomings to the user. Modern Linux kernels expose a significant amount of real-time power consumption information to the user, however in order to access and interpret this, I have to resort to a multitude of command-line tools.

As part of a sustainability initiative, KDE should imho aim to expose and optimize these metrics to users in an understandable fashion, in the relevant System Settings modules as well as System Monitor and Plasma widgets of course. Some examples:

  • Display brightness is a major factor in power consumption and (on laptops) battery life. Can KDE estimate the display's current power consumption and present it to the user, letting them know about its impact on battery life and perhaps even power bills?
    • Similarly, it would be great to surface other common factors, such as wifi, Bluetooth, USB ports powering other devices.
  • Many laptops have poorly optimized firmware (BIOS) leading to high power consumption in sleep mode. KDE offers the full range of sleep modes, including regular sleep (S3/S0ix), hybrid sleep (powering down after how long? not sure) and full hibernation. What KDE doesn't have is a way of evaluating how much battery was consumed while the laptop was asleep. Windows has a built-in tool to capture and graph this, KDE should provide one as well and help people choose among the various sleep settings.
  • People keep mentioning baloo and its impact on CPU and storage drive. Are background services such as this in scope, and how can we find the worst offenders to start optimizing?
  • My AMD Radeon 6000-series GPU reports 4W power consumption in lm_sensors when powering a single monitor at 60 Hz refresh rate. However, if this is changed to any other refresh rate, the GPU exits this optimized mode and reports a full 19W or power consumption. That's more than two standard laptops' regular consumption, just by changing an innocuous display setting, and people have no clue what's happening. KDE should let them know.
    • To expand on this, I might want to run games at 144 Hz but (knowing the savings) switch back to 60 Hz for regular desktop use. To my knowledge, there isn't currently a switch that can achieve this automatically, although KWin on Wayland may have enough knowledge to make it happen.
  • Gaming laptops (those power-hungry beasts that require twice the batteries for half the battery life) generally have dGPUs in addition to iGPUs. Often it's possible to switch between both, using only the iGPU unless more GPU performance is required. What can KDE do to point out the power differences and help with switching between both modes?
  • Firefox still doesn't enable video acceleration for all users. KDE has a Firefox integration extension. Can it help to point people towards the right settings?

None of these need a hacked smart plug or certification to increase visibility towards the user and nudge them in the right direction. I think if sustainability is to be a successful initiative for KDE, it needs to show users what impact it makes on their system. What's the tangible difference for battery life and power bills. How is my Plasma setup doing better than GNOME or Windows. How much is my own system consuming and why. What should I focus on for my next purchase that will make my KDE run smoothly with fewer carbon emissions.

Labs and certifications and government grants are great tools, but KDE needs to bring this stuff to the wide community of common KDE users first and foremost. People who are not going to go out of their way to assess their sustainability, who may not even consider that angle much right now, but who may be swayed one way or the other if they can see their immediate impact live on screen. I feel like this proposal could assign more priority towards these aspects.

@jpetso Thanks for bringing up your thoughts. You mention a lot of valid points, and you are right that labs and certifications are some of the tools, but that they are certainly not enough to fully cover the topic of sustainable software. We do need to think beyond that. Currently the criteria for the Blue Angel are a great starting point, because they are concrete and actionable. But they also only cover one specific perspective. They are meant as first steps and what you mention about the effect of hardware and making this and other sustainability aspects visible to users is very much in scope of this goal. We don't want to prescribe how this is done, but use what research and community come up with. So while the plan focuses mostly on what we know how to do today, I would see it as a very natural evolution to add other ways to support the goal of sustainable software while we are going and learning.