[Mailman-Developers] Remote scripting with XML-RPC

Eric Kidd eric.kidd@pobox.com
Sat, 7 Apr 2001 15:48:58 -0400


Hello!  I run several Mailman-based mailing lists.  And along the way, I've
come to really love Mailman.  Many thanks to everyone who has worked on
it; it's definitely the best list manager I've ever seen.

But--for better of for worse--I've decided to tamper with near
perfection. :-)

Here's what I'm up to:

  * I want to be able to control Mailman remotely, using scripts.
    For example, I want to be able to change list preferences, access the
    approval queue, and generally do anything I could do through the web.

  * Ideally, I'd like to be able to write these scripts in any popular
    language.

  * I don't especially want to fake FORM POSTs and parse the HTML
    response.  This would work, but it's more work than I'd like to
    get into on the client side.

So I've decided to add XML-RPC support to my local copy of Mailman.

XML-RPC is a protocol that allows you to make CGI-like "function calls"
over HTTP using specially-formatted XML documents.  You can read all about
XML-RPC here:

    http://www.xmlrpc.com/
    http://www.xmlrpc.com/spec
    http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html

The HOWTO contains example clients and servers in many different languages.

Fredrik Lundh wrote an excellent implementation of XML-RPC for Python.  His
code is used in Zope, the RedHat Network and some forthcoming stuff from
Eazel:

    http://www.pythonware.com/products/xmlrpc/index.htm

But why use XML-RPC?

 1) XML-RPC is really simple.  It doesn't get into Schemas, namespaces,
    alternate encodings, or anything else especially fancy.  Fredrik's
    implemention is less than a 1,000 lines long, which isn't bad for an
    RPC protocol.  I'm not smart enough to cope anything more
    complicated. :-)

 2) XML-RPC is widely supported, with bindings for Python, Perl, Java, C,
    C++, Tcl, KDE, Zope, AppleScript, Microsoft .NET, Ruby, Rebol, Delphi,
    and some languages I'd never even heard of.
 
 3) XML-RPC supports complex data-types: arrays, dictionaries, byte
    arrays, etc.

 4) Many XML-RPC implementations support Unicode, including Python, Perl,
    Java, C and C++.  This would allow me to handle international data
    gracefully.

 5) XML-RPC servers can support introspection, allowing a client to
    discover APIs over the network.  This makes it easy to generate
    documentation, create wrapper classes, and so on, without needing to
    cope with IDL.  For more information on XML-RPC introspection, see:

    http://xmlrpc-c.sourceforge.net/hacks.php

OK, yes, I'm probably crazy.  But it seems like a fun hack.

So if anybody else is interested in XML-RPC for Mailman, please let me
know.  And if anybody can tell me why I'm nuts, please let me know
that, too. :-)

Cheers,
Eric

--
XML-RPC HOWTO:          http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
XML-RPC for C and C++:  http://xmlrpc-c.sourceforge.net/
xmlrpc-c-devel list:    http://xmlrpc-c.sourceforge.net/lists.php