Most applications provide you configuration files that are data / text based. Whether it is toml, JSON, yaml or some other format, you are usually defining values for pre-determined keys and that’s all.

This makes sense for many applications, but involved applications have explored configurations that make use of scripting. For example, vim uses VimScript, neovim uses Lua, but vscode uses json (as far as I remember), and Helix (vim inspired editor) argues editor configurations must be data, not scripting, and uses toml.

many tiling window managers use various programming languages (Qtile uses python, xmonad uses Haskell, Awesome uses Lua) while others stick to data configuration (i3).

Do you think that scriptable configuration is over-engineered and brings weaknesses, or is it warranted and grants the user power in these big applications? What are the benefits of scriptable configurations?

  • it_a_me@literature.cafe
    link
    fedilink
    arrow-up
    10
    ·
    edit-2
    10 months ago

    Turing Complete Configuration

    • more extensible
    • tend to be heavier
    • harder to provide detailed error messages
    • more difficult for new users

    Data Based Configuration

    • easier to use
    • easier to provide documentation
    • lighter to embed
    • more limited usecases
  • Alex@feddit.ro
    link
    fedilink
    arrow-up
    7
    ·
    10 months ago

    For stuff like, say, configuring all of your systems and programs in one file, actual programming languages are really useful. coughnixcough

  • I’ve become addicted to script-configured window managers. I won’t even try ones that aren’t, anymore.

    Bash is a scripting language, so it qualifies per your description, but the main advantage is that anything you can do in the config, you can do on the CLI: these WMs also have first-class CLI tooling, a consequence of CLI-first design. All configuration is runtime adaptable, and although auto config reloading can get you there, it’s fantastic to be able to change a configuration without it having to be persisted in a file.

    Seriously, next to tiling, scripted configuration is the most important feature of a WM. I haven’t encountered it outside of WMs very often, but for long running processes, it’s a great design.

  • rayon@lemm.ee
    link
    fedilink
    arrow-up
    5
    ·
    10 months ago

    Apart from text editors/IDEs I don’t really see the use for it. I think it is not practical unless all your users are both power users and programmers, which basically boils down to developer tools.

  • mvirts@lemmy.world
    cake
    link
    fedilink
    arrow-up
    4
    ·
    10 months ago

    I think the primary difference is that data based configuration is easier for software to modify and store.

  • Laura@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    10 months ago

    scriptable configuration makes sense if you want to be able to extend or modify the program like with vim while data based configuration makes sense if your program is already extendable/configurable enough like with i3

    • Cyclohexane@lemmy.mlOPM
      link
      fedilink
      arrow-up
      4
      ·
      10 months ago

      People like you are why I love online spaces like this.

      Yes, it’s obscure. Yes, nobody uses it. Yes, nobody ever heard of it before. No, that won’t stop me from using it.

  • PuppyOSAndCoffee@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    10 months ago

    it’s not just a json config file, it’s a schema that can be used to validate its input, and a library to load, validate based on said schema, and convert to-in memory representation with no extra code.