microsoft / microsoft/microsoft-performance-toolkit-sdk

Use base classes instead of interfaces for most types in the SDK namespace

Open
#395 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
239
Forks
78
Avg merge
4d 3h
Merged PRs (30d)
2

Description

We expose many public interface types in the SDK namespace, such as IProcessingSource and ITableBuilder.

This presents challenges when trying to add new functionality to types in a backwards compatible way. When a new method is added to one of these interfaces, any plugin directly implementing it will see a compilation break. This means the new methods are technically major breaking changes, only being allowed with major version bumps (i.e. 1.0 to 2.0).

To fix this, most types exposed in the SDK namespace should be abstract base classes.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by inventorying the public interface types in the SDK namespace, including IProcessingSource and ITableBuilder, and inspect their implementations and consumers. Determine which types are intended to become abstract base classes and how existing plugins remain compatible. Done means the agreed set of public interfaces has been converted without breaking supported implementations.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
api, developer-experience
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.