Compared with Other Configuration Formats

What Confµgami offers next to the plain text formats and next to the configuration systems that solve the same problems, row by row.

The tables are about what each format or system offers together with its usual tooling, not about what a project could build on top of it. A cell names the restriction where there is one.

Text File Formats

Confµgami JSON5 JSON + Schema YAML + Schema TOML XML + XSD

Writing a value

Comments in the data file

yes

no

yes

yes

yes

Ranges, patterns and lengths checked

yes

yes

yes

no

yes

Constraints relating several values

yes

conditional presence

conditional presence

no

XSD 1.1 assertions

Physical unit on a value

yes

no

no

no

no

Default declared in the model

yes

yes

yes

no

yes

Overridable default structure

yes

no

no

no

no

Documentation reaching the editor

yes

yes

yes

no

yes

Documentation written on the data

yes

no

no

no

no

Expressions and computed values

in constraints

no

no

no

no

Working across files

Validated references between elements

yes

no

no

no

yes

Several files contributing to one object

yes

no

no

no

no

A file contributing to one nested element

yes

no

no

no

no

Priority ladder deciding an override

yes

no

no

no

no

One block of settings applied to many elements

yes

no

within one document

no

no

Reuse inside the configuration with type and name

yes

no

anchors, untyped

no

no

Isolated projects in one workspace

yes

no

no

no

no

Understanding the result

Record of where a merged value came from

yes

no

no

no

no

Custom annotations carried with the data

yes

unvalidated

no

no

appinfo

Custom annotations validated by the model

yes

no

no

no

no

Living with the model

Naming conventions enforced on the model

yes

no

no

no

identifier pattern

Model version recorded in the data file

yes

dialect only

dialect only

no

by namespace

Deprecation with replacement and migration text

yes

a flag

a flag

no

no

Completion, hover, go to definition and rename

yes

completion and hover

yes

no

completion and hover

Completion writing the whole required structure

yes

required members

yes

no

required members

Canonical formatter for the data files

yes

external tools

external tools

yes

external tools

Typed bindings generated from the model

Rust, Python

yes

yes

no

yes

Machine-readable diagnostics for CI

yes

yes

yes

no

yes

Model exposed to AI agents over a protocol

yes

no

no

no

no

Configuration Systems

The same rows against the systems that do solve those problems, each in its own domain:

Confµgami Kconfig Devicetree ARXML CUE Pkl

Writing a value

Comments in the data file

yes

yes

yes

yes

yes

yes

Hand-editable without a vendor tool

yes

yes

yes

the vendor tool

yes

yes

Ranges, patterns and lengths checked

yes

int ranges

with bindings

yes

yes

yes

Constraints relating several values

yes

depends on, select, symbol ranges

conditional presence with bindings

tool specific

yes

yes

Physical unit on a value

yes

no

in the name

yes

no

size and time

Default declared in the model

yes

yes

documented only

yes

yes

yes

Overridable default structure

yes

defconfig

board dts

vendor configuration

no

no

Documentation reaching the editor

yes

in menuconfig

with bindings

tool specific

partly

yes

Documentation written on the data

yes

no

no

tool specific

no

no

Expressions and computed values

in constraints

yes

no

yes

yes

yes

Working across files

Validated references between elements

yes

between symbols

phandles

yes

within the model

within the model

Several files contributing to one object

yes

with a merge script

overlays

yes

yes

by amending

A file contributing to one nested element

yes

flat symbols

overlay fragments

path repeated

path shorthand

no

Priority ladder deciding an override

yes

last fragment wins

later overlay wins

tool specific

conflicts error

the amender wins

One block of settings applied to many elements

yes

no

no

no

yes

yes

Reuse inside the configuration with type and name

yes

no

no

no

yes

yes

Isolated projects in one workspace

yes

one .config at a time

per board file

tool specific

by package

by package

Understanding the result

Record of where a merged value came from

yes

no

no

no

no

no

Custom annotations carried with the data

yes

no

no

annotations and special data groups

attributes

yes

Custom annotations validated by the model

yes

no

no

no

no

yes

Living with the model

Naming conventions enforced on the model

yes

no

node and property names

identifier pattern

no

no

Model version recorded in the data file

yes

no

no

yes

no

by package

Deprecation with replacement and migration text

yes

no

a flag

a flag

no

yes

Completion, hover, go to definition and rename

yes

menuconfig search

with an extension

tool specific

partly

yes

Completion writing the whole required structure

yes

no

no

required containers

no

no

Canonical formatter for the data files

yes

no

no

tool specific

yes

in the IDE

Typed bindings generated from the model

Rust, Python

C macros

C macros

yes

Go

four languages

Machine-readable diagnostics for CI

yes

no

no

tool specific

no

no

Model exposed to AI agents over a protocol

yes

no

no

tool specific

no

no