Casbah and Lightweight Distributed Objects (LDO)

From:     Ken MacLeod <>
Subject:  Re: Corba data -> XML
Date:     Fri, 25 Sep 1998 11:10:01 -0500 (CDT)

G. David Kuhlman ( writes:

> And I have not been able to grasp the concept
> behind Casbah at all: > >

Casbah is a distributed application development environment slanted towards scripting, like Python, Perl, and Tcl. The core Casbah components are support for multiple languages, a virtual/distributed, hierarchical data-store (URL space), and the software and protocols for distributing this between processes and systems.

The latter component is the most relevant to this thread and is called Lightweight Distributed Objects (LDO). LDO includes specifications for serializing objects using XML or a binary format, for encoding remote requests as objects to be serialized and transmitted, and an API for using the remote requests and serialization.

LDO is patterned after Apple's (nee NeXT's) Distributed Objects used in MacOS X Server and, before that, in OpenStep and NextStep. LDO is not Casbah-specifc and is intended to be reusable outside of Casbah.

LDO is nearing a 0.1 release and has implementations available in Python and Perl. There is not an LDO page on the Casbah site yet, that's a goal for 0.1 :-). The source and specifications are available in CVS and some documentation is available on the Casbah Swiki:

The CVSROOT for Casbah is:

the password is `anonymous' and the module is `LDO'.

Ken MacLeod

P.S. LDO was recently listed in the XML Resource Guide on using it's old name Lotos, under the category XML Serialization.

Added note: See also from the document "Lotos XML Object Serialization Format": "The Casbah distributed objects system allows for different object serialization formats. This document defines a simple Extensible Markup Language (XML) serialization format that is self-describing. The base format defined here allows for arbitrarily nested objects made up of dictionaries, lists, string and encoded binary values. The XML Serialization format provides a way to marshall application objects using a simple set of XML elements. XML Serialization provides four elements for encoding objects, a `dictionary', a `list', a `scalar', and a `ref' element. `dictionary', `list', and `scalar' elements support reusing content with an `id' attributed that can be referred to using the `ref' attribute of the `ref' element. `scalar' elements support a `type' attribute to declare the type of scalar, and an `encoding' attribute to declare it's encoding [refer to HTTP-ng UUIDs? for types and encodings, I think]. `dictionary' elements support a `class' attribute that marks this dictionary as an object, with the keys as field or property names [also UUIDs?]. `dictionary', `list', and `scalar' elements support a `length' attribute that gives the number of pairs in a dictionary, the number of elements in a list, or the parsed length of the text of a `scalar'."

xml-dev: A list for W3C XML Developers. To post,
Archived as:
To (un)subscribe, the following message;
(un)subscribe xml-dev
To subscribe to the digests, the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (