From: Robert Klemme Date: 2005-11-22T00:32:24+09:00 Subject: Re: [ANN] xampl 0.1.0 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: >> >> >> >>> 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. :-) > 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. > 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. >> >> >>> - 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