Loggerhead directions

Michael Hudson michael.hudson at canonical.com
Wed Mar 31 03:10:05 BST 2010


On 31/03/10 13:26, Ian Clatworthy wrote:
> Hi all,
>
> After I wrap up improving the Windows installer build process, I'm
> hoping to get more involved in Loggerhead development and maintenance.
> I'm sending out this email now though because I want to raise some
> topics for debate/discussion.

Yay.  I've been a pretty terrible maintainer for loggerhead over the 
last few months...

> At this point, I expect my immediate priorities to be "make it faster
> and get it easier to deploy", i.e.:
>
> 1. Help review and land the dozen or so proposed branches.
> 2. Improve packaging so that Loggerhead becomes a standard part of our
> Windows (and OS X hopefully) installer.

Those both sound great.

> I have some ideas on how to make Loggerhead more beautiful and more
> functional but they can come later. :-)
>
> There's some *great* work going on in this space right now. In
> particular, John Arbash Meinel and Kapil Thangavelu have put together
> some branches that speed things up considerably. IIUIC, John's changes
> leverage recent improvements to bzrlib so, apart from maintaining
> backwards compatibility to earlier bzr versions, they are relatively
> straight forward.

Yes.

> Kapil's branch[1] uses chameleon[2] templates instead
> of simpleTAL. As such, we need to discuss whether that's the best
> direction or not before we can land his changes.

chameleon is just a different implementation of (more or less) the same 
templating language as is already being used, so switching to that isn't 
really a big deal.

> More broadly, I'd like to get some feedback on the current technology
> stack under Loggerhead (simpleTAL, simplejson and Paste).

Loggerhead is /mostly/ implemented as a straight WSGI app, so in some 
sense there isn't really much investment in a technology stack.  Paste 
is used for some generic WSGI helpers that would work in any WSGI app 
and the server/container -- again any server should work.  The 
templating is done almost by hand -- and there's some work to enable 
streaming output, which it would be a bit unfortunate to lose by 
switching to something more generic.

I don't think using simplejson is very controversial?

We use a bit more paste-specific stuff on Launchpad (see 
http://bazaar.launchpad.net/~launchpad-pqm/launchpad-loggerhead/devel/files 
)

> In terms of
> templating languages, both Chameleon and Jinja2[3] are supposedly much
> faster than simpleTAL.

Chameleon implements a much more similar language than jinja2 does, so 
switching to that sounds easy really.  I have this irrational hatred of 
non-tree based templating engines like jinja2, but I can probably get 
over that.

simpleTAL was so much faster than the kid that was being used before 
that I didn't even consider looking for anything faster -- if chameleon 
really is 10x faster, then I'd say switch to that and stop worrying 
about the templating side.

> I also understand that Ian Bicking is refactoring
> the core of Paste into WebOj. So looking forward, some options would be:

WebOb does seem a bit better (and actually has releases etc) than paste.

> * switch to Jinja2 + simplejson + WebOj
> * switch to repoze.bfg (which wraps WebOj and supports both
> Chameleon and Jinja2).

I don't know if you need anything as elaborate as repoze.bfg -- but the 
repoze site seems to be down now, so maybe it's appropriate.

> If we made such a switch, I'd suggest we keep the 1.17 branch on the
> current technology stack and start a "2.0" branch on the new stack.
>
> Thoughts?

I think a new "2.0" (or even "2.2" or whatever) series makes sense.

But, mainly: good luck!

Cheers,
mwh



More information about the bazaar mailing list