On Nov 21, 2005, at 10:32 AM, Robert Klemme wrote:

> Bob Hutchison wrote:
>> On Nov 21, 2005, at 9:47 AM, Robert Klemme wrote:
>>
>>>
>>> Some questions just out of curiosity.  No offense intended.
>>
>> No problem. You've asked a couple of interesting questions.
>>
>>>
>>> Bob Hutchison wrote:
>>>
>>> <snip/>
>>>
>>>> Xampl is a tool for developing Ruby programs. It facilitates the  
>>>> 'M'
>>>> part
>>>> of an MVC architecture. It is meant to be very easy to use,
>>>> supportive of
>>>> idiomatic Ruby usage, and mostly invisible.
>>>>
>>>> Features:
>>>>    - pure Ruby, no libraries required except those shipped with  
>>>> Ruby
>>>> 1.8.2
>>>>    - uses XML to declaratively describe a object structures
>>>>      - uses a collection of example XML documents, no schema are
>>>> required
>>>
>>> Interestingly some days ago I thought about how J2EE is really two
>>> languages (Java for implementation, XML for configuration) and how
>>> Ruby
>>> can do both very neatly because of its clean syntax.  From your
>>> experience, does it really pay off to use XML here?  Or is ist just
>>> because you want to be able to read in arbitrary files and use the
>>> content
>>> as Ruby objects?
>>
>> Yes it does make sense I think. How do you express succinctly the
>> relationship between a bunch of live objects? Amusingly, the hyper-
>> verbose XML can actually do that :-) It all depends on how you
>> interpret the XML. XML can reflect a containment/composition/
>> aggregation relationship about as tersely as you can get in text.
>
> Well, you can describe those relationships in Ruby, too.  In fact,  
> nearly
> every Ruby program does it by creating / assigning member  
> variables. :-)

Sure, but not so tersely and not so easily understood by non- 
programmer. Most people are capable of recognising a document in a  
slightly unfamiliar form and how to read one, and XML is something  
they can recognise. You can design a xampl system by modelling paper  
pushing.

That's not to say xampl won't be able to work directly on Ruby  
classes at some point :-) Though that is a ways off I think.

>
>> Xampl is not about using XML for configuration, but for 1) describing
>> dynamic relationships between objects; and 2) persistence.
>
> "describe" persistence or "implement" persistence?  It seems rather  
> the
> latter.

Implement persistence as an option.

>
>> I agree with you that much of what XML, or YAML for that matter, is
>> used for can be better done in Ruby (or Python, or any other dynamic
>> language), certainly the way XML is used conventionally. Though xampl
>> changes the picture a bit.
>>
>> The other thing xampl does is makes it a lot easier to deal with XML
>> based protocols. I've provided an example with the distribution (and
>> discussed in the documentation) of how to use xampl to read an Atom
>> 1.0 or 0.3 feed over the internet, cache the feeds, extract the
>> entries, convert 0.3 entries to 1.0, aggregate in a new 1.0 feed
>> paying attention to ordering, and serve it up via WEBrick. Xampl
>> really helps in this kind of thing.
>>
>> This is actually a really good question and I should prepare a better
>> answer. The background for what I'll say is documented in the
>> download file, but there is no direct answer to this question there.
>
> So one of the strengths of xampl is to deal with existing XML data.

Yes, and producing XML. Though, and I really can't stress this  
enough, it even helps *a lot* if XML is only used as a description  
and never in practice.

>
>>> <snip/>
>>>
>>>>      - XML, Ruby, and YAML persistence mechanism (purposely no
>>>> Marshal support)
>>>
>>> Why is that?  What's the reasoning behind this?
>>
>> 1) Upgrades of marshalled objects can be really nasty, using a text
>> form that xampl has control over while parsing, you have a chance of
>> intervening at an opportune time, making your life a lot easier.
>> 2) You can read XML, Ruby and YAML.
>> 3) You can use the data easily independently of any xampl program
>> (e.g. in a text editor :-)
>> 4) You cannot control how much of the network of reachable objects is
>> written to one file (this is very important in xampl because of its
>> clustering capabilities).
>>
>> There are more reasons that I've forgotten, these are enough for me.
>
> Well, that's quite comprehensive!  Thanks for the quick and exhaustive
> answer!

:-)

>
> Kind regards
>
>     robert
>
>

----
Bob Hutchison          -- blogs at <http://www.recursive.ca/hutch/>
Recursive Design Inc.  -- <http://www.recursive.ca/>
Raconteur              -- <http://www.raconteur.info/>