Massive libxo-zation that breaks everything

Harrison Grundy harrison.grundy at
Mon Mar 2 20:03:14 UTC 2015

On 03/02/15 11:55, Julian Elischer wrote:
> On 3/2/15 5:27 AM, Alfred Perlstein wrote:
>> On 3/2/15 4:14 AM, Julian Elischer wrote:
>>> On 3/1/15 10:49 AM, Harrison Grundy wrote:
>>>> Thanks!
>>>> That does seem useful, but I'm not sure I see the reasoning behind
>>>> putting into base, over a port or package, since processing XML in base
>>>> is a pain, and it can't serve up JSON or HTML without additional
>>>> utilities anyway.
>>>> (If I'm reviving a long-settled thing, let me know and I'll drop it.
>>>> I'm
>>>> trying to understand the use case for this.)
>>> To me it would almost seem more useful to have a programmable filter
>>> for which you could produce
>>> parse grammars to parse the output of various programs..
>>> thus
>>> ifconfig -a | xmlize -g ifconfig | your-favourite-xml-parser
>>> with a set of grammars in /usr/share/xmlize/
>>> then we could use it for out-of-tree programs as well if we wrote
>>> grammars for them..
>>> The sentiment of machine-readable output is nice, but I think it's
>>> slightly off target.
>>> we shouldn't have to change all out utilities, and it isn't going to
>>> help at all with 3rd party apps,
>>> e.g. samba stuff. A generally easy to program output grammar parser
>>> would be truely useful.
>>> and not just for FreeBSD.
>>> I've been watching with an uncomfortable feeling, but it's taken me a
>>> while to put my
>>> finger on what it was..
>> Are you sure it's not the hairs on the back of your neck standing up
>> due to NIH?
>> Juniper has been doing this for years and it's very useful for them.
> I'm not saying the ability to generate machine readable output is wrong,
> but that the 'unix way' would be to make a filter for it. It seems that
> the noisy people don't
> agree with me so I will not stand in the way of progress..

Julian and Alfred,

Does the "lib-ification" idea address your differing concerns?

The idea is to split base binaries into a library that does the "work",
and a binary that does the UI bits.

This way, "df" becomes a CLI interface connected to "libdf" that handles
the CLI output. "xodf" (or whatever we'd like to name it) becomes a
libxo interface on top of libdf.

This allows the CLI code to remain largely unchanged, and permits the
XML output code to link across multiple utilities at the same time. (So
that things like, say, ifconfig information can be incorporated into
route and netstat results by linking to "libifconfig" "libroute" and
"libnetstat", respectively.

If we're going to have to touch every base binary anyway, it seems like
this might be a useful abstraction to get at the same time.

--- Harrison

More information about the freebsd-current mailing list