I second YAML just since it is more human-readable. My suggestion
would be to add an external dependency but pull all code that uses it
into a single module which can be dropped if the library is not found.
Yaml is simple enough that we could, starting from the dumb reader/
writer I wrote, provide a complete enough solution without much effort
if we really didn't want dependencies. But, libyaml is MIT license and
part of fedora and mac ports so I would just go with that.
I suggested YAML, to match the current code we have for particle IO.
In principle however, we can add any BSD or MIT library as a
dependency for IMP without running into licensing issues (Arabica is
BSD; at least one of the YAML libraries is MIT). I'd just prefer not
to if we can avoid it (at least for the IMP core) since it makes it
more of a hassle to build IMP. (An alternative is to bundle the code
within IMP, but I'd prefer to avoid that too, at least for
everything that isn't just a header-only package, since we than have
to maintain that package - e.g. monitoring for security problems -
and it could potentially conflict with system copies of the same
library.)