Skip to main content

Release Process

Overview

Fiddler bridges the cloud and on-prem worlds by adopting the principles of continuous deployment, but only actually deploying to cloud customers every two weeks (or to airgapped customers every month).
Core Principles
  • Simplify: Fewer steps, more frequently.
  • Highest leverage: Automate everything. No excuses.
  • Tolerate failure: If something breaks, (a) disable its feature flag, (b) revert it, (c) cancel the release and move to the next one.
  • Engineer not Operate: Proper test coverage is more important than the feature itself.
  • Service Ownership: Engineers own delivering their code, in working order, into production. This includes all necessary testing, documentation, alerts/runbooks, upgrade plans, etc.
Engineers and PMs will add release notes to the page after they are done. Eventually, the release notes may be automatically generated from GitHub.

Release Schedule

Releases are time-based, not feature based. They ship when the clock strikes Tuesday, regardless of whether or not some particular work item is ready. New versions are deployed to SaaS customers on a biweekly schedule, and to on-prem customers on a monthly basis. Cadence Environments

Why Tuesday?

We release and deploy on Tuesdays for several reasons:
  1. To have a predictable day of the week where everyone knows what will happen.
  2. Tuesday allows us several days to deal with any incidents that arise without paging out mental context over the weekend.
  3. Deploying or releasing on Monday would sometimes be pushed to Tuesday because of holidays.
  4. Monday gives the team time to prepare for the week ahead, should that be needed.
  5. Tuesday is a well-known deployment day in the industry, in the form of Patch Tuesday.

FAQ

If your code is not ready by the release branch cutoff it will not make it into the release (even if it’s just a day late!).If your code is not ready by the cutoff date, it will be included in the following release. It is each engineer’s responsibility to honor this process, even if it means your code is delivered to customers later than promised.Please be sure to follow our guide to making ambitious changes safely. Pay special attention to the part about database upgrades being 100% backwards compatible.
If you are making a change to the database, you should (almost a must) write an upgrade test. For now, reach out to @rajeevprabhakar for help.
We call for all completed code to be merged to main by EOD, Monday. That is so we can have a successful run of nightly tests before we cut the branch at 9:00 Pacific. Get your code in by then! If you miss the branch cut, your code will go out in the following release (which is only two weeks off!).
If qualification cannot be completed successfully, despite disabling feature flags, we will cancel the release and spend the remainder of the release cycle addressing any remaining release blockers.
Instead of manual validation steps, automated testing must be used. Feature and Product owners must sign off their features — this is a pre-requisite for validation. Product owners must work closely with engineers throughout the development process.
Because our releases are time-based and not feature-based, there is no longer a concept of a release blocker. The release is either ready to go or not.
Common Q&A relating to feature flags:
QuestionAnswer
How do we handle feature flags for features that also include database/schema changes?Backwards compatibility — both old and new state need to work.
When do we settle on the feature flags for a release?Feature flags should be turned on in code before the branch cut, like any other code.
Will we ever have feature flags turned on for only a few customers?No — there should not be any specific feature flag setting per customer.
When do we clean up feature flags?Feature flags should be deleted one release after they roll out.
How do we avoid accidental release of a feature?It is the responsibility of the TL/developer to validate state of their feature flags.
We absolutely should. We must. Carrying dead weight around slows us down. Please plan this accordingly in your sprints.The timeline for deprecation should be 6 months, after which the feature is removed. This is the direction, but must be communicated to our customers first.
We use GitBook to host our documentation. The docs process aligns exactly with the code development process because GitBook syncs directly with GitHub — docs will be written with PRs. GitBook also supports WYSIWYG editing from the UI that commits back to GitHub.
The client can be released separately from the main product because the product’s APIs must be backward compatible. The customer migrating from one version of the API to another must be time-independent from the upgrade of our product.Therefore, the client lives in its own repo, has its own version numbering scheme, and does not need to conform to the process documented here. However, as a matter of convenience, we will follow the same cadence most of the time.
Merge flow diagram coming soon.
Any engineer making a fix for a customer is fully empowered — and expected — to deploy that fix to the customer(s) themselves. This is the fastest and most reliable way of ensuring the fix is delivered. It’s faster because additional overhead is not needed between two people, and it is more reliable because the person who understands the problem is able to validate that it is working as intended.To build a release, see:To deploy a specific release to a customer, you can either edit files in the old fiddler-labs/deployments repo or in the new fiddler-labs/cloud-deployments repo. Examples of how to prepare the PR can be found in the respective repos.
Docs for the upcoming release are added to GitBook immediately after the release branch is cut. Docs for a new release are made public on Release Tuesday. While available on the site, they are not made the default until the deploys are about halfway through our Cloud customers. That timing is currently a judgement call made by the field team.
The release plan page is updated by the owner (engineer or PM) before the release is cut at 9 AM PT on Tuesday.
Field enablement messages come in Slack from Product on the Thursday or Friday after the release is cut.
Last modified on March 23, 2026