Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Piranha | 2,057 | a day ago | 12 | February 08, 2022 | 55 | apache-2.0 | Java | |||
A tool for refactoring code related to feature flag APIs | ||||||||||
Featureprobe | 1,124 | 5 days ago | 26 | apache-2.0 | TypeScript | |||||
FeatureProbe is an open source feature management service. 开源的高效可视化『特性』管理平台,提供特性开关、灰度发布、AB实验全功能。 | ||||||||||
Zmq.rs | 898 | a month ago | 8 | December 27, 2021 | 31 | mit | Rust | |||
A native implementation of ØMQ in Rust | ||||||||||
Flags | 882 | 3 days ago | 31 | July 04, 2022 | 8 | mit | TypeScript | |||
⛳️ Feature Flags for Next.js | ||||||||||
Fun_with_flags | 868 | 1 | 5 | 12 days ago | 36 | February 27, 2022 | 5 | mit | Elixir | |
Feature Flags/Toggles for Elixir | ||||||||||
Togglz | 837 | 43 | 15 | 4 days ago | 38 | June 07, 2022 | 57 | apache-2.0 | Java | |
Feature Flags for the Java platform | ||||||||||
Featuremanagement Dotnet | 762 | 3 days ago | 48 | mit | C# | |||||
Microsoft.FeatureManagement provides standardized APIs for enabling feature flags within applications. Utilize this library to secure a consistent experience when developing applications that use patterns such as beta access, rollout, dark deployments, and more. | ||||||||||
Go Feature Flag | 714 | a day ago | 94 | July 07, 2022 | 17 | mit | Go | |||
GO Feature Flag is a simple, complete and lightweight feature flag solution 100% Open Source. 🎛️ | ||||||||||
Featureflags | 574 | 1 | 2 months ago | 33 | January 07, 2020 | mit | Swift | |||
🚩 Allows developers to configure feature flags, run multiple A/B tests or phase feature roll out using a JSON configuration file. | ||||||||||
Feature Flags | 543 | 1 | 3 months ago | 11 | September 18, 2022 | mit | PHP | |||
A Laravel package for handling feature flags |
goforit is an experimental, quick-and-dirty client library for feature flags in Go.
Feature flags can be stored in any desired backend. goforit provides a several flatfile implementations out-of-the-box, so feature flags can be defined in a JSON or CSV file. See below for details.
Alternatively, flags can be stored in a key-value store like Consul or Redis.
Create a CSV file that defines the flag names and sampling rates:
go.sun.money,0
go.moon.mercury,1
go.stars.money,.5
func main() {
ctx := context.Background()
// flags.csv contains comma-separated flag names and sample rates.
// See: testdata/flags_example.csv
backend := goforit.BackendFromFile("flags.csv")
goforit.Init(30*time.Second, backend)
if goforit.Enabled(ctx, "go.sun.mercury", nil) {
fmt.Println("The go.sun.mercury feature is enabled for 100% of requests")
}
if goforit.Enabled(ctx, "go.stars.money", nil) {
fmt.Println("The go.stars.money feature is enabled for 50% of requests")
}
}
Included flatfile backends are:
This is a very simple backend, where every row defines a flag name and a rate at which it should be enabled, between zero and one. Initialize this backend with BackendFromFile
. See an example.
This backend allows each flag to have multiple rules, like a series of if-statements. Each call to .Enabled()
takes a map of properties, which rules can match against. Each rule's matching or non-matching can cause the overall flag to be on or off, or can fallthrough to the next rule. See the proposal for this system or an example JSON file. It's a bit confusing to understand.
In this format, each flag can have a number of rules, and each rule can contain a number of predicates for matching properties. When a flag is evaluated, it uses the first rule whose predicates match the given properties. See an example JSON file, that also includes test cases.
goforit is in an experimental state and may introduce breaking changes without notice.
goforit is available under the MIT license.