Samza's configuration system has several problems that we need to resolved.
- Want to auto-generate documentation based off of configuration.
- Should support global defaults for a config property. Right now, we do config.getFoo.getOrElse() everywhere.
- Should validate config up front, rather than thrown runtime exceptions randomly throughout the code.
- We are mixing wiring and configuration together. How do other systems handle this?
- We have fragmented configuration (anybody can define configuration). How do other systems handle this?
- How to handle undefined configuration? How to make this interoperable with both Java and Scala (i.e. should we support Option in Scala)?
- Should remain immutable.
- Should remove implicits. It's just confusing.
- Do we want to support complex types (list, map) for values, not just String?
We need a design proposal for this.