September 09, 2003

gratuitous, hard to decipher screenshot

Dan Barlow wants to bring Applescript-style scripting to unix applications... Using X properties and sexps.

As many people by now have the misfortune to know, one of my pet rants about Unix as a desktop OS is the lack of decent support for scripting applications. Some apps do CORBA, some apps listen on sockets, some apps reread their config file when sent certain signals, some apps you can start twice and the second instance will communicate its command line args to the first, and some apps (e.g. GNOME, KDE stuff) use some vast framework which handles it all in a you-shouldn't-care-about-the-internals way

None of them have seen pervasive uptake, which makes me feel better about inventing yet another.

I've wanted this sort of scripting in unix for a long time. I do think it would be nice if it could work with non-X, non-GUI apps, but it's not like I know how to do that.

Joe Armstrong has a proposal for another language neutral IPC scheme he calls UBF, which includes

  1. UBF(A), a data transport format (not sexps)
  2. UBF(B), a language for describing the types and the protocols used by an application
  3. UBF(C), “meta-level protocol between used between UBF servers” (I'm not sure what that means)

I think #2, describing the “set of legal conversations that can take place between a client and a server” is actually the most important. In Applescript the equivalent might be an application's scripting dictionary, which can be read and parsed by the script editor. That information is then displayed in the form of help text to the user, and used to check the syntax of the script as it's written.

(Also, Joe Armstrong: “Once upon a time I was interested in 'how to program'. I think that we now know how to do this (not perfectly, but adequately) - now I'm interested in 'fitting things togther'.” I've been starting to think the same thing in the past couple years.)

Posted by jjwiseman at September 09, 2003 09:10 AM

The idea of UBF(C) is to define some standard protocols that you can expect servers to understand, for debugging and service-discovery types of things. The protocols are specified in UBF(B). Thus UBF(C) is a standard set of UBF(B) protocols that every server should support.

For example, every server should support a protocol for finding out what services it offers. In IETF terms this would be like every internet host providing an anonymous FTP server where you can download the RFCs that the host implements. In UBF terms it means each host supporting a UBF(B) protocol to find out which (other) protocols it supports, so that you can say "send me the UBF(B) specifications of the protocols you understand".

This introspective capability is a bit like the "HELP" command in SMTP, which gets the server to tell you what commands it understands.

I don't think UBF(C) is really documented/specified yet, but Joe's Erlang UBF server supports this sort of introspection.

This would be less confusing if UBF A/B/C were given more distinct names. :-)

Posted by: Luke Gorrie on September 9, 2003 10:49 AM

You know, it's time to go back to calling them sexes, not sexps. The only time people like programmers is when they're being hip and pseudo-countercultural. No company wants to hang onto programmers who aren't interesting and virtually unable to procreate, because they're sneering cost centers. This is why all the jobs are being shipped as far away as feasible.

Into this gap come the Lisp programmers, who speak often of using sex whenever possible to get ahead of other programmers; and coworkers, who are salaried and therefore aren't interested in work, feel they can relate to the Lispers and maybe get them to install fileshares with the latest movies undetectable by the crusty asshole Unix admins with their stupid jokes of grepping and finger'ing female employees.

Just a thought. People think politics starts with middle management. It doesn't; it starts at the bottom.

Posted by: Tayssir John Gabbour on September 10, 2003 07:24 AM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?