-
Notifications
You must be signed in to change notification settings - Fork 648
WIP Start implementing feature flags for toy feature #12790
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
instantiate feature flags manager in core test message box in view add feature flags man project with config file update compiler unsafe to v 5
wrap startup in try catch unsub logger handler add prod key use shared key add try catch and logging around LD api methods
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="LaunchDarkly.ClientSdk" Version="2.0.1" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
are we OK with bringing in a bunch of extra dependencies to the dynamo build ?
(I know we tried to avoid this in the past)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure, do you think it's worth exploring wrapping up the launch darkly client in a separate process the same way we do for the markdown2htmlCLI tool? This would isolate the dependencies from DynamoCore / the host process.
Performance might be a bit worse, but flags shouldn't be getting evaluated very frequently anyway.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From my point of view, LD in a separate process would make sense only if extra dll dependencies are deal breaker.
Some of the extra dependencies will be brought in by the move to dotnet6 anyway.
I did also see a more lightweight REST API client https://www.nuget.org/packages/LaunchDarkly.Api/
Not sure if this would a better alternative ...The API does look more difficult to use ...
I believe that api is a non starter in our case as it requires full sdk keys that must remain secret - ie it’s for a custom automation tool, not a client process - but I will double check.
IMO we can start by referencing the ld client to keep things straight forward and then move to out of process if we run into conflicts in the future. It’s not clear how well features like local storage will work wrapped in another process- we might need to contend with other gotchas like that for conflicts that don’t exist.
… On Apr 11, 2022, at 9:43 PM, pinzart90 ***@***.***> wrote:
@pinzart90 commented on this pull request.
In src/DynamoFeatureFlags/DynamoFeatureFlags.csproj:
> @@ -0,0 +1,19 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(SolutionDir)Config/CS_SDK.props" />
+ </ImportGroup>
+ <PropertyGroup>
+ <TargetFramework>netstandard2.0</TargetFramework>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="LaunchDarkly.ClientSdk" Version="2.0.1" />
From my point of view, LD in a separate process would make sense only if extra dll dependencies are deal breaker.
Some of the extra dependencies will be brought in by the move to dotnet6 anyway.
I did also see a more lightweight REST API client https://www.nuget.org/packages/LaunchDarkly.Api/
Not sure if this would a better alternative ...The API does look more difficult to use ...
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.
|
object output = default(T); | ||
switch (default(T)) | ||
{ | ||
case bool _: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we testing for type here? If so, can we also use typeof
as in:
switch (typeof(T))
{
case typeof(bool):
...
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Purpose
This PR onboards Dynamo onto launch darkly, it controls a popup at startup. The feature flag is enabled for debug builds, and disabled for production (release) builds.
PR does the following:
updates compiler unsafe to avoid conflict at build time... latest changes revert this as LD is resolving the same version with Tibi's suggestion.CheckFeatureFlag<T>
method.New Binaries:
Microsoft.Bcl.AsyncInterfaces.dllSystem.Text.Encodings.Web.dllSystem.Text.Json.dllSystem.Threading.Tasks.Extensions.dllSystem.ValueTuple.dllpackage refs for the DynamoFeatureFlags Project:
TODO:
Declarations
Check these if you believe they are true
*.resx
filesRelease Notes
Add initial feature flags controls in Dynamo.
Reviewers
(FILL ME IN) Reviewer 1 (If possible, assign the Reviewer for the PR)
(FILL ME IN, optional) Any additional notes to reviewers or testers.
FYIs
(FILL ME IN, Optional) Names of anyone else you wish to be notified of