XML Output: libxo - provide single API to output TXT, XML, JSON and HTML

Jos Backus jos at catnook.com
Wed Jul 30 18:49:00 UTC 2014


On Jul 30, 2014 10:04 AM, "Baptiste Daroussin" <bapt at freebsd.org> wrote:
>
> On Wed, Jul 30, 2014 at 09:18:40AM -0700, Jos Backus wrote:
> > On Jul 30, 2014 12:15 AM, "Baptiste Daroussin" <bapt at freebsd.org> wrote:
> > >
> > > On Tue, Jul 29, 2014 at 09:44:17PM -0700, Jos Backus wrote:
> > > > On Jul 29, 2014 8:46 PM, "Simon J. Gerraty" <sjg at juniper.net> wrote:
> > > > >
> > > > >
> > > > > On Tue, 29 Jul 2014 16:30:53 -0700, Jos Backus writes:
> > > > > >> You certainly cannot wait for all of it to arrive before you
start
> > > > > >> rendering.
> > > > > >
> > > > > >Understood. This is why a serialization output format that
supports
> > > > > >streaming data is useful.
> > > > >
> > > > > Indeed; XML works fine for that.
> > > >
> > > > Not to beat a dead horse, but so does YAML, and it's more
> > lightweight/less
> > > > verbose so I personally find it more elegant. But sure, XML would
work
> > as
> > > > well.
> > > >
> > > YAML is not more lightweight at all, it is really heavy to parse
compared
> > to
> > > XML or JSON.
> >
> > By lightweight I meant syntax verbosity, not computational load
(although
> > it seems easy to emit). It's a more flexible format, and that comes
with a
> > certain price. The question is whether that flexibility is needed or
> > useful. If JSON can't be used because of its limitations, I would
> > personally prefer the less verbose YAML over XML.
> >
> About json what limitation are you talking about?

Several limitations have been mentioned: no support for comments, binary
data, streaming. YAML is a superset of JSON so there are things one can do
with YAML that one cannot do (easily) with JSON. The question is whether
those things matter enough.

> In yaml you have 2 syntax, on which is inconsistent but user friendly and
the
> other which as ugly as XML imho
>
> this_is_string: treu
> this__bool: true
> so_if_i_want_a_string_true_i_need_quote: "true"
>
> If I want to be consistent I need to use the canonical form of yaml:
>
> ---
> !!map {
>   ? !!str "so_if_i_want_a_string_true_i_need_quote"
>   : !!str "true",
>   ? !!str "this__bool"
>   : !!bool "true",
>   ? !!str "this_is_string"
>   : !!str "treu",
> }
>
> and now this is very very ugly :(

Cute, but rare. How often can one not use the easy format, and how often
does one want the string" true" rather than the Boolean value?

> Plus yaml is context dependant and space dependant resulting in people
getting lost about:
> "Why this yaml is not valid":
>
> hu: ha
> hi:
>         - test
>         - test2
>
> Or why this one is not valid either?
>
> hu: ha
>  hi: test
>
>
> I have been there with pkg(8) after being a huge suppoter of YAML I'm now
more moderated :)

Sure, one has to apply some care with whitespace. This hasn't prevented
Python from becoming popular so it must not be as big a deal, and I know
the Ruby community uses YAML effectively quite a bit.

>
> YAML was not machine friendly at all in the end and very very error prone
for humans :(

Granted, JSON is a simpler format.

Jos

P. S. I've said everything I planned to say so I am going to move on from
this bikeshed now.

>
> regards,
> Bapt


More information about the freebsd-arch mailing list