Sustainable Software Architecture: Prioritising Open Source Optimisation

By Oliver Cronk

As software architects, we constantly make decisions that shape the efficiency, maintainability, and ultimately the sustainability of our systems. With the growing awareness of technology’s environmental impact, it’s crucial to consider where our optimisation efforts can have the greatest effect. One key question arises: Should we focus on optimising our internal, proprietary codebases, or prioritise contributing to the sustainability of public open source projects?

The Case for Optimising Open Source

While it may seem counterintuitive, investing in optimising widely-used open source projects often yields a greater sustainability impact than focusing solely on internal codebases. Here’s why:

Amplified Impact: Popular open source libraries, frameworks, and tools are used across countless applications worldwide. Improving their efficiency has a multiplier effect, reducing the energy consumption and carbon footprint of every application that depends on them. This impact spans all categories of the Tech Carbon Standard – Upstream (embodied carbon in software), Operational (energy consumption), and Downstream (end-user device efficiency).

Community Leverage: Open source thrives on collaboration. By contributing optimisations upstream, you tap into the collective expertise of the community. Your improvements can be reviewed, refined, and built upon by other skilled professionals, resulting in even greater efficiency gains.

Transparency and Accountability: Open source projects operate transparently, which aligns well with sustainability goals. Changes are visible to all, and the community holds contributors accountable for their claims and results. This transparency helps combat greenwashing and ensures genuine progress.
Shared Burden: Maintaining an internal, proprietary codebase optimised for sustainability requires ongoing effort. By contributing to open source, you share that burden with the community. Many hands make light work, and the project’s maintainers have a vested interest in preserving your optimisations.

When to Optimise Internally

This isn’t to say that optimising internal codebases is never warranted. There are situations where it makes sense to focus your sustainability efforts behind the firewall:

Proprietary Algorithms: If your application heavily relies on proprietary algorithms or domain-specific optimisations, it may be more effective to focus on those elements. The performance gains from tuning your unique secret sauce can be substantial, impacting your Operational and Downstream emissions.
High-Scale Applications: If you’re operating at massive scale, even small optimisations to your internal codebase can have a significant impact. Think of large consumer-facing applications that serve millions of users. Incremental improvements add up quickly at such volumes, particularly in terms of Downstream emissions.

Regulatory Constraints: Certain industries, such as finance and healthcare, operate under strict regulatory constraints. If compliance requirements limit your ability to contribute to open source, focusing on internal optimisations may be your only option.

A Balanced Approach

In most cases, a balanced approach that prioritises open source contributions while selectively optimising critical internal components will yield the best results. As an architect, consider the following:

Dependency Analysis: Identify the open source dependencies that are most heavily used across your application portfolio. These are prime candidates for optimisation, as improvements here will reduce your Upstream and Operational emissions.

Performance Profiling: Profile your applications to identify performance hotspots. If these hotspots reside in open source libraries, consider contributing optimisations upstream. If they’re in proprietary code, focus your efforts there. Improvements in either area can reduce your Operational and Downstream emissions.

Community Outreach: Engage with the open source communities behind your key dependencies. Understand their roadmaps, sustainability goals, and how you can best contribute.

Internal Champions: Foster a culture of sustainability within your development teams. Encourage developers to consider the environmental impact of their design and implementation choices across the Upstream, Operational, and Downstream categories. Celebrate contributions to both internal and open source sustainability efforts.

By strategically allocating our optimisation efforts across open source and internal projects, we can maximise our impact on the sustainability of the software ecosystem. As architects, we have a responsibility to think beyond our organisational boundaries and contribute to the greater good. The planet will thank us.