SOML: A Config Format That Refuses to Guess Your Types
SOML – A Config Format for Humans
SOML (Sindre's Objectively Marvelous Language) is a new draft config format that combines JSON's strictness with YAML's comfort. Its core rule: a value's type comes from its syntax, never its content—so '123' is a string, 123 is an int, and country: no is an error, not false. It adds comments, literal strings, block strings, dates, instants, and durations, plus a canonical form and a shared conformance suite of nearly 1000 cases so every parser agrees.
JSON has the strictness but not the comfort: quotes, commas, and braces everywhere, and no comments. YAML has the comfort but not the clarity: types guessed from content, so country: no becomes false and version: 3.10 becomes 3.1. SOML gives you the comfort and the strictness, without the guessing.
- layer8
> what you see is what you get: […] '10.20' and 10.20 are a string and a float, exactly as written.
This seems both underspecified and incorrect. Assuming a single-precision binary IEEE 754 floating-point number, 10.20 is actually 10.19999980926513671875. With double precision, it would be 10.199999999999999289457264239899814128875732421875. So what you see is not what you get, and it’s also unclear what exactly you’ll get.
> A value's type comes from its syntax, never from its content […] allowed-origins: [
]
This looks like URLs, but are strings. What if you had:
> allowed-origins: [
'httpș://example.com'
'ħttps://example.org'
]
Still strings and therefore fine for the SOML parser, but probably not a valid configuration in terms of the application-level types of the values. The syntax telling you the types is of limited utility as soon as the application schema has more specific ideas about the types than the configuration language.
- lightandlight
Ironically the project seems LLM-generated.
I don't want to read Claude's interpretation of why your project matters. I want you to tell me directly.
- ActionHank
Gotta be honest, any time there's a solution like there that makes it more "human" they've just removed the structure / syntax.
I'm guessing so you don't need to learn them, so then anyone off the street can edit the files, but it will break so bad without those guardrails, usually in some non-obvious way.
Leading us back to inventing some new "human" thing, but with more implicit rules, and the cycle continues.
- mofle
Hey all. I'm the one working on this (a human). It's still early. It's something I have been wanting for many years, but I never had the time to invest in it until now.
It's already powering the frontmatter of my website: https://github.com/sindresorhus/sindresorhus.github.com/blob...
- james_marks
From the title, I thought this was a specification for configuring humans. I don't quite know what that means, and I'm disappointed still not to know.