Outbound Link Summary:
22 years ago
p3k dots

ariadne is indeed an interesting piece of software with clever concepts, too – but... well, more about that later.

i found a lot of parallels between ariadne and helma (don't know zope well enough anymore for reliable comparison), e.g. the object-oriented approach in connection with a relational database, that every object can have a template (or skin in helma terminology) and, as a consequence thereof, the effort to separate the application logic from the presentation layer.

funny is, that ariadne's creators realized something i just implemented inofficially and quite similarly into the antville cvs branch i maintain for the new helma.org website (that's why this branch is called "helmaville"): the storylist macro.

the idea behind it simply is to provide a macro structure which outputs single items contained in a collection (e.g. a child object or an antville topic) as list.

in helmaville such a macro call currently looks like this:

<ol> <% storylist topic="topicName" sortby="title" order="asc" itemprefix="<li>" itemsuffix="</li>" %> </ol>

helma transforms the macro call "storylist" into a function call for "storylist_macro(param)". param is an object containing the macro parameters topic, sortby etc. as properties.

due to a helpful markup framework in antville (or helmaville, resp.), the whole output can be done in the function without pulling up another skin.

ariadne does the same a little bit more elaboratly:

<ol> <pinp> ls("item.html"); </pinp> </ol>

this object template contains special markup wrapped around a function call whose name obviously is borrowed from unix. "ls" applies another template called "item.html" onto each of the object's children (ie. it lists the children in a layout defined by the function's argument). in item.html we then find:

<li><a href="<pinp> echo make_url(); </pinp>"><pinp> echo $nlsdata->name; </pinp></a></li>

here, the url of the child object (ie. one item) is output in a link tag which surrounds the item's name as it was entered in ariadne's (or a custom) browser editor.

btw. "pinp" is the name of the script language used in ariadne, a subset of php functions and statements for safe template logic ("pinp is not php").

my personal conclusion is, however, that ariadne, as well-done and smart it is looking to me, cannot cope with helma's concepts and ease of use. and i think there is actually no way to get around helma when creating web applications (i know i repeat myself).

ariadne's biggest weakness probably is the browser editing "feature" which is too slow and too unreliable as usual. it's so much faster and more comfortable to edit a file, i don't want to miss it anymore despite (or rather: because of) the lack of all these "wysiwyg" options.

furthermore, for small websites which do not need heavy (pseudo) content management features at all (which is the case for the project i did the current research for), i would rather build a custom system from scratch with a scripting language of my choice than trying to learn another conceptual superstructure and to achieve the same aim in twice the time.