Live data from Hacker News

Launch HN: DevCycle (YC W14) – a feature flag platform built for developers

news.ycombinator.com

31–35 of 35 posts

Re: Launch HN: DevCycle (YC W14) – a feature flag platform built for developers

#31

Earlier quoted context omitted.

You can use a git-based workflow for feature flags, that's likely how most teams will start using flags in their code with environment variables and infrastructure state. However, most deployment pipelines in the wild are very slow and owned by engineering, limiting the value of doing git-based state for your Feature Flags. I've seen that disconnecting the deployment of code from releasing of features can be transfor…

I put this in another comment, but disconnecting of code and feature release can still be achieved while storing feature flags as code. You need to build out a seperate pipeline and release process. With this you can still achieve all the advantages that you listed out. I think the key difference is if you consider feature flags to be configuration and believe in configuration as code as a best practice. I think this…

We certainly see workflows where defining everything as code can be powerful. As we've been chatting about this internally today, we have ideas of how you could define all your features / audiences / variables as code and only deploy changes using a Terraform interface.

I feel like, ultimately, this overly limits the reach of feature flags within an organization; it makes it more difficult for most engineers who are not comfortable with Terraform to deploy their features; it limits the ability of product / marketing / project managers / QA from; scheduling releases, configuring experiments, testing features, modifying audiences, etc.

Modifying configurations certainly can cause production issues, which is why we have built tools like our variable schemas and strong typings for our variables to limit the value changes to only known values. With our CI / CLI / IDE integrations, we make it known what values variables can be set to, when variables are added and removed, and when variables enabled in production are modified by PRs. This is all in addition to existing permissions / change logs / rollback functionality we are improving on. One of our core responsibilities is to make changing Feature Flag values as safe as possible. We know that flags can quickly become tech debt, so we also preach that feature flags should be as easy to remove from your code as they are to add to your code.

A fully featured feature management platform should be with you from your IDE / CLI, Code Review / CI, Deployment Pipelines / Alerting and Monitoring, and integrated with your Project Management and Product Analytics. It should be visible to your team throughout their workflows what features are enabled across all your environments.

Re: Launch HN: DevCycle (YC W14) – a feature flag platform built for developers

#33
> Local bucketing does all of the calculations locally using extremely performant Web Assembly code.

I don't understand; are you bundling an entire WASM environment in the SDK to interpret flags?

> Whether you are developing for the web, back-end servers, or mobile devices, we've got you covered.

Is desktop client support on the roadmap?

Re: Launch HN: DevCycle (YC W14) – a feature flag platform built for developers

#34
post #22

Something I love about the experiment tooling I've used at a few places now (Thread, Google) is the fact that state has typically been stored in source control. i.e. not just the usage of flags in code, but the rollout/experiment definitions, the state of how much traffic is allocated to each branch, eligibility requirements, etc. This makes it easy to see what the current state is (without going to a UI), and also m…

How did you represent the features flags in source control?

Just a config file defining the flag, how it was targeted at users or other entities, how much it was rolled out, etc.

Re: Launch HN: DevCycle (YC W14) – a feature flag platform built for developers

#35
post #33

> Local bucketing does all of the calculations locally using extremely performant Web Assembly code. I don't understand; are you bundling an entire WASM environment in the SDK to interpret flags? > Whether you are developing for the web, back-end servers, or mobile devices, we've got you covered. Is desktop client support on the roadmap?

Happy to provide more details on this. In most cases, our server SDKs use a common WASM library to make all user bucketing and segmentation decisions locally. We have been impressed with the performance we've achieved with WASM. It allows us to share our most critical non-trivial amount of decision-making code, and it lets us share it between our Edge APIs and Server SDKs. So the same WASM code making decisions locally in our server SDKs is also making decisions at the edge for our APIs powering our client-side SDKs and public APIs.

We have stuck to the Bytecode alliance-supported Wasmtime runtimes that we highly recommend for anyone going down a similar path.

There have been cases with highly parallel environments where we needed to support micro-second level optimizations for our GO SDK, where we ended up building a native version of our bucketing logic. We hope that WASMs' upcoming threading and memory management improvements will make this use case supportable without needing native code. But for our higher-level language SDKs like NodeJS / Python / Ruby / PHP we've generally seen as good or better execution performance from WASM.

What desktop environment are you looking to support? We have customers using our iOS SDK in MacOS (we need to find a better name for our Apple platforms SDK that supports iOS / iPadOS / MacOS / WatchOS / tvOS). Our React SDK works with electron apps, and we have on our roadmap to investigate client SDK support for our .NET SDK.

Post reply on HN