danmayer/coverband

View on GitHub
roadmap.md

Summary

Maintainability
Test Coverage
# Future Roadmap

### Research Alternative Redis formats

- Look at alternative storage formats for Redis
  - [redis bitmaps](http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/)
  - [redis bitfield](https://stackoverflow.com/questions/47100606/optimal-way-to-store-array-of-integers-in-redis-database)
- Add support for [zadd](http://redis.io/topics/data-types-intro) so one could determine single call versus multiple calls on a line, letting us determine the most executed code in production.
- Changes and updates to Ruby Coverage Library that helps support templates
  - https://github.com/ioquatix/covered
  - https://github.com/simplecov-ruby/simplecov/pull/1037
- Consider A Coverband Pro / Option to run coverband service locally
- review how humperdink / e70 track translations, particularly how humperdink uses dirty sets with redis, for perf improvements for trackers
  - https://github.com/livingsocial/humperdink
  - https://github.com/sergioisidoro/e7o/blob/master/lib/e7o.rb
- Possible Cross Application Support to track library usage?
- Reducing differences between coverband local and coverband service

### Coverband Next...

Will be the fully modern release that drops maintenance legacy support in favor of increased performance, ease of use, and maintainability.

- look at adding a DB tracker
- defaults to oneshot for coverage
- possibly splits coverage and all other covered modules
- drop middleware figure out a way to kick off background without middelware, possibly use similar process forking detection to humperdink
  - https://github.com/livingsocial/humperdink/blob/master/lib/humperdink/fork_savvy_redis.rb
- options on reporting
  - background reporting
  - or middleware reporting
- Support for file versions
  - md5 or release tags
  - add coverage timerange support
- improved web reporting
  - lists current config options
  - eventually allow updating remote config
  - full theming
  - list redis data dump for debugging (refactor built in debug support)
- additional adapters: Memcache, S3, and ActiveRecord
- add articles / podcasts like prontos readme https://github.com/prontolabs/pronto
- add meta data information first seen last recorded to the coverage report views (per file / per method?).
  - more details in this issue: https://github.com/danmayer/coverband/issues/118
- See if we can add support for views / templates
  - using this technique https://github.com/ioquatix/covered
- Better default grouping (could use groups features for gems for rails controllers, models, lib, etc)
- Improved logging for easier debugging and development
  - drop the verbose mode and better support standard logger levels
  - redo the logger entirely
- redo config system and allow live config updates via webui
- move all code to work with relative paths leaving only stdlib Coverage working on full paths

# Out of Scope

It is important for a project to not only know what problems it is trying to solve, but what things are out of scope. We will start to try to document that here:

* We have in the past tried to add coverage tracking for all gems, this added a lot of complexity and computation overhead and slowed things down to much. It also was of less value than we had hoped. There are alternative ways to instrument a shared library to track across multiple applications, and single application gem utilization is easier to handle in a one of basis. It is unlikely we will support that again.