Skip to content

Green-Software-Foundation/patterns

Repository files navigation

Patterns of Green Software Engineering

Scope

An open-source database of software patterns that, if applied, will reduce software emissions. Each pattern has been thoroughly reviewed by experts and agreed upon by all members of the Foundation. The patterns are the next step in the Foundation's goal to create an ecosystem of people with the knowledge of how to build greener applications.

For the longest time, the feedback we've received is that people need actionable advice they can apply immediately to their software products. However, the correct choices can change dramatically from one technology to another. For example, a good pattern for an AI product might be a wrong pattern for a web application. The information is out there but hard to find. We need one place where everyone can go for green software patterns regardless of their role or the technology and trust that if they apply the pattern, it will reduce emissions.

The catalog of green software patterns is an online open-source database of software patterns reviewed and curated by the Green Software Foundation across a wide range of categories. Any software practitioner can find the patterns related to their field, technology, or domain. Anyone can submit a pattern that triggers a detailed review process by the Foundation. You can be confident that applying any patterns that have completed that process will reduce your software emissions.

The intention is that patterns are vendor agnostic, for instance there should not be Azure, AWS and GCP patterns. There should be generic cloud patterns which could be applied to specific vendors, but the patterns themselves are vendor agnostic. We encourage specific platforms/vendors to create vendor-specific versions of these patterns for their specific products on their platforms.

To use the patterns, head to https://patterns.greensoftware.foundation and search for your field or technology. Each pattern is atomic and applicable to real-world situations and applications.

Components of a Green Software Pattern

  • Title: Title of the pattern
  • Version: Designation of iteration on the pattern. This will initially be assigned by the patterns working group
  • Submitted By: The name of the person(s) submitting the pattern
  • Published Date: The date this version of the pattern is published. This will be provided by the patterns working group upon approval
  • Tag Category: Select the most appropriate category from: Artificial Intelligence, Cloud, or Web which might apply to this pattern
  • Tags: A pre-defined list of additional tags which might apply to the pattern (e.g. Machine Learning, Gaming, Mobile).
  • Description: A full description of what problem this pattern is solving
  • Solution: How will this patter solve the problem
  • SCI Impact: How will this pattern affect an SCI score of an application and why
  • Assumptions: What are the assumptions being made
  • Considerations: Discussion section anything that should be taken into consideration when implementing this pattern
  • References: If this pattern, or components of it, is defined somewhere else the web please add links to those resources in this section

Stages of a Green Software Pattern

Discussion

Anyone (member or non-members) can discuss patterns via the GitHub Issues tab of the repository. There will be an issue template to suggest new patterns or suggest changes to existing patterns. Once they are ready then can go ahead and create a PR to add a pattern to the database.

Draft

Anyone (member or non-members) can create a PR matching the template for Green Software Patterns to be merged into the dev branch. This starts an internal process of review.

Initial Review

An initial review by one member of the principles and patterns project. The goal of this stage is just to make sure the pattern meets core requirements for what a pattern should contain, is it the right format, syntax etc…?

The initial reviewer will also decide what subject matter experts are required to review this pattern.

This needs an explicit approval from the initial reviewer before the pattern can move to the next stage.

SME Review

One or more subject matter experts in the GSF are asked to review the pattern and give their feedback. E.g. If the pattern is in the machine-learning catalog we ask a machine learning expert to review.

This needs an explicit approval from the SME reviewer before the pattern can move to the next stage.

Team Consensus

Once the pattern has been approved by the SME it starts the team review phase. The principles and patterns team has 2 weeks to comment/object to the pattern. It needs consensus before the PR can be approved and merged into dev.

The pattern is merged into dev but is not published on our website.

Consistency Review

Every quarter the dev branch is merged to the main branch and this triggers a consistency review where anyone in the Foundation has 2 weeks to comment or object. We need GSF wide consensus for the patterns to be published.

This is done in batches every quarter to reduce the noise to the rest of the Foundation.

Internal Review Timelines

The working group will regularly review submitted patterns along the following timeline:

  • Initial Review: 1 week
  • SME Review: 2 weeks (plus additional iteration time based on feedback)
  • Team Consensus: 2 weeks

Appointments

Chair Bill Johnson - Microsoft

Copyright

The Green Software Patterns projects are copyrighted under Creative Commons Attribution 4.0.

Patent

No Patent License. No patent licenses are granted for the Draft Deliverables or Approved Deliverables developed by this Working Group.

License

The Green Software Patterns projects are licensed under the MIT License - see the License.md file for details.