[Twisted-web] Re: Good ROM tool ?

Andrea Arcangeli andrea at cpushare.com
Wed Jan 18 14:16:42 MST 2006

On Wed, Jan 18, 2006 at 06:40:08PM +0100, Valentino Volonghi wrote:
> <table nevow:data="currencies">
>     <tr nevow:render="sequence">
>         <td nevow:pattern="item">
>             <table nevow:render="sequence">
>                 <tr nevow:pattern="item">
>                     <td nevow:data="0" nevow:render="data" />
>                     <td nevow:data="1" nevow:render="data" />
>                     <td nevow:data="2" nevow:render="data" />
>                     ...
>                 </tr>
>             </table>
>         </td>
>     </tr>
> </table>

I recall I tried this but nevow can't handle nesting. Perhaps I
misunderstood. Anyway the above is certainly more complicated for me to
read and maintain than the below strightforward Cheetah syntax. I don't
want to deal with data="" render="", pattern="" render="data" anymore. I
don't even get the point why data and rendering are provided with
separate callbacks (I already told this once I recall). You may like it,
but I don't, I never did, and it's just yet another complication.

> > #for $currency in $currencies
> > 	<table>
> > #for $entry in $currency
> > 		<table>
> > [..]
> > 		<td>$entry.something</td>
> > [..]
> > 		</table>
> > #end for
> > 	</table>
> > #end for
> And yes, Nevow is not perfect. Now you are starting insulting the others' work

Saying that Cheetah is much better, isn't insulting Nevow. I didn't say
Nevow is bad, I'm saying Cheetah is much better and I'm going to switch
to it completely. Nevow was the best I known until Paul made me pay
attention at Cheetah too.

> Nevow then fine, but your recent rants seem to grow from something else than
> technical problems. See? That's exactly why after some point, and I speak for

They are technical problems, I complained in the past many times about
the slow performance of nevow. This is also why I wrote those caching
patches, to try to workaround those problems.

> Z. Nobody is paying me to work for them on what they want, I have a job,
> university to finish and some free time that I want to preserve. If you
> disagree then step in or pay some of us to work on
> twisted/nevow/something_else otherwise then you should have made some
> library/framework evaluation before starting with your life's project and you
> can't blame anyone because you made that evaluation wrong even if you are now
> frustrated.

I am not blaming anyone, really. Infact I wouldn't even blame myself.
It's not your duty to maintain formless or nevow or twisted, this is a
best effort and I appreciate it. I learnt a lot from you btw, I owe you
a lot. My move away from nevow has nothing personal with anybody, it's a
technological move.

Infact if something I was sticking with nevow so long despite the
inefficiency and the complexity of its machinery also because I greatly
appreciate the help you gave me. And the main reason I was sticking with
nevow wa formless. What made my life easier wasn't nevow but formless.
Infact klive almost didn't increase in size after moving from nevow to
Cheetah. This means I was nearly not using nevow at all (except for the
templates rendering that is more efficient and IMHO much simpler with
Cheetah). So if I miss formless I can remove the dependency on nevow as
well at no additional cost (modulo the guard that IMHO belongs to web2 ;).

I quickly noticed the rendering bad performance and I posted profilings
a few times and I started to work on caching code to workaround it. I
mostly gave the blame to the interface code (all CPU time is spent
there, I measured it several times). It's not like I'm complaining only
now, I complained the performance from the day zero, and now I've fixed
it in a definitive way with Cheetah.

I understand that formless is too simple for developers to appreciate
it, you want to play the fancy AJAX, I understand that, fine with me, so
I'm already getting depreactionwarnings, and I'll soon switch to Cheetah
and web2 completely. Riding the wave of the eye-candy isn't my
objective, I want a decent look but I stay away from the new
fast-changing eye-candy technologies and effects as much as I can.
Nevow is diverging in a direction that collides with my interest.

> And now we start with FUD. Just to show you don't actually understand nevow
> you are saying something plain false. Nevow never recompiles templates unless
> you modify them. It parses and precompiles templates once.

It wasn't FUD, I was talking about Cheetah not nevow. Sorry for not
being clear. Cheetah isn't precompiled, so it re-reads them every time
(so here probably nevow is theoretically more efficient, but in practice
Cheetah renders stuff much faster even if it doesn't cache it).

> Now to put an end to this: I don't think I'll have the time to keep answering
> in this thread, both because I've lost any interest in this thread and because
> It's clear that you simply don't like Nevow which is fine, but I beg you not
> to spread any more FUD.

I'm posting this, so people that may have similar needs to mine, may
consider Cheetah as an alternative to use on top of web2. I'd like to
create a web2 + Cheetah effort with those potential users. that's one
reason of talking about it here. After all this is the twisted-web list,
it's not called twisted-nevow, so my emails on web2+Cheetah are
definitely on-topic. I'm sorry if you're not interested.

I'd like to teach Cheetah to learn what a deferred is. I think such an
effort could benefit greatly from your help and the help of the
twisted-web community. That way I could stop using #block... that would
cleanup a few lines of code away.

More information about the Twisted-web mailing list