Featurz is a feature toggle manager for .Net applications. The central feature of this tool is to determine if a feature is active or not. Active can be determined by multiple strategies.
Featurz was developed on top of the Archer Application Architecture and uses a CQRS'ish architecture.
Feature toggles allow you to develop in trunk or your main line without having to worry about complex branching strategies. If you are working on a new change and it isn't ready for production, you can hide it behind a feature toggle and it won't be exposed in production. Martin Fowler explains it better, http://martinfowler.com/bliki/FeatureToggle.html. Feature toggles are just simple logic (if/else) that can be implemented without a manager like Featurz. Featurz just makes it so much easier to get started with toggles and toggle management without the development cost. Additionally, with Featurz, you have the source code so if something isn't to your liking, you can change it.
You can poke around the project, but nothing is really ready yet. The code in the repo is a very early stage proof of concept, may not work, has a lot undone, and will have UIs and APIs changed drastically.
If you don't have MongoDb installed you need to install it.
In the project you want to toggle features for:
- Install the mongocsharpdriver to your project.
- Add web.config/app.config settings:
<appSettings>
<!-- featurz.ticketsystemurl will be used to compose links for the ticket
numbers you add to features. Example: if you url is http://ticketsystem/
and you ticket is T1234, your link will be http://ticketsyste/T1234 -->
<add key="featurz.ticketsystemurl" value="http://url-for-your-ticket-system/" />
<!-- archer.db.connectionstring.mongo is the connection string to your
MongoDb -->
<add key="archer.db.connectionstring.mongo" value="mongodb://localhost/{DB_NAME}"/>
<add key="archer.db.name" value="Featurz"/>
</appSettings>
<connectionStrings>
<!-- MongoServerSettings is not currently used, but is kept for testing
purposes -->
<add name="MongoServerSettings" connectionString="mongodb://localhost/Featurz" />
</connectionStrings>
- Install Featurz NuGet package or add a reference to:
- Featurz.dll
- Featurz.Application.dll
- Archer.Core.dll.
- Follow recommendations in the book Developing Large Web Applications and Angular App Structure
- Activate features by a dynamic strategy - features can be activated by multiple strategies that allow the extension of what an active feature means (e.g. active for 25% of users, active between a date range...).
Contributions are welcome, but all contributions must be licensed under GPL v3.
Copyright 2014 Charles Bryant. Licenced under GPL v3.
- Togglz - Feature Flags for the Java platform
- ArcherAppTemplate - provides base template for the Featurz architecture.
- Adam Tibi - the CQRS used is based on his Code Project article on CQRS.