Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions releaseNotes/Microsoft.Featuremanagement.AspNetCore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Microsoft.FeatureManagement.AspNetCore

[Source code][source_code] | [Package (NuGet)][package] | [Samples][samples] | [Product documentation][docs]

## 4.0.0-preview2 - March 7, 2024

### Enhancements

* Added `TargetingHttpContextMiddleware`, which ensures TargetingContext is available for syncronous functions, like `TargetingTelemetryInitializer` in the `Microsoft.FeatureManagement.Telemetry.ApplicationInsights.AspNetCore` package. ([#409](https://github.com/microsoft/FeatureManagement-Dotnet/issues/409))
Comment thread
rossgrambo marked this conversation as resolved.
Outdated
* Added support for .NET 8 target framework. ([#364](https://github.com/microsoft/FeatureManagement-Dotnet/issues/364))

### Breaking Changes

No breaking changes in this release.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How strongly do we feel the necessity of adding this no-breaking-change disclaimer? We don't do this in other release notes. Even if we put this, there is no guarantee of no breaking changes. There are just no known breaking changes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll remove it for now- seeing as the guidelines don't suggest we have it.


<!-- LINKS -->
[docs]: https://github.com/microsoft/FeatureManagement-Dotnet
[package]: https://www.nuget.org/packages/Microsoft.FeatureManagement.AspNetCore
[samples]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/master/examples/FeatureFlagDemo
[source_code]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/master/src/Microsoft.FeatureManagement.AspNetCore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Microsoft.FeatureManagement.Telemetry.ApplicationInsights.AspNetCore

[Source code][source_code] | [Package (NuGet)][package] | [Samples][samples] | [Product documentation][docs]

## 4.0.0-preview2 - March 7, 2024

### Enhancements

* Added `TargetingTelemetryInitializer`, which appends targeting information to all outgoing telemetry to Application Insights. ([#409](https://github.com/microsoft/FeatureManagement-Dotnet/issues/409))
Comment thread
rossgrambo marked this conversation as resolved.
Outdated

### Breaking Changes

No breaking changes in this release.

<!-- LINKS -->
[docs]: https://github.com/microsoft/FeatureManagement-Dotnet
[package]: https://www.nuget.org/packages/Microsoft.FeatureManagement.Telemetry.ApplicationInsights.AspNetCore
[samples]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/preview/examples/EvaluationDataToApplicationInsights
[source_code]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/preview/src/Microsoft.FeatureManagement.Telemetry.ApplicationInsights.AspNetCore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Microsoft.FeatureManagement.Telemetry.ApplicationInsights

[Source code][source_code] | [Package (NuGet)][package] | [Samples][samples] | [Product documentation][docs]

## 4.0.0-preview2 - March 7, 2024

### Enhancements

* Added a property to published telemetry named `TargetingId`. This is a more reliable way to connect evaluated feature flags to other telemetry events for a given target. ([#409](https://github.com/microsoft/FeatureManagement-Dotnet/issues/409))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hope this explains why a change can benefit a customer.

Added a TargetingId property to the feature evaluation events sent to Application Insights. The TargetingId is the identifier of a targeted user during feature evaluation. This new property allows you to correlate feature evaluation events with other telemetry data your application sends to Application Insights, as long as they share the same TargetingId.

@rossgrambo rossgrambo Apr 8, 2024

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That can work- but the nuance to me is

allows you to correlate feature evaluation events with other telemetry data your application sends to Application Insights, as long as they share the same TargetingId.

Correlating events was already possible in the previous version using one of Application Insights user id fields.

I think this change is more about decoupling the id from Application Insights / not locking ourselves to users / ensuring we emit whatever the value of "Targeting.UserId" was instead of relying on an ambient field that might not correlate with the Targeting value.

@rossgrambo rossgrambo Apr 8, 2024

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could call out that it's explicitly the targeting information from evaluation. Like:

based on the targeting information from feature evaluation.

Which says that it's no longer some ambient field- but the actual targeting information used during evaluation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in the previous version using one of Application Insights user id fields.

Sounds like a breaking change.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't be, correlating via user id is still possible.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correlating events was already possible in the previous version using one of Application Insights user id fields.

If we did this (add userid to "one of Application Insights user id fields") before and not anymore in the new release. It sounds like a breaking change to me.

@rossgrambo rossgrambo Apr 10, 2024

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that would be, but we don't add it. App Insights package automatically generates and adds user id. In our early examples, we were adding AuthenticatedUserId, but it was added/managed in the customer code and not in the library. That approach would still work today.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we were adding AuthenticatedUserId, but it was added/managed in the customer code and not in the library

Got it. This means we didn't provide a solution out of the box before and now we do. Customers must do it in their application code before this release. Yes, correlating via user id was already possible, but for the sake of the argument :), the whole feature management was possible by user code completely. The release notes are about what we provide out-of-the box regardless of whether something was possible or not by the user code.

I think this change is more about decoupling the id from Application Insights / not locking ourselves to users...

This is true from our perspective. From the customer perspective, it's all about correlating events. How to do it? It's an implementation detail.

@rossgrambo rossgrambo Apr 11, 2024

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, but just to note again. Application Insights generates UserId out-of-the-box which can be used to correlate without custom customer code. Its limitation is hard refreshing or switching apps wouldn't track the user. Our example used AuthenticatedUserId because we wanted to get around that. We could say TargetingId is the new out-of-the-box way to get around it.

A customer today who wants to run experiments with anonymous data from users would likely still use the UserId field (or manually set TargetingId to the value of UserId).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to your original suggestion:

Added a TargetingId property to the feature evaluation events sent to Application Insights. The TargetingId is the identifier of a targeted user during feature evaluation. This new property allows you to correlate feature evaluation events with other telemetry data your application sends to Application Insights, as long as they share the same TargetingId.


### Breaking Changes

No breaking changes in this release.

<!-- LINKS -->
[docs]: https://github.com/microsoft/FeatureManagement-Dotnet
[package]: https://www.nuget.org/packages/Microsoft.FeatureManagement.Telemetry.ApplicationInsights
[samples]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/preview/examples/EvaluationDataToApplicationInsights
[source_code]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/preview/src/Microsoft.FeatureManagement.Telemetry.ApplicationInsights
15 changes: 4 additions & 11 deletions releaseNotes/Microsoft.Featuremanagement.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
# Microsoft.FeatureManagement
[Source code][source_code] | [Package (NuGet)][package] | [Samples][samples] | [Product documentation][docs]

# Microsoft.FeatureManagement.AspNetCore
[Source code ][source_code_web] | [Package (NuGet)][package_web] | [Samples][samples_web] | [Product documentation][docs]
[Source code][source_code] | [Package (NuGet)][package] | [Samples][samples] | [Product documentation][docs]

## 4.0.0-preview2 - March 7, 2024

### Enchancements
### Enhancements

* Use flags to enable different service implementations in dependency injection. ([#39](https://github.com/microsoft/FeatureManagement-Dotnet/issues/39)). See more details [here](https://github.com/microsoft/FeatureManagement-Dotnet/tree/preview?tab=readme-ov-file#variants-in-dependency-injection).
* Additional mechanisms to track targeting within telemetry to improve the connection between published events and metrics. ([#409](https://github.com/microsoft/FeatureManagement-Dotnet/issues/409))
* Added support for Net8 applications by adding Net8 as a build target. ([#364](https://github.com/microsoft/FeatureManagement-Dotnet/issues/364))
* Added support for variant feature flag-based service provider in dependency injection. It allows different service implementations to be injected automatically for different targeted audiences based on their variant assignment. ([#39](https://github.com/microsoft/FeatureManagement-Dotnet/issues/39)). See more details [here](https://github.com/microsoft/FeatureManagement-Dotnet/tree/preview?tab=readme-ov-file#variants-in-dependency-injection).
* Added `TargetingContext` to evaluation events. This allows events to accuratly represent what the targeting context was at the time of feature evaluation. ([#409](https://github.com/microsoft/FeatureManagement-Dotnet/issues/409))
Comment thread
rossgrambo marked this conversation as resolved.
Outdated

### Breaking Changes

Expand Down Expand Up @@ -510,7 +507,3 @@ A cache for feature settings has been added which respects the reload token of t
[package]: https://www.nuget.org/packages/Microsoft.FeatureManagement
[samples]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/master/examples/ConsoleApp
[source_code]: https://github.com/microsoft/FeatureManagement-Dotnet

[package_web]: https://www.nuget.org/packages/Microsoft.FeatureManagement.AspNetCore
[samples_web]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/master/examples/FeatureFlagDemo
[source_code_web]: https://github.com/microsoft/FeatureManagement-Dotnet/tree/master/src/Microsoft.FeatureManagement.AspNetCore