conv.

All stories
TechQuiet 9d · day 15

Sindre Sorhus launches SOML, a config format blending JSON strictness with YAML readability

A new configuration language aims to eliminate the trade-offs developers face between syntactic comfort and type predictability.

What to know

  • SOML is a draft configuration format by Sindre Sorhus that aims to combine JSON's type strictness with YAML's readability—no braces, quoteless keys, comments, and native support for durations and dates.
  • The core design principle is that type comes from syntax, never from content, eliminating YAML's implicit typing (where 'no' becomes false) and TOML's context-dependent table rules.
  • Early Hacker News discussion raises technical concerns: floating-point precision claims lack accuracy, the 'for humans' framing is contested, and some argue GUIs serve end-users better than plain-text formats.
  • Sorhus is already using SOML in production on his website and has committed to schema support; he is actively responding to feedback and revising documentation based on developer critique.

The dispute Whether simplifying syntax syntax for config files meaningfully serves non-technical users, or whether structural simplification merely introduces implicit rules that will confuse novices without guardrails. · positions read across 14 posts and comments

many voices

SOML addresses real friction points in existing formats by combining JSON's strictness with YAML's comfort, solving problems like implicit typing and context-dependent parsing.

  • “SOML keeps TOML's predictable types, literal strings, and strict duplicate-key handling, while removing context-dependent table rules and inconsistent value parsing.”

    Sindre Sorhus · Mastodon ↗
some voices

The 'for humans' claim is misleading; removing structure without guardrails will break configs in non-obvious ways, and graphical interfaces would actually serve users better.

  • “A GUI is a config format for humans as it can you show what all of the configuration options are along with text that tells you what they do.”

    joshheitzman · Hacker News ↗
some voices

The specification contains technical inaccuracies and lacks clarity: 'what you see is what you get' is false for floating-point values, TOML should be mentioned in the first paragraph, and the practical value of built-in instants and durations needs justification.

  • “So what you see is not what you get, and it's also unclear what exactly you'll get.”

    layer8 · Hacker News ↗

Sindre Sorhus SOML creator

Sindre Sorhus launches SOML, a config format blending JSON strictness with YAML readability
github.com

How it unfolded 7 developments, newest first · click a bar or a number to jump articlespostscomments

