Live data from Hacker News

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

news.ycombinator.com

11–20 of 35 posts

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

#11
post #6

Aren't non-binary flags even worse from the point of view of deleting them? There is a very good reason feature flags are binary: they start in one state and end in the other.

This is definitely an interesting challenge you bring up.

I think regardless of the how difficult it is to remove a non-binary flag, the market has moved feature flagging away from just binary and merged with the concepts of remote configuration and experimentation, both of which require more than just ON/OFF states.

For us, we're not trying to shy away from that challenge, so it forces us to come up with interesting solutions to the problem.

A couple ways we're solving for this problem are:

1. Variable Schemas - We just launched a feature that allows for engineers to strictly define the acceptable values of any feature flag they are creating, so that as other team members interact with those flags, there are programmatic controls in place that create guardrails on the input. This also does double-duty in creating strongly typed code, so that usage in code is clear, easy to navigate, use and cleanup when the time comes.

2. Code Cleanup - An example of one of those solutions is our Code Cleanup CLI command. Regardless of what the flag type is (boolean, number, string, JSON) you can provide the prompt with what you would like the end state to be and the AST logic built into the CLI will create a proposed diff for your code wherever a DevCycle flag exists which you can then either edit further or submit directly for a PR.

I 100% agree non-binary flags present a challenge, but we are definitely interested in finding unique ways to solve that problem.

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

#12

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…

Feature flags in source control seems to be missing the point. Separating feature flags and source let’s you decouple your code releases from your feature releases. Requiring a deploy of new to code to enable or disable a feature seems to negate almost all of the benefit of using feature flags to begin with.

They don't necessarily have to rolled out as part of the same release process. You can still decouple them without giving up them being version controlled which to me is also preferable over just toggling things through a gui.

Having a release process for flags also allows you to run integration tests with those flags, canary alerting and automated rollbacks.

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

#14

Earlier quoted context omitted.

Feature flags in source control seems to be missing the point. Separating feature flags and source let’s you decouple your code releases from your feature releases. Requiring a deploy of new to code to enable or disable a feature seems to negate almost all of the benefit of using feature flags to begin with.

They don't necessarily have to rolled out as part of the same release process. You can still decouple them without giving up them being version controlled which to me is also preferable over just toggling things through a gui. Having a release process for flags also allows you to run integration tests with those flags, canary alerting and automated rollbacks.

Yes this is how I view it. Just because it's in code doesn't mean it's the same codebase, same deployment process, same servers, or anything else. Code is the source of truth and log of how that truth changed over time.

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

#15

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…

Really interesting take on your experience with experimentation / feature flags and wanting it to be more stateful in code. I assume that follows the more Terraform-like infrastructure as code approach, which certainly makes sense to rollout infrastructure changes. We have a V1 of a Terraform provider where we hope to enable more control through terraform to manage infrastructure changes directly, but you are correct…

Thanks for the detailed reply, although I feel like I may have miscommunicated the aim here. I'm not really thinking about what is being launched, but how, and where the truth lives.

A CLI is certainly a nice feature, but brings decisions that need to be made: who runs it, where do they run it, when, how do you know what was run, how do you deploy the CLI, and so on. The same can be said for, say, running your test suite – and the solution there is to have CI do it for you. Sure you can run, but the run that matters is the one when you merge your branch and that's done in a controlled environment typically defined in code.

Rolling out features/flags is the same, and I think if the state of all the flags, features, traffic allocations, targeting, and so on, is all defined in code, then all those questions you get with a CLI go away. Who runs it? An automated process. Where do they run it? In a controlled environment, not on a dev machine. How do you know what was run? It's all there in code. How do you deploy the CLI? You don't need to.

> for customers looking to disconnect the deployment of code from the release of features, our approach where you can "release" features at any time has many advantages over "git-ops" style configurations

I'm interested as to why you say this has many advantages, because I don't see why a git based workflow couldn't run this. You could for example have DevCycle subscribe to the notifications for the git repo and update its internal state any time new changes are made to the git repo. That would be preferable over a UI or CLI because the whole state is there in a machine readable format ready for tooling to use.

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

#16

We use growthbook and love it. In what ways do you differ?

Hey, awesome that you use Growthbook. They seem to be doing an amazing job on the data and analytics space tied to A/B testing and feature flagging.

