<div><div dir="auto">Hi,</div><div dir="auto"><br></div><div dir="auto">Both approaches (key-value or sys.config) have pros and cons. Two aspects I would take into account when making this choice are: </div><div dir="auto"><br></div><div dir="auto">1. How complex is the config? Do I need to represent complex data structures in my config? If so, a simple key-value or YML solution may create more problems than it solves (quoting, doubts when translating things into atoms or strings or binaries, long nested structures)</div><div dir="auto"><br></div><div dir="auto">2. How is the configuration going to be managed? How does it vary among hosts/clusters? Are there overriding rules? Tools like Ansible can handle key-value environment files or similar smoothly, but the moment they have to replace a hostname and a port within a multi-line proplist, the playbooks/scripts immediately grow in complexity.</div><div dir="auto"><br></div><div dir="auto">Roberto</div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 2 Apr 2020 at 07:32, Amelia Aronsohn <squirrel@wearing.black> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> What problem do they have with sys.config? Do you have problems you are trying to work around or is it "I want something I already know?"<br>
<br>
Best wishes,<br>
Amelia<br>
<br>
On 4/1/20, 14:01, "erlang-questions on behalf of Mark Geib" <<a href="mailto:erlang-questions-bounces@erlang.org" target="_blank">erlang-questions-bounces@erlang.org</a> on behalf of <a href="mailto:mark.geib.44@gmail.com" target="_blank">mark.geib.44@gmail.com</a>> wrote:<br>
<br>
    I have been tasked with looking into alternatives to the <br>
    sys.config configuration for erlang releases that are more<br>
    palpable for non-erlangers. In my group there are non-erlang<br>
    developers that suggest property based key=value configs, and<br>
    others that suggest yaml.<br>
<br>
    I have looked into cuttlefish, but have reservations regarding<br>
    how it replaces the relx management script for a release, I<br>
    use rebar3. Also, there will certainly be times where structured<br>
    config is necessary and cuttlefish’s limitations will make that<br>
    difficult.<br>
<br>
    I have also looked at yaml parsers, basically transforming the<br>
    yaml config into erlang terms mimicking the sys.conf, and then<br>
    in my application start, I set the environment for the application<br>
    from this. This sort of works in the simple cases, but when you<br>
    need to configure multiple applications, like logger, then it<br>
    gets hard to do something general purpose. And I have not even<br>
    looked into how to handle dependencies that could have yaml<br>
    configs, etc.<br>
<br>
    So, does anyone use anything other than sys.conf, i.e. the native<br>
    erlang configuration, and if so what do you suggest.??<br>
<br>
    Also, is this really a problem.?? I have no problem with sys.conf,<br>
    but I write erlang and don’t get squeamish looking at nested braces.<br>
<br>
    Thanks, and I welcome all opinions.<br>
<br>
    Mark.<br>
<br>
</blockquote></div></div>