A common requirement in infrastructure maintenance is the ability to execute tasks at scheduled times and intervals. On Unix systems (and, by extension, Linux) this is traditionally handled by a cron daemon. Traditional crons, however, run on a single server and are therefore unscalable and create single points of failure. While there are a few open source alternatives to cron that provide for distributed scheduling, they either depend on a specific "cloud" management system or on other complex external dependencies; or are not generally compatible with cron.
The Wikimedia Labs has a need for a scheduler that:
- Is configurable by traditional crontabs;
- Can run on more than one server, distributing execution between them; and
- Guarantees that scheduled events execute as long as at least one server is operational.
The ideal distributed cron replacement would have as few external dependencies as possible and be general enough that it can be usable by other infrastructures (that is, does not rely on any specificity of the Wikimedia Labs).