Planned functionality

Documentation

Documentation is likely incomplete.

Script uses Easing::Stream

(Available with 0.1.3) Script is currently linewise, but should be updated to leverage Easing::Stream.

Script timestamps option

(Available with 0.1.3) schedule-easing.pl --timestamps should work. It is currently available but not well tested.

Tests

All of the following need tests reviewed:

- Easing::schedule, Easing::init
- Easing::Ease
- Easing::Block
- Easing::Stream
- MD5 edge cases

To Review

Schedule::Easing::Stream, alarm(), and clock

See the comment about the single-use alarm() and how the clock setting overlaps with the timing of batch processing.

Reducing messages over time

Behavior when begin>final is undefined/untested. There may be situations where message reduction is desirable, such as when messages will be removed prior to other cleanup/refactoring/deprecation efforts.

Item weighting

All line/messages have the same weight. Message weighting may be a property of content on the line itself, however. Proposed to collect weights with a regexp, and use a configured total weight for scheduling. This would be separate than a function, though it may be implemented as a score modification function per line.

Value gaps

Both MD5 and Numeric can suffer from notable value gaps. Currently that requires separate configurations.

Sets

This library isn't really designed for ongoing rotation though sets of names, such as oncall rotations or words, such as the names of the days of the week. Preselection via modular arithmetic is a much simpler solution. Additional examples of name-based scheduling are needed before considering this as an easing option.

Rolling increasing window

Windows of the form 1, 2, 3, ..., followed by "1 and 2", then "2 and 3", ..., then "1 and 2 and 3". These can likely be achieved with MD5 using multiple digest captures.