On 12/21/05, Sylvain Hellegouarch <[EMAIL PROTECTED]> wrote:
>
> Hi Kevin,
>
> >
> > As I alluded earlier in the thread, I *do* plan to have a way to plug
> > in a different template system, but primarily for the purpose of
> > backwards compatibility and easier transition to TurboGears.
>
> I like the sound of that idea since it has been the core idea of CherryPy 
> itself
> since the very beginning. Being able to plug and play what fits your needs. 
> I'd
> like for instance replace Kid by XSLT for my personnal use.
>
> - Sylvain

Case in point.  I have three Quixote applications using Cheetah and a
homegrown SQL generator.  I see TG and like its clean controller
design, forward-compatibility for Ajax, SQLObject which has stablized
since last year, and an active development community that has many
more features almost done.

But I'm not too happy about Kid.  Yes, my *output tags* have to be
valid HTML, but why should my control structures be
(#for/#if/#def/#extends).  The significant word (py:for) is buried in
a tag attribute where it's easy to miss.  I'll have to put comments
around every for-block and if-block to make them stand out.  And Kid
doesn't have if/else!

Now, if TG had a simple way for me to plug in a Cheetah engine, yoo
hoo!  Even if it didn't ship with TG for philosophical reasons, that
would be fine.  I do believe in "one way of doing things".  I just
don't believe in adding artificial barriers to prevent people from
doing other things.  Right now you have to completely rewrite @expose
or push your own template.view() into TG: not cool.  I've added a
plugin architecture outline to the Cheetah ticket (#214).  Unless I'm
mistaken, it's dirt simple to port the existing Kid code to this, and
then people can also write drivers for any other template system they
like.  TG wins because it's fundamental goal hasn't been violated: a
"one way to do it" that works out of the box.  But TG also wins again
because a secondary userbase will come to it, those who absolutely
refuse to use Kid.

Otherwise users have two choices.  Suck it up and use Kid, or port all
of TG's other interesting features to <Other Framework>.  That's
really what "Don't use TG if you don't like Kid" means.

I'd like to see this plugin philosophy extended to any other major
areas of controversy that come up.  I don't see the SQLObject
dependency as significant at this point: there is no clear
alternative.  But it could be an issue in the future.  The other
potential areas are things that haven't stablized yet: forms,
identity, sessions, etc.  Hopefully the final contenders will be
flexible enough to work for everybody, but if not, people need an easy
way to substitute their own, and this should be documented with
examples.


--
Mike Orr <[EMAIL PROTECTED]>
([EMAIL PROTECTED] address is semi-reliable)

Reply via email to