1. Comparisons with Erlang is not enough because Erlang does not have the compile/runtime duality (it does but it is restricted to parse_transforms, which are generally discouraged)
2. The sys.config approach is basically what config providers will provide out of the box
3. Honestly, the fact compile time configuration "pollutes" sys.config is on all purposes irrelevant. What are we aiming to save? Some bytes? Most tools abstract over sys.config anyway and Elixir has to do abstract over it as well otherwise Elixir developers have to configure everything using Erlang terms.
To me, the real issue with compile-time configuration is understanding that changing a compile-time configuration inside a release won't have any effect. It is important to state the problem well because it will help design the solution.
I think having some sort of "compilation?" flag does not solve the problem because it pushes concerns to users, as they now have to figure out what goes where, but it doesn't solve you accidentally putting something compile time mixed with runtime. I think the issue should be pushed to libraries authors, not library users.
There have been longer discussions on the topic, especially on ElixirForum, but this is a good digest. :)
José Valim
Skype: jv.ptec
Founder and Director of R&D