Peak 10 pieces in 4h at Nov 2, 2 PM; 18 pieces over 15 days (1 article · 5 posts · 12 comments) Oct 27, 3 PM — 2 pieces · 2 posts — Mastodon 1, Hacker News 1Oct 27, 7 PM — quietOct 27, 11 PM — quietOct 28, 3 AM — quietOct 28, 7 AM — quietOct 28, 11 AM — quietOct 28, 3 PM — quietOct 28, 7 PM — quietOct 28, 11 PM — quietOct 29, 3 AM — quietOct 29, 7 AM — quietOct 29, 11 AM — 1 piece · 1 post — Mastodon 1Oct 29, 3 PM — quietOct 29, 7 PM — quietOct 29, 11 PM — quietOct 30, 3 AM — quietOct 30, 7 AM — quietOct 30, 11 AM — quietOct 30, 3 PM — quietOct 30, 7 PM — quietOct 30, 11 PM — quietOct 31, 3 AM — quietOct 31, 7 AM — quietOct 31, 11 AM — quietOct 31, 3 PM — quietOct 31, 7 PM — quietOct 31, 11 PM — quietNov 1, 2 AM — quietNov 1, 6 AM — quietNov 1, 10 AM — quietNov 1, 2 PM — quietNov 1, 6 PM — quietNov 1, 10 PM — quietNov 2, 2 AM — quietNov 2, 6 AM — quietNov 2, 10 AM — 4 pieces · 1 article · 2 posts · 1 comment — Hacker News 2, Newswires 1, Mastodon 1Nov 2, 2 PM — 10 pieces · 10 comments — Hacker News 10Nov 2, 6 PM — quietNov 2, 10 PM — quietNov 3, 2 AM — quietNov 3, 6 AM — 1 piece · 1 comment — Hacker News 1Nov 3, 10 AM — quietNov 3, 2 PM — quietNov 3, 6 PM — quietNov 3, 10 PM — quietNov 4, 2 AM — quietNov 4, 6 AM — quietNov 4, 10 AM — quietNov 4, 2 PM — quietNov 4, 6 PM — quietNov 4, 10 PM — quietNov 5, 2 AM — quietNov 5, 6 AM — quietNov 5, 10 AM — quietNov 5, 2 PM — quietNov 5, 6 PM — quietNov 5, 10 PM — quietNov 6, 2 AM — quietNov 6, 6 AM — quietNov 6, 10 AM — quietNov 6, 2 PM — quietNov 6, 6 PM — quietNov 6, 10 PM — quietNov 7, 2 AM — quietNov 7, 6 AM — quietNov 7, 10 AM — quietNov 7, 2 PM — quietNov 7, 6 PM — quietNov 7, 10 PM — quietNov 8, 2 AM — quietNov 8, 6 AM — quietNov 8, 10 AM — quietNov 8, 2 PM — quietNov 8, 6 PM — quietNov 8, 10 PM — quietNov 9, 2 AM — quietNov 9, 6 AM — quietNov 9, 10 AM — quietNov 9, 2 PM — quietNov 9, 6 PM — quietNov 9, 10 PM — quietYesterday, 2 AM — quietYesterday, 6 AM — quietYesterday, 10 AM — quietYesterday, 2 PM — quietYesterday, 6 PM — quietYesterday, 10 PM — quietToday, 2 AM — quiet 1–234–7
Oct 28Oct 30Nov 1Nov 3Nov 5Nov 7Nov 9now · 5:43 AM ET
  1. 7

    Sorhus responds to feedback and confirms early real-world use

    Sorhus engages in the discussion, acknowledging it is still early and revealing he is already using SOML to power the frontmatter of his personal website. He responds to technical critiques about floating-point precision, fixing documentation and outlining plans for schema support.

    “It's already powering the frontmatter of my website…”
    — mofle (Sindre Sorhus)
    • 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:

      mofleHacker News8d agoview on Hacker News ↗
    2 more of the top 3 · 4 posts in this stretch
    • Genuine question for TOML (or any config DSL that don't support inheritance) users: what's the advantage compared to text protobuf configs?To me being able to do some templating/inheritance to generate slightly different config (or deviating from the standard/default config) seems to be vital as a config DSL. In that regard, even YAML is superior…

      yegleHacker News8d agoview on Hacker News ↗
    • > This seems both underspecified and incorrect."exactly as written" was wrong for the value. Only the type is. The spec already says a float is IEEE 754 binary64, same as JSON. Fixed the readme.> Still strings and therefore fine for the SOML parser,I have plans for some kind of schema support.

      mofleHacker News8d agoview on Hacker News ↗
    all of them →
  2. 6

    Developers flag precision and clarity issues in the spec

    Multiple commenters point out that the 'what you see is what you get' claim about floats is inaccurate due to IEEE 754 representation, and request clearer documentation of how SOML differs from TOML upfront rather than burying comparisons at the end.

    “So what you see is not what you get, and it's also unclear what exactly you'll get.”
    — layer8
    • > durations like 30s are real values, so nobody has to guess the unit of timeout: 30Pet peeve of mine, but I would argue that it's better to always keep units baked into the key.If you have: timeout_s: 30 Then unit information will never be lost, because the unit is always marshalled as a part of the key name and you don't have to worry if the…

      umviHacker News8d agoview on Hacker News ↗
    2 more of the top 3 · 5 posts in this stretch
    • > 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…

      layer8Hacker News8d agoview on Hacker News ↗
    • Feedback:1. You should mention TOML in your first paragraph. "Why not TOML" exists at the end2. how often are "instants"/dates really specified? Are you baking this in for TOML parity?If you want leaner, drop this. If nothing else it's a lot of grammar.If you want to lean in to "A value's type comes from its syntax", I'd suggest taking a cue from…

      tlnHacker News8d agoview on Hacker News ↗
    all of them →
  3. 5

    Critics question the "for humans" claim and compare to GUI alternatives

    Commenters argue that SOML is deterministically parseable like other formats and that graphical interfaces may serve users better than plain-text config files, since GUIs can display available options and validate settings in real time.

    “A GUI is a config format for humans as it can you show what all of the configuration options are along with text that tells you what they do.”
    — joshheitzman
    1. first by HN Frontpage, 8d ago

    • From the comments here I can infer that it has a schema and in turn I can extrapolate that this is as much "for humans" as many other config formats that are deterministically parseable.A GUI is a config format for humans as it can you show what all of the configuration options are along with text that tells you what they do. A GUI can also ensure…

      joshheitzmanHacker News8d agoview on Hacker News ↗
    2 more of the top 3 · 3 posts in this stretch
    • 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.

      lightandlightHacker News8d agoview on Hacker News ↗
    • 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.

      james_marksHacker News8d agoview on Hacker News ↗
    all of them →
  4. 4

    SOML gains traction on Hacker News with substantive technical feedback

    A resubmission of the GitHub repository reaches 60 points and 66 comments on Hacker News. Developers engage critically, raising questions about specification clarity, the practical value of duration types, floating-point precision, and whether removing structure actually makes configs more human-friendly.

    “A value's type comes from its syntax, never from its content. '123' is a string and 123 is an int. Nothing is ever retyped by inspecting it.”
    — Sindre Sorhus, SOML creator · source
  5. 3 days quiet
  6. 3

    Sorhus clarifies SOML's advantages over TOML

    Sorhus posts a detailed comparison explaining how SOML retains TOML's strengths—predictable types, literal strings, strict duplicate-key handling—while removing context-dependent table rules and adding top-level arrays, block comments, native durations, and a unified instant type.

    “SOML keeps TOML's predictable types, literal strings, and strict duplicate-key handling, while removing context-dependent table rules and inconsistent value parsing.”
    — Sindre Sorhus
    • sindresorhus@mastodon.social

      Why not TOML? SOML keeps TOML's predictable types, literal strings, and strict duplicate-key handling, while removing context-dependent table rules and inconsistent value parsing. It adds top-level arrays, block comments, comma-free multiline arrays, native durations, a unified instant type, canonical serialization, and standardized formatting…

      sindresorhus@mastodon.socialMastodon12d agoview on Mastodon ↗
  7. 1 day quiet
  8. 2

    SOML GitHub repository gains early attention

    The project appears on Hacker News with minimal initial engagement, receiving 2 points and no comments in the first posting.

  9. 1

    Sindre Sorhus announces SOML on Mastodon

    Sorhus posts the initial launch announcement with a link to soml.sh, highlighting key features: braceless top-level objects, quoteless keys, no unnecessary commas, comments, and a duration type. He describes it as a draft spec seeking feedback.

    “I'm excited to launch: SOML · A config format for humans - Braceless top-level object - Quoteless keys - No unnecessary commas - Comments - Duration type Draft spec. Feedback wanted.”
    — Sindre Sorhus
    • sindresorhus@mastodon.social

      I'm excited to launch: SOML · A config format for humans - Braceless top-level object - Quoteless keys - No unnecessary commas - Comments - Duration type Draft spec. Feedback wanted. https:// soml.sh

      sindresorhus@mastodon.socialMastodon14d ago40▲view on Mastodon ↗

What people are saying 3 voices from 1 site · best of 14 · verbatim

Still unanswered
  • How often are instants and dates actually specified in real config files—is SOML adding these features for completeness or addressing genuine pain points?
  • What is the advantage of SOML (and TOML) over text protobuf configs when neither support templating or inheritance for generating variants?
  • Does SOML need a schema mechanism to validate configs and prevent silent failures?