From owner-freebsd-current@FreeBSD.ORG Mon Mar 2 09:24:08 2015 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 38379AAC for ; Mon, 2 Mar 2015 09:24:08 +0000 (UTC) Received: from theravensnest.org (theraven.freebsd.your.org [216.14.102.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "cloud.theravensnest.org", Issuer "StartCom Class 1 Primary Intermediate Server CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id D34E46DA for ; Mon, 2 Mar 2015 09:24:07 +0000 (UTC) Received: from [192.168.0.7] (cpc16-cmbg15-2-0-cust60.5-4.cable.virginm.net [86.5.162.61]) (authenticated bits=0) by theravensnest.org (8.15.1/8.14.9) with ESMTPSA id t229O0qo024376 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 2 Mar 2015 09:24:02 GMT (envelope-from theraven@FreeBSD.org) X-Authentication-Warning: theravensnest.org: Host cpc16-cmbg15-2-0-cust60.5-4.cable.virginm.net [86.5.162.61] claimed to be [192.168.0.7] Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\)) Subject: Re: Massive libxo-zation that breaks everything From: David Chisnall In-Reply-To: <75C49F53-C675-4712-A446-370025EED037@me.com> Date: Mon, 2 Mar 2015 09:23:55 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: References: <54F31510.7050607@hot.ee> <54F34B6E.2040809@astrodoggroup.com> <54F35F29.4000603@astrodoggroup.com> <75C49F53-C675-4712-A446-370025EED037@me.com> To: Rui Paulo X-Mailer: Apple Mail (2.2070.6) Cc: Harrison Grundy , freebsd-current@freebsd.org X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Mar 2015 09:24:08 -0000 On 1 Mar 2015, at 21:29, Rui Paulo wrote: >=20 > On Mar 1, 2015, at 11:11, David Chisnall 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. >=20 > 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 = emulator. David