On 1 Mar 2015, at 21:29, Rui Paulo <rpa...@me.com> wrote:
> On Mar 1, 2015, at 11:11, David Chisnall <thera...@freebsd.org> wrote:
>> How would it be in a port?  It involves modifying core utilities (some of 
>> which, like ifconfig, rely on kernel APIs that change between releases) to 
>> emit structured output. Maintaining two copies of each utility, one in the 
>> base system with plain-text output only and another in ports with XML/JSON 
>> output would be very painful.
> It would work fine if we had *libraries* for ifconfig/netstat/route/etc.  
> Obviously that's not the case and no one has stepped up to implement them.  
> I've also seen FreeBSD committers expressing their distaste for libraries for 
> "trivial" command line utilities, which implies they are unaware of another 
> world beyond the CLI.  :-)

I am completely in favour of libraries for the underlying functionality of 
these commands and would love to see all of the system management commands 
become thin wrappers around a library, though it's a lot of engineering work.  
In particular, these libraries will need to have stable APIs that we can 
support across multiple major releases, and getting those right is difficult.  
We really don't want to be stuck in 10 years maintaining a hastily designed API 
for a library.

I see one use of the libxo output as helping to design those APIs.  People are 
going to wrap various tools in libraries for their favourite scripting 
languages and this will give us a corpus for experimenting.

It's also worth noting that often invoking a tool and consuming its output is 
the easiest way to get a stable API and ABI where performance is not a primary 
concern (i.e. most management interfaces).

As to a world beyond the CLI, I saw a nice demo a few years ago of a terminal 
emulator that used WebKit and came with a hacked-up set of parsers for common 
tools.  I'd love to have something simpler (no need for a full WebKit - simple 
outline and table views would be enough and could be done with curses for ssh) 
for FreeBSD where I could type ls in the CLI and get a table view that I could 
then sort and filter by selecting column headings.  Those of us that have used 
Lisp and Smalltalk environments know that a CLI doesn't have to be a teletype 


freebsd-current@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to