Our perspective differs from Growthbook's in that we don't want to replace your analytics source of truth in any way. Product analytics has come a long way in the last few years with a lot of truly amazing players like Mixpanel, Amplitude, Looker or almost countless others.

Our core focus is developers and the developer experience.

What that means is that we're trying to avoid adding features and functionalities that would be directly competitive to analytics providers, and instead be better at integrating with those tools, so you can manage your flags in DevCycle and do your flag and experiment analysis directly in your team's source of truth.

At the moment what this means for our product roadmap is that we're working on things like a feature rich CLI, Typescript enhancements, automatic code cleanup, etc and we're hoping to continue to head down the road of developer experience as opposed to building non-developer tooling.

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

#17

Earlier quoted context omitted.

Really interesting take on your experience with experimentation / feature flags and wanting it to be more stateful in code. I assume that follows the more Terraform-like infrastructure as code approach, which certainly makes sense to rollout infrastructure changes. We have a V1 of a Terraform provider where we hope to enable more control through terraform to manage infrastructure changes directly, but you are correct…

Thanks for the detailed reply, although I feel like I may have miscommunicated the aim here. I'm not really thinking about what is being launched, but how, and where the truth lives. A CLI is certainly a nice feature, but brings decisions that need to be made: who runs it, where do they run it, when, how do you know what was run, how do you deploy the CLI, and so on. The same can be said for, say, running your test s…

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 transformative in various ways that fit better with an API-based model for Feature Flags:

- Many flags / remote config changes in production environments are made by non-developer members of a team.

- Coordinating releases across multiple platforms that have different deployment cycles. For example, deploying a new feature to Mobile + Web + APIs simultaneously.

- Enabling / disabling flags in real-time across your stack to respond to incidents.

- Support / Sales teams using Flags to gate features for customers.

- Remote config to populate data for UIs, to act as a CDN for content.

- Rolling out infrastructure changes, being able to roll back changes instantly without another deployment.

(And for context: our Feature Flag decisioning is done locally for our local bucketing server SDKs)

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

#19
post #18

Congrats on the launch! Will be great if you can shed some light on your initial customer acquisition journey. How did you go about marketing and finding the first few customers?

Hey, thanks so much!

This is an interesting question, given our unique situation, as DevCycle is effectively a startup within a startup.

As I mentioned in the post, we created DevCycle because of a need we saw among our customers at Taplytics. So in terms of finding first customers, our primary goal was to make DevCycle better than Taplytics for this specific use case as quickly as possible. Once we got to a minimum viable product that was sufficiently good, the conversation with relevant customers at Taplytics was easy, because we were able to point to a product that better fit critical use cases for them.

Beyond those customers, because our focus is on Developer Experience we are taking a Developer-Led approach to customer acquisition. So this means trying as best as we can to write and create quality content, sponsoring developer-focused podcasts/twitch streams, etc. It also means meeting developers where they already are, and supporting others that are building amazing communities. So we are trying to be very active participants in communities like OpenFeature.

We for sure have a long way to go, but from a product and engineering perspective, it's nice for the team to be able to feel like they can participate in the customer acquisition journey by just talking about the interesting challenges they are facing day-to-day.

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

#20

Earlier quoted context omitted.

Really interesting take on your experience with experimentation / feature flags and wanting it to be more stateful in code. I assume that follows the more Terraform-like infrastructure as code approach, which certainly makes sense to rollout infrastructure changes. We have a V1 of a Terraform provider where we hope to enable more control through terraform to manage infrastructure changes directly, but you are correct…

Thanks for the detailed reply, although I feel like I may have miscommunicated the aim here. I'm not really thinking about what is being launched, but how, and where the truth lives. A CLI is certainly a nice feature, but brings decisions that need to be made: who runs it, where do they run it, when, how do you know what was run, how do you deploy the CLI, and so on. The same can be said for, say, running your test s…

Prefab has something that you could use in more or less this way. The value of the flag can come from different sources and there is a defined order precedence. The base levels are default yaml files, which would be committed in your project. We think of live values from the server as a "potential override". So if you only wanted things in git you could just not use the UI. Details in https://docs.prefab.cloud/docs/explanations/bootstrapping

I'm spike-ing on some similar/adjacent things right now actually if you want to jam. I won't claim that what exists today is very polished for your usage pattern.

Post reply on HN