This repository contains source code for shared components used by the Omex team at Microsoft to build scalable and highly available distributed systems.
* [__Gating__](https://github.com/microsoft/Omex/tree/master/src/Gating) - This library provides an implementation of a flighting mechanism for new features.
* [__DocumentDb__](https://github.com/microsoft/Omex/tree/master/src/DocumentDb) - This library contains wrapper APIs over Microsoft Azure Document Db .Net Client SDK.
* [__System__](https://github.com/microsoft/Omex/tree/master/src/System) - This library contains shared code for Omex libraries. You'll find there utilities for logging,
* [__System.UnitTests.Shared__](https://github.com/microsoft/Omex/tree/master/src/System.UnitTests.Shared) - This library contains abstractions and utilities used for creating unit tests.
* [__Gating.UnitTests.Shared__](https://github.com/microsoft/Omex/tree/master/src/Gating.UnitTests.Shared) - This library provides classes used in unit tests for Gating library.
* [__Gating.Example__](https://github.com/microsoft/Omex/tree/master/src/Gating.Example) - This is a small console application that uses the Gating library to showcase some of its features.
* [__GateGen__](https://github.com/microsoft/Omex/tree/master/src/CodeGenerators/GateGen) - This is a code generator tool that produces strongly typed gates (C# file) from the gates xml files. Should be used as a dependency in another project.
* [__TimedScopeGen__](https://github.com/microsoft/Omex/tree/master/src/CodeGenerators/TimedScopeGen) - This is a code generator tool that produces strongly typed timed scopes (C# file) from the timedscopes xml files. Should be used as a dependency in another project.
The easiest way to communicate with the team is via GitHub issues. Please file new issues, feature requests and suggestions.
# FAQ
## What is the difference between the master and release branches?
There are two types of NuGet packages that get built from the code in this repository:
* __Pre-release packages__: the pre-release packages are built after every change on the master branch
* __Release packages__: after a period of time when more changes are made to master, the Team creates release packages which are published to NuGet.org.
The release packages are built from the master branch. Public contributions are accepted only from the master branch.
## Where are the NuGet packages for the components in this repository available for download?
The pre-release NuGet packages which are built from the master branch are available to download from the MyGet feed