dotnet / arcade

Tools that provide common build infrastructure for multiple .NET Foundation projects.
MIT License
666 stars 341 forks source link

Create a single source of truth for our Platform Matrix #8832

Closed dotnet-bot closed 1 year ago

dotnet-bot commented 2 years ago

Migrated from https://github.com/dotnet/core-eng/issues/11077

@Chrisboh wrote:

Motivation

We continue to have lack of clarity within the division around what operating systems (OSes) we support for .NET, including details about how the environment look. The data is available but is located in multiple places (such as the official documentation (Windows, macOS and Linux platforms), OSOB YAML definitions, Kusto DB, AzDO pipelines) which makes it not suitable to be consumed by automation. We need to collect this information in a single place so it's available both to us and to our customers in forms that are readable both by humans (csvs, PowerBI reports) and by automation (e.g., JSON).

Additionally, there is not process in place that allows individual developers to see what OS versions are currently being considered for support and/or request support for a specific scenario they may have. Being able to provide clarity to the division and management on what OSes we support, in which environments and how we go about adding/removing support is the end goal for this epic.

The resulting processes, automation and produced data will be called "Matrix of Truth", abbreviated as "MoT" in the following description.

Business Objectives

The MoT initiative has two complementary aspects - process and tooling. Below are the business objectives for each of those aspects.

Process Objectives

The process and communication of changes to the fundamental underlying data of the MoT, such as what concrete versions of OSes are supported for a given version of .NET. The initial decisions about which OSes will be supported are made by the management and the PMs. Our responsibility is to define the mechanics of conveying, maintaining and presenting this information and their changes so that full audit trail (i.e., who changed what, when and why) is captured.

Implementation Objectives

To get the full MoT picture, we will need to aggregate data from various sources in an automated way on a regular basis.

Scenarios

Together with our partners (discussed on Engineering Services Backlog Review on 03-Feb-2022), we have identified the following scenarios that will be performed by MoT users regularly. Each of the following scenarios represents a business objective to fulfill.

Roles

Initial OS Evaluation and Requests

Scenario Process Implemented
Scenario 1 - As a customer or platform manager, I want to know what new Operating Systems are currently being evaluated and what the status of the approval process. βœ…
Scenario 2 - As a customer or platform manager, I want to be able to request support for a new Operating System. βœ…
Scenario 3 - As a platform manager, I want to be able to estimate infrastructure costs of onboarding a new Operating System based on utilization data of similar OSes. βœ…
Scenario 4 - As a platform manager, I want to be able to see the overhead cost for supporting a new Operating System. πŸ”²
Scenario 5 - As a platform manager, I want to know the estimated release dates of upcoming new OS versions so that I can plan my future work. βœ…

OS Onboarding and Adoption

Scenario Data Collected Included in Output Shown on Report Comments
Scenario 6 - As a platform manager, I want to track the progress of getting support for a new operating system and its adoption rate by the product teams. βœ… βœ… βœ…

Querying Current State of Our Environment

Scenario Data Collected Included in Output Shown on Report Comments
Scenario 7 - As a customer or platform manager, I want to be able to see all the Operating Systems that are officially supported for version of .NET, so I can make sure that we have the correct coverage. βœ… βœ… βœ…
Scenario 8 - As a customer, I want to see how each Operating System is supported in our environment (type of docker container / VM / physical machine, Operation System version, Build tools VS/XCODE version, Python version, etc.).​ βœ… βœ… βœ…
Scenario 9 - As a customer or platform manager, I want to see what pipelines and/or repos are targeting each of the supported Operating Systems or Helix queues. βœ… βœ… βœ…
Scenario 10 - As a platform manager, I want to see estimated utilization and time we spend for a given Operating System. πŸ”² πŸ”² πŸ”² Based on discussion with @Chrisboh and @ilyas1974 we decided to postpone this scenario
Scenario 11 - As a platform manager, I want to see which product branches are targeting each of the supported Operating Systems. βœ… βœ… βœ…
Scenario 12 - As a customer or platform manager, I want to see all Operating Systems which are approaching their EOL, so I can make sure my workloads are moved before an Operation System goes away. βœ… βœ… βœ…
Scenario 13 - As a customer, I want to know all machine specifications which we run in our environment (physical machine, VM). βœ… βœ… βœ…

OS Retirement and Removal

Scenario Data Collected Included in Output Shown on Report Comments
Scenario 14 - As a platform manager, I want to track the progress of removing support for an OS within our infrastructure. βœ… βœ… βœ…
Scenario 15 - As a platform manager I want to see any differences between the official EOL date from the OEM and what our end of support date is βœ… βœ… βœ…

Architecture

image

Milestones

Task list

Process related issues

Proof of concept

Refactoring and other work

Recently Triaged Issues

ilyas1974 commented 1 year ago

All objectives for the Matrix of Truth have been completed. Closing epic.