- Audit the code TODOs
  - QA, regression testing of everything
  - documentation (man pages, books, etc)
  - add more operators and functions to the language
  - live mode of operation for pmcd (live queries?)
  - support for strings, aggregates and event record decoding
  - optimised archive loading process - using batching updates
    based on metadata reading alone (not pmFetchArchive)
  - handling of nesting in JSONB labels (see notes in code) -
    both the load and query code need tweaks to support this.

- set a TTL on all of the pcp:values:series keys
- configuration mechanism for series key TTL value

- configuration mechanism for multiple Redis servers
- support dynamic reconfiguration using cluster protocol
- scale-up: sharding of redis requests (cluster node hashing, and
  creating connections opportunistically)
- scale-down: private redis server (unix socket) if none available

- series functions (Nth-percentile, average, stddev, max-N, min-N,
  rates - operating on streams, so LUA scripts could help out with
  distributing this work to the nodes.

- pmproxy interface (sits directly above the libpcp_web API)
- pmwebd interface (sits directly above the libpcp_web API)

- enforcing/injecting use of security labels in queries
- enforcing/injecting use of (multi-)tenant labels in queries

- time series graphing and alerting (Grafana plugin)
  http://docs.grafana.org/plugins/developing/development/
  http://docs.grafana.org/plugins/developing/datasources/

- pmdaredis(1) implemented in C using libpcp_web and batched queries
- neural-redis analysis and application with time series (streams)
- redisearch for time series search using metric and indom help
  text, metric names, instance names, label names and values
