From be51238cc79983e998f581fbc0b6f1f955181e48 Mon Sep 17 00:00:00 2001
From: zkat
KDL is still extremely new, and discussion about the format should happen over -on the discussions page in the -Github repo. Feel free to jump in and give us your 2 cents!
-KDL is still extremely new, and discussion about the format should happen over +on the discussions page in the +Github repo. Feel free to jump in and give us your 2 cents!
+Because nothing out there felt quite right. The closest one I found was +SDLang, but that had some design choices I disagreed with.
+SDLang is designed for use cases that are not interesting to me, but are very +relevant to the D-lang community. KDL is very similar in many ways, but is +different in the following ways:
+/-) comments are great and useful!r"foo"), instead of backticks."123" "value"=1 is
+a valid node, for example. This makes it easier to use KDL for
+representing arbitrary key/value pairs.Yes. I have. Please stop linking me to it.
+YAML is a great, widespread language. Unlike KDL, which is node-based (like +XML or HTML), it's based on map and array data structures, which can provide +an easier serialization experience in some cases.
+At the same time, YAML can be ambiguous about what types the data written into +it is. There's also a persistent issue where very large YAML files become +unmanageable, especially due to the significant indentation feature.
+KDL is designed to avoid these particular pitfalls by always being explicit +about types, and having clearly-delimited scope (and the ability to +auto-indent/auto-format). Syntax errors are easier to catch, and large files +are (hopefully!) much more manageable.
+JSON is a great serialization language, but it can be very difficult to use as +a human configuration language. This is largely due to its very specific, very +strict syntax, as well as its lack of support for comments.
+KDL, on the other hand, has great comment support, and has a much more +forgiving syntax without being so flexible as to allow certain classes of +unfortunate mistakes. It also has much more flexibility around how to +represent data.
+It nests very poorly. It doesn't fare well with large files.
+XML is actually pretty fantastic, and has long been a standard for data
+exchange across many industries. At the same time, XML is known to be very
+verbose, and editing it involves writing (and updating) matching tags. Another
+large pitfall with XML is its lack of direct support for arbitrary string
+key/value pairs, so what would be a simple foo: x in some languages has to
+be represented as <entry name="foo" value="x" /> or something similar. XML
+also functions great as a markup language. That is, it is easy to
+intersperse with text, like HTML.
KDL, just like XML, is a node/element-based language, but with much more
+lightweight syntax. It also adds the ability to apply anonymous values
+directly to a node, rather than as children. That is, nodename 1 2 3 instead
+of <element><child>1</child><child>2</child>(etc)</element>. This can make
+it much more manageable and readable as a human configuration language, and is
+also less verbose when exchanging documents across APIs!
Finally, KDL is not a markup language. XML or HTML do a much better job of +"marking up" a text document with special tags, although KDL can still be +useful for templating engines that want to be more strict about text +fragments.
+