chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] A call to arms


From: Tobia Conforto
Subject: Re: [Chicken-users] A call to arms
Date: Thu, 22 Jan 2009 12:40:27 +0100

Ok, since you asked for it... here are some random thoughts on an "ideal web application framework"


- No database/SQL (except where truly needed) just plain S-expr file storage

Using Git as a filesystem is clearly the best solution. I would use it with s-expr files though, not XML (ugh!) as XML and HTML data can always be represented with sxml if need be.

Databases can be left to their true purpose (dealing with a million customer records, orders, products, invoices, forum posts...) while everything else is stored in plain, versioned, s-expr files.


- Multi-tiered, component-based architecture

This is a good start:

Presuming that some hidden machinery has arranged a chain of generators by matching the incoming url, it would call a generator, e.g.

(lambda (next)
 (html (div (h1 "some headline)
            (next) ; <<
       )))


But I would make it more powerful. See for example sxml's pre-post- order transformer, where you can express arbitrary pre-order and post- order transformations. That is, having the option to capture the output of your (next) and process it further.

Better still, we could come up with a Scheme equivalent of Apache Cocoon's pipelines, where you define regexp matchers on incoming URLs and assign 'pipelines' to them. A Cocoon pipeline is a chain that starts with one or more 'generators' (a component that generates a flow of data in a common, abstract format), passing through zero or more 'transformers' (components that alter the data flow in arbitrary ways) and ending in a 'serializer'. Cocoon uses the SAX API as the abstract data format, but we of course could use the List.

This is promising, I need to think more about it.


- Fast development turnaround time

Having the framework split into basic plumbing and a collection of components, would mean that we could have the plumbing compiled separately from the components, and we could keep some components compiled and others interpreted (instant turnaround time) while we are working on them.

Newbie question: can Chicken load and (more importantly) unload/reload a .so at runtime? I've never tried to.


-Tobia




reply via email to

[Prev in Thread] Current Thread [Next in Thread]