title: JSON alternatives (for the purpose of specifying configuration)?
body: <p>I like json as a format for configuration files for the software I write. I like that it's lightweight, simple, and widely supported. However, I'm finding that there are some things I'd really like in json that it doesn't have.</p>
  
  <p>Json doesn't have multiline strings or here documents ( <a href="http://en.wikipedia.org/wiki/Here_document" rel="noreferrer">http://en.wikipedia.org/wiki/Here_document</a> ), and that is often very awkward when you want your json file to be human-readable and -editable. You can use arrays of strings, but that's a kludgy workaround.</p>
  
  <p>Json doesn't allow comments.</p>
  
  <p>If you look at the formats of unix configuration files, you see a lot of people designing their own awkward formats for things that it would really make more sense to do using some kind of general-purpose thing. For example, here's some code from an Apache config file:</p>
  
  <pre><code>RewriteEngine on
  RewriteBase /temp
  RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
  RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml\s*;\s*q=0
  RewriteCond %{REQUEST_URI} \.html
  RewriteCond %{THE_REQUEST} HTTP/1\.1
  RewriteRule t\.html t.xhtml [T=application/xhtml+xml]
  </code></pre>
  
  <p>Essentially, what's going on here is that they've invented an extremely painful way of writing a boolean function f(w,x,y,z)=w&amp;!x&amp;y&amp;z. You want a logical "or"? They've got some separate (ugly) mechanism for that, too.</p>
  
  <p>What this seems to point toward is some kind of data description language that is simple and Turing-incomplete, but still more expressive, flexible, and convenient than json. Does anyone know of such a language?</p>
  
  <p>To my taste, XML is too complicated, and lisp expressions have the wrong features (Turing-completeness) and lack the right features (here documents, expressive syntax).</p>
  
  <p>[EDIT] The title is misleading. I'm not literally interested in the next iteration of json. I'm not interested in languages that are a subset of javascript. I'm interested in alternative data-description languages.</p>