SOML: A Human-Centric Configuration Format
SOML combines JSON-like strictness with YAML-style readability to eliminate configuration ambiguity.
1The Core Philosophy
SOML, or Sindre's Objectively Marvelous Language, addresses the trade-offs between JSON and YAML. It provides a human-readable syntax that removes the need for braces, quotes, and commas while maintaining strict data integrity. By prioritizing syntax over content for type determination, it ensures that values are never misinterpreted by different parsers.
2Eliminating Implicit Typing
Unlike YAML, which often guesses types based on content, SOML relies entirely on explicit syntax. For instance, '123' is strictly a string, while 123 is an integer. This design choice prevents common errors where values like 'no' are incorrectly parsed as booleans, ensuring consistent behavior across all language implementations.
3Enhanced Data Types
SOML introduces native support for dates, instants, and durations, such as 30s or 2026-09-19. These are treated as first-class values rather than strings, removing the need for manual parsing or unit guessing. This approach simplifies configuration for time-sensitive parameters like timeouts, launch dates, and scheduling, reducing potential runtime integration bugs.
4Strictness and Reliability
The format enforces strict rules to prevent common configuration pitfalls. Duplicate keys, out-of-range numbers, and lone surrogates are treated as errors rather than implementation-defined behaviors. By mandating a single canonical form, SOML ensures that equal values produce identical bytes, which is critical for reliable hashing, signing, and file comparisons.
5Developer Experience Improvements
Writing configuration files is streamlined through literal strings and dedented block strings, which eliminate the need for complex escaping in paths or regex patterns. Comments are permitted almost anywhere, allowing developers to document their configurations directly within the file, improving maintainability and clarity for teams managing complex infrastructure or application settings.
6Conformance and Portability
To ensure universal consistency, SOML includes a shared conformance suite of nearly 1,000 test cases. Every implementation must pass these tests to be considered compliant, guaranteeing that a SOML file is read identically regardless of the programming language used. This eliminates the fragmentation often seen with other configuration formats.
7Comparison with Existing Formats
SOML borrows the best attributes from existing standards: JSON's strict data model, YAML's comment support and clean top-level structure, and TOML's predictable literal strings. It intentionally avoids YAML's implicit typing and complex table rules, while bypassing the noisy, comma-heavy syntax that makes JSON difficult for humans to edit manually.
8Ecosystem and Implementation
The specification is supported by a growing ecosystem, including reference implementations in JavaScript, Rust, Go, and C++. Tools such as ESLint plugins, Prettier support, and syntax highlighting for VS Code are available. This infrastructure ensures that SOML can be integrated into existing CI/CD pipelines and development workflows with minimal friction.
Original article: Hacker News: Front Page — SOML: A Human-Centric Configuration Format