- Audit the code TODOs
  - QA, regression testing of everything
  - documentation (man pages, books, etc)
  - many operators in the language are not yet implemented
  - "tail -f" mode of operation for archives
  - on-demand loading of older historical data
  - discovery of new archive sources below /var/log/pcp/pmlogger
  - live mode of operation for pmcd (live queries?)
  - support for 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 this 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 (run in-server).

- 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
- redis-ml (machine learning) interaction with streams (time series)
- redisearch for a help text search service for all metric and indom
  help text.
