First, I have to admit I'm nowhere near as savvy on the latest web
technologies as you are. I'm focused on other things at the
moment ... image recognition and my business ... but I am trying to
keep up with the latest web 2.0 stuff etc.
So, my use of AxKit1 right now: it's all XSLT and apache .htaccess
files. That's it, I have no perl, no XSP, nothing. I do however have
some pretty complex pipelines or actually pipeline trees to assemble
the final documents on http://semacode.org (100% axkit/xslt/apache)
like the front page which is assembled in maybe a dozen different
XSLT transforms from various files.
What I like about my system:
- it's 100% cached by axkit so it scales effortlessly
- since it's apache, I can mix in .php to send email, and I can use
mod_rewrite, etc, etc
What I don't like:
- it seems to be impossible to have such wonderful caching and also
have interactivity at the same time
So, for example, if I wanted to add a user login ... well, I was
thinking that for the pages that are static content, I could use AJAX
to do a user-side "include" for the dynamic content (like the
username, you have new messages, etc.) and keep the content largely
statically cached.
But what you're talking about seems like a major divergence. That's
cool, because I can't wait to see how it's all going to turn out. I'm
sure it will be interesting. But will it be a solution that I'll want
to use?
It seems like you're more abandoning the use of caching as a valuable
tool for scalability for example ... also it looks like I'll have to
write perl code to do anything (true?)
Anyway, my main interest is in continuing to explore the use of XSLT
pipeline/trees. I'd rather avoid writing procedural code (perl or
whatever). Is there something else that I should switch to? Will
AxKit1 be maintained?
--simon
On Jul 27, 2006, at 7:29 PM, Matt Sergeant wrote:
Well every once in a while someone still asks about AxKit 2. I know
this project has mostly floundered and people have gone on to other
things, but I still find some value in the XML paradigm for web
development - specifically in saving me from worrying about XSS
errors, but also it looks really useful for AJAX stuff.
Anyway... Where is AxKit 2.0?
Well it's coming. In the last few days I've thrown together a few
bits of code that are the framework for AxKit 2.0.
First things first: AxKit 2.0 is nothing like AxKit 1. It doesn't
even remotely resemble it. That's both a bad thing and a good
thing. I'll explain why.
But first, what does it look like? Well I spent a long time
thinking about what it meant to be AxKit, and I also spent a long
time thinking about how could I make it easier to use and install
in these days of quick setup frameworks like Ruby on Rails. Sadly
mod_perl is not quick to setup. Neither is Apache. These are large
complicated frameworks with lots of features I don't need on my
application server. Instead, AxKit2 has its own httpd. You can read
a bit about it here: http://use.perl.org/~Matts/journal/30438
Having our own httpd means that development and deployment is much
easier. Plus it frees us of the ties of Apache upgrade cycles and
mod_perl changes. I did not want to be stuck for an "AxKit3" when
Apache 3.x comes out!
So I wrote a simple pluggable scalable httpd. It's all pure perl,
so no nasty compilation required (except obviously you still have
to compile XML::LibXML etc). Plugins can trivially add
configuration directives, making development of new subsystems fast
and easy.
And yes it's buggy as all hell right now. But it'll get better I
promise.
Now, on to what the "AxKit" part looks like. Well I decided that
I'd had enough of special cases and extra wrapper code inside the
AxKit internals - we spend so much effort in there making sure
dependencies are logged and checked, and caching is done at every
step of the way and so on. All this actually slows the whole thing
down, and makes the code really ugly. So it's gone. If you want to
cache from now on it will be DIY.
And all that config directives stuff to setup pipelines - that got
really ugly if you wanted alternate pipelines. So that's all gone
too. Instead AxKit becomes an API for setting up the transformation
pipelines, and a bunch of utility modules for helping that out.
Everyone can write perl, and if you can't the examples will be
simple enough, or someone will write a plugin to set all this up
via config directives.
So let's do a quick example. Say you want to do XSP -> XSLT -> XSLT
-> HTML. Here's what the code you'll write will look like:
sub hook_response {
my $self = shift;
my $file = $self->{headers_in}->filename;
# setup the processor
my $proc = AxKit2::Processor->new($file);
my $s1 = "/path/to/xslt1.xsl";
my $s2 = "/path/to/xslt2.xsl";
# run the transform ($out is an AxKit2::Processor also)
my $out = $proc->transform(
XSP => XSLT($s1) => XSLT($s2)
);
$out->output($self->client);
return OK;
}
(Note: I haven't got XSP working yet - but it shouldn't be too
hard, touch wood!)
So now where is this groovy code? Well it's in axkit.org svn for
now, but at some point I'll get the apache guys to setup a new
repository for us on there. Meanwhile follow the progress and have
a play around at svn://axkit.org/axkit2
Matt.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
http://simonwoodside.com