Introducing FeatureHub — open source Feature Flag service
By: Irina Southwell
Tags: Startup, Open Source, Software Development, Feature Flags, DevOps

A bit of history behind FeatureHub

In the last several years I have been working with many clients who have struggled to decide which feature flagging platform to choose. Often it would come down to cost and an unwillingness to take on additional expense. It seems as though it has been difficult to quantify the value of feature flags and experimentation in production to those who make overarching decisions, possibly because this technology is still not widely used and without the buy-in required to embed it as standard practice. As a result, many teams I have worked with built their own feature flagging service, with such a decision coming from the developers themselves. It is a great thing when you can build a service and have full control of it, however what a lot of teams don’t realise is that feature flags are quite an intricate technology, it needs to evolve with time, and like all products requires constant enhancement and maintenance. Therefore, the software teams end up building a very simple solution that doesn’t necessarily cater for the entire team. For example, it could be a feature service that doesn’t have an interface, so your “business folks” could never turn a feature on or off in production, which really defeats the purpose of the entire approach. Another problem is that often it doesn’t have important functions, like gradual rollouts and analytics in order to perform more complex A/B scenarios, let alone enterprise level security support. In addition to that, if your enterprise uses multiple tech and programming languages, it is likely they will be building multiple feature flagging services as opposed to having one universal service for the entire company.

About a year ago, I teamed up with other engineers and looking at these problems we thought of the idea of building a feature management tool that would be suitable for any team. We also wanted to make it open source and free as a self-hosted solution that is easy to install, maintain and integrate with CI/CD pipelines. It may be an ambitious goal to have, but our aim is to capture the teams who embrace open source, DevOps and cloud native tech and make it a “go-to” feature management and experimentation platform suitable for small start-ups, medium-sized businesses and large enterprise organisations.

One year later — FeatureHub was born.

What is FeatureHub?

FeatureHub is a Cloud Native and Open Source feature management and experimentation platform. It comes with FeatureHub Admin Console — web interface to control your features, and a variety of SDK’s that help you to connect FeatureHub with your code. It is designed for developers, testers, business people or anyone else in your team who wants to have control over features, release management and testing in production.

What type of features do you support?

Currently FeatureHub platform supports feature flags, strings, numbers or more advanced JSON formats intended for forms of configuration.

Is there a support for remote configuration, like in Firebase?

Yes, we support JSON remote configuration that can be used just like Firebase remote config. We also provide mobile SDK’s.

Can I use it for web, API and mobile applications?

Our goal was to build a universal platform to support all types of applications, hence we have the variety of SDK’s available to support that.

Currently we support the following SDKs and types of applications: Java, Java-Android, Javascript/Typescript, Node js, React, C#, Go, Dart, Flutter Mobile, Flutter Web

Can I rollout features to a percentage of the user base or to specified user IDs (email addresses?)

Yes! Starting from version 1.1 you have an ability to gradually rollout (split) based on percentage or targeting rules, like User Key, Country, Platform, Device, Version or a Custom rule according to your unique requirements.

Is it secure? Can I use it in a bank?

FeatureHub was designed to ensure that security was built into the platform from the ground up. If we split this into authentication vs authorization FeatureHub provides two primary methods for authentication: a login, by which someone is able to get a bearer token and then uses the API, or a Service account, by which SDKs are able to read (and potentially) update states of features. Authentication is provided by an inbuilt mechanism or OAuth2 (currently we support sign-in with Google, Microsoft and GitHub). The bearer token is by default stored in the database and validated on each request — it is expected we will implement this for Memcache and Redis as the need arises.

On the roadmap, we have plans for supporting other OAuth2 vendors, as well as SAML for those enterprise environments that prefer it.

Can I see some analytics on how my features are performing?

We always thought that FeatureHub is not just a feature flagging platform, but a tool to provide feedback to your team as early as possibly and as frequently as possible. Testing in production and allowing feedback loop is one of the fundamental concepts we followed while building the FeatureHub platform. To allow this visibility, we provide Google Analytics support out of the box. With this functionality you can set events and track how these events perform depending on the feature state. Read more about it here.

I heard it all before, do you have some other cool features?

FeatureHub is packed with additional features to provide DevOps teams with greater visibility. For example, “environment promotion order” allows you to order environments according to your test and release process. You will be able to see the state of your feature flags in a single dashboard across all of your environments in exactly the same order as you test and release your features.

allows you to order environments according to your test and release process. You will be able to see the state of your feature flags in a single dashboard across all of your environments in exactly the same order as you test and release your features. Lock/unlock function is something that we baked in for additional security, this prevents people accidentally turning features “ON” in cases where features are not yet ready to be switched on. For example, if you are a developer, you can lock the feature in production so product owners will know the feature is not yet available for them to be turned on. You could also use it to indicate readiness for testers in other environments.

How come it’s free?

FeatureHub is a self-hosted platform and typically you would install it on your own infrastructure, hence we don’t carry any of the hosting costs. Because we use Docker containers you can easily install it and operate on your own infrastructure.

Is it easy to maintain/upgrade/support?

FeatureHub comes packaged as Docker containers. Each service is a microservice and manages the schema updates for its own database. When you upgrade FeatureHub containers, it will lock the schema table and upgrade the database. We will indicate from release to release if this requires downtime. Release notes can be found here.

What is on the roadmap?

Additional languages SDKs, feature auditing support and various integrations with other 3rd party services.

FeatureHub platform is easy to install, configure and use with your apps. We made sure that FeatureHub caters for the needs of developers, testers, business users and anyone who would like to have visibility on the product features developed by engineering teams. The cloud-native aspect also makes it easy to host and scale FeatureHub in any cloud or on-premise and run it with Docker and Kubernetes. If you are looking for an open-source feature management software for your agile or DevOps team, give FeatureHub a go.