microsoft / microsoft/microsoft-performance-toolkit-sdk
Use base classes instead of interfaces for most types in the SDK namespace
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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