The configuration language landscape—dominated by JSON, YAML, and TOML—faces a new contender. BCL (Block-based Configuration Language) enters the arena with a bold proposition: eliminate the verbosity of traditional data formats while enabling clearer, more maintainable configuration files for complex systems.

XKCD 927 — Standards humorously highlights the irony of new standards solving fragmentation. BCL embraces this challenge head-on.

Why Configuration Languages Need Reinvention

Modern configuration files often become unwieldy as complexity grows. While universal formats like JSON provide interoperability, they force nested structures into atomic values, arrays, and dictionaries—resulting in bloated files. BCL addresses this by introducing:

  • Multi-value entries: Assign multiple parameters in one line (e.g., bind "localhost" 8080 instead of separate bind_host and bind_port directives).
  • Hierarchical blocks: Group settings contextually (e.g., account "bob" { home "/home/bob" }).
  • Minimalist typing: Supports strings, integers, floats, booleans, and symbols—omitting aggregates like lists/dictionaries in favor of repeated entries or values.

Syntax That Prioritizes Readability

BCL’s design emphasizes developer ergonomics:

# Named block with multi-line entry
user "Bob" 1000 1000 "Bob Howard" \
     "/home/bob" "/usr/bin/zsh"

# Unnamed block with boolean flag
account {
  name "alice"
  disabled
}

Logical lines (via \ continuations), insignificant whitespace, and inline comments (#) maintain clarity. Sigils (e.g., ~re"regex") allow optional semantic hints without rigid enforcement.

The Trade-Off: No Native Aggregates

BCL deliberately avoids lists and dictionaries. Instead, it encourages:
- Repeated values: groups "admins" "ops" "users"
- Repeated entries:

group "admins"
group "ops"

This shifts design responsibility to developers but reduces syntactic noise.

Early Ecosystem and Implications

As a draft specification, BCL’s future depends on community adoption. Initial tooling includes:
- go-bcl: A Go implementation
- bcl-mode: Emacs syntax highlighting

For engineers drowning in YAML indentation or JSON braces, BCL offers a compelling experiment in configuration minimalism—if it can overcome the inertia of established standards.

The language’s success hinges on balancing expressiveness with familiarity. While its block-oriented approach elegantly organizes hierarchical data, the lack of native aggregates may challenge adoption in ecosystems deeply reliant on nested objects. As configurations grow increasingly complex, BCL’s philosophy warrants attention: sometimes, fewer structures yield greater clarity.