<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: What is TurboGears not?</title>
	<atom:link href="http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/</link>
	<description>Kevin Dangoor on Software Development</description>
	<pubDate>Fri, 21 Nov 2008 13:42:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: TurboGears now supports Cheetah and Stan at Blue Sky On Mars</title>
		<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-31474</link>
		<dc:creator>TurboGears now supports Cheetah and Stan at Blue Sky On Mars</dc:creator>
		<pubDate>Sun, 01 Jan 2006 15:28:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-31474</guid>
		<description>[...] The other day, I talked about what TurboGears is not, specifically mentioning template systems. TurboGears has one documented, supported and included way for generating pages: Kid. But, with the latest code in Subversion, TurboGears now also supports other template engines via plugins that provide fairly seamless support for other systems. [...]</description>
		<content:encoded><![CDATA[<p>[...] The other day, I talked about what TurboGears is not, specifically mentioning template systems. TurboGears has one documented, supported and included way for generating pages: Kid. But, with the latest code in Subversion, TurboGears now also supports other template engines via plugins that provide fairly seamless support for other systems. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tazzzzz</title>
		<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26717</link>
		<dc:creator>tazzzzz</dc:creator>
		<pubDate>Thu, 22 Dec 2005 17:45:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26717</guid>
		<description>I'm fine being on the hook for making an effort to reuse existing projects. You're right that that's an important part of the philosophy. I'll also agree that the principle of a widget library that we can all share is a good one.

My concern would be that I want it to be very easy to create widgets and wouldn't want to sacrifice that too much for the sake of cross-framework sharing.

I'm expecting to see quite a few AJAXian and JavaScriptified (to use two crazy buzzwordish things) widgets. Some widgets already have considerably more markup than I'd want to do via string concatenation (though something like STAN could be reasonable). Look at TableForm for an example:

http://www.turbogears.org/svn/turbogears/trunk/turbogears/widgets/forms.py

By the way, TurboGears widgets/forms include the validation/conversion that's necessary to go to/from Python (using the FormEncode package), and provide easy mechanisms for including JavaScript and CSS. Unless I continue to get sidetracked today, I should get two new screencasts up that talk in more detail about how forms work.

Once I've done that, it would be interesting to talk more about Zope 3's widgets and how they compare. The turbogears.widgets stuff is definitely experimental, so I'm open to better ways of working, if they exist...</description>
		<content:encoded><![CDATA[<p>I&#8217;m fine being on the hook for making an effort to reuse existing projects. You&#8217;re right that that&#8217;s an important part of the philosophy. I&#8217;ll also agree that the principle of a widget library that we can all share is a good one.</p>
<p>My concern would be that I want it to be very easy to create widgets and wouldn&#8217;t want to sacrifice that too much for the sake of cross-framework sharing.</p>
<p>I&#8217;m expecting to see quite a few AJAXian and JavaScriptified (to use two crazy buzzwordish things) widgets. Some widgets already have considerably more markup than I&#8217;d want to do via string concatenation (though something like STAN could be reasonable). Look at TableForm for an example:</p>
<p><a href="http://www.turbogears.org/svn/turbogears/trunk/turbogears/widgets/forms.py" rel="nofollow">http://www.turbogears.org/svn/turbogears/trunk/turbogears/widgets/forms.py</a></p>
<p>By the way, TurboGears widgets/forms include the validation/conversion that&#8217;s necessary to go to/from Python (using the FormEncode package), and provide easy mechanisms for including JavaScript and CSS. Unless I continue to get sidetracked today, I should get two new screencasts up that talk in more detail about how forms work.</p>
<p>Once I&#8217;ve done that, it would be interesting to talk more about Zope 3&#8217;s widgets and how they compare. The turbogears.widgets stuff is definitely experimental, so I&#8217;m open to better ways of working, if they exist&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sebastian Ware</title>
		<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26499</link>
		<dc:creator>Sebastian Ware</dc:creator>
		<pubDate>Thu, 22 Dec 2005 10:47:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26499</guid>
		<description>Hi Kevin!

You are absolutely right in these key issues. By focusing on a singel stack that really works, you reduce the learning curve and improve productivity. You also improve maintainability of the framework, thus protecting the investment of the user community. Anybody who wants a custom tailored solution can roll their own and invest the resources neccessary.

My choice to create a prototype with TurboGears over Zope3, Django, Twisted etc. was:

1 Well defined framework and vision
2 Key technologies (MVC and SQLobject)
3 Up and running in half an hour
4 The promise of AJAX

TurboGears will hopefully be living happily side-by-side with some Zope applications.

Moreover I am very excited about your concept of widgets. It will be fun to see how they will work with SQLobject.

What I am hoping in the medium term is that it will be possible to migrate FileMaker Pro solutions to TurboGears with considerable ease, retaining the benefits of maintainability of FM PRO, whilst adding extensibilty that just isn't possible with FM PRO. This would free a lot of resources and agony!

Keep up the excellent, focused, work!</description>
		<content:encoded><![CDATA[<p>Hi Kevin!</p>
<p>You are absolutely right in these key issues. By focusing on a singel stack that really works, you reduce the learning curve and improve productivity. You also improve maintainability of the framework, thus protecting the investment of the user community. Anybody who wants a custom tailored solution can roll their own and invest the resources neccessary.</p>
<p>My choice to create a prototype with TurboGears over Zope3, Django, Twisted etc. was:</p>
<p>1 Well defined framework and vision<br />
2 Key technologies (MVC and SQLobject)<br />
3 Up and running in half an hour<br />
4 The promise of AJAX</p>
<p>TurboGears will hopefully be living happily side-by-side with some Zope applications.</p>
<p>Moreover I am very excited about your concept of widgets. It will be fun to see how they will work with SQLobject.</p>
<p>What I am hoping in the medium term is that it will be possible to migrate FileMaker Pro solutions to TurboGears with considerable ease, retaining the benefits of maintainability of FM PRO, whilst adding extensibilty that just isn&#8217;t possible with FM PRO. This would free a lot of resources and agony!</p>
<p>Keep up the excellent, focused, work!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martijn Faassen</title>
		<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26318</link>
		<dc:creator>Martijn Faassen</dc:creator>
		<pubDate>Wed, 21 Dec 2005 21:05:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26318</guid>
		<description>You don't get off reinventing the widget wheel that easily with me. :)

"""
the ability to have a form dynamically generated or statically generated for full hacking by a designer (usually you get one or the other),
"""

I'm not sure what you mean by 'statically generated'. If you mean giving the designer the ability to render the widgets in the place they want, both the venerable Formulator which I wrote in 2000 as well as the new Zope 3 form system can do that just fine (see the hint: we've been doing this for a while in the Zope community). If you want to be able to hack actual widget HTML from within the form, I am curious to hear what your use case is; please let me know.

The ability to use Kid is a more serious objection, but can also be interpreted as a typical Not Invented Here response.I don't find the use case of having to use a template language for widgets very convincing. For the scope of the HTML generated by the typical widget, generating HTML from Python with a few helper functions is sufficient, and a templating system may be overkill. Perhaps you can expand your argument here.

If you can gain a common pool of widgets shared between frameworks from the concession of not using your templating system where it may not be such a boon anyway, that might be very worthwhile to you, as you'd have a much greater community of widgets users. I thought this was the philosophy of TurboGears -- don't reinvent the wheel but profit from the code, experience and community of existing projects. I'm willing to spend some time trying to extract the Zope 3 widgets machinery so it can be used standalone if you're interested in at least considering it.</description>
		<content:encoded><![CDATA[<p>You don&#8217;t get off reinventing the widget wheel that easily with me. <img src='http://www.blueskyonmars.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8220;&#8221;"<br />
the ability to have a form dynamically generated or statically generated for full hacking by a designer (usually you get one or the other),<br />
&#8220;&#8221;"</p>
<p>I&#8217;m not sure what you mean by &#8217;statically generated&#8217;. If you mean giving the designer the ability to render the widgets in the place they want, both the venerable Formulator which I wrote in 2000 as well as the new Zope 3 form system can do that just fine (see the hint: we&#8217;ve been doing this for a while in the Zope community). If you want to be able to hack actual widget HTML from within the form, I am curious to hear what your use case is; please let me know.</p>
<p>The ability to use Kid is a more serious objection, but can also be interpreted as a typical Not Invented Here response.I don&#8217;t find the use case of having to use a template language for widgets very convincing. For the scope of the HTML generated by the typical widget, generating HTML from Python with a few helper functions is sufficient, and a templating system may be overkill. Perhaps you can expand your argument here.</p>
<p>If you can gain a common pool of widgets shared between frameworks from the concession of not using your templating system where it may not be such a boon anyway, that might be very worthwhile to you, as you&#8217;d have a much greater community of widgets users. I thought this was the philosophy of TurboGears &#8212; don&#8217;t reinvent the wheel but profit from the code, experience and community of existing projects. I&#8217;m willing to spend some time trying to extract the Zope 3 widgets machinery so it can be used standalone if you&#8217;re interested in at least considering it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tazzzzz</title>
		<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26282</link>
		<dc:creator>tazzzzz</dc:creator>
		<pubDate>Wed, 21 Dec 2005 18:05:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26282</guid>
		<description>Martijn: there were a couple of things that I wanted out of TurboGears' widgets that I didn't see in the other tools available: the ability to have a form dynamically generated *or* statically generated for full hacking by a designer (usually you get one or the other), and the ability to describe what a widget looks like using Kid. I would've preferred to use an existing solution, and Z3's solution is nice in its own way, but I couldn't find one that let me do these things.

Ben: Without a doubt, different people will have different opinions of which tool is the "best of breed". I think Kid is the best language for generating HTML pages, and that is the #1 thing that templates do in webapps. It provides *many* different ways to compose templates from different parts, and I haven't particularly been missing any features from Cheetah (which I've used heavily).

Rather than prematurely optimizing by choosing a template language that I do not think is as good, I started with Kid with the knowledge that Python provides a great many ways to improve performance and that we'll be able to do so.

I should also note that even if there are people turned away because they don't like Kid, there are many others who *do* like Kid quite a bit and have said so on the list.

All of that said, there's no smiley needed on your last point. It is indeed my intention to maintain TurboGears with best-of-breed components. If I become convinced that a component is not the best and that its deficiencies will not be taken care of readily, I would start working out a migration strategy. That's what I meant by "maintain use of" the best of breed.</description>
		<content:encoded><![CDATA[<p>Martijn: there were a couple of things that I wanted out of TurboGears&#8217; widgets that I didn&#8217;t see in the other tools available: the ability to have a form dynamically generated *or* statically generated for full hacking by a designer (usually you get one or the other), and the ability to describe what a widget looks like using Kid. I would&#8217;ve preferred to use an existing solution, and Z3&#8217;s solution is nice in its own way, but I couldn&#8217;t find one that let me do these things.</p>
<p>Ben: Without a doubt, different people will have different opinions of which tool is the &#8220;best of breed&#8221;. I think Kid is the best language for generating HTML pages, and that is the #1 thing that templates do in webapps. It provides *many* different ways to compose templates from different parts, and I haven&#8217;t particularly been missing any features from Cheetah (which I&#8217;ve used heavily).</p>
<p>Rather than prematurely optimizing by choosing a template language that I do not think is as good, I started with Kid with the knowledge that Python provides a great many ways to improve performance and that we&#8217;ll be able to do so.</p>
<p>I should also note that even if there are people turned away because they don&#8217;t like Kid, there are many others who *do* like Kid quite a bit and have said so on the list.</p>
<p>All of that said, there&#8217;s no smiley needed on your last point. It is indeed my intention to maintain TurboGears with best-of-breed components. If I become convinced that a component is not the best and that its deficiencies will not be taken care of readily, I would start working out a migration strategy. That&#8217;s what I meant by &#8220;maintain use of&#8221; the best of breed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Bangert</title>
		<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26271</link>
		<dc:creator>Ben Bangert</dc:creator>
		<pubDate>Wed, 21 Dec 2005 17:33:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-26271</guid>
		<description>I'm a little surprised to hear Kid regarded as a "Best of Breed" templating component when development on it had all but ceased prior to TurboGears, and it was originally designed for web services, rather than web pages. I would consider Kid the best of breed if we further narrow the definition of "breed" down to template attribute style languages.

The performance of it is also rather problematic (http://trac.turbogears.org/turbogears/ticket/28), as with even a moderate amount of markup it becomes as slow as Plone. I'm sure this will likely be remedied eventually, but I've already seen some people skip TurboGears entirely due to its abysmal templating performance (and lack of sophisticated caching).

Of course, even with its speed up to par, the features it has are lacking considerably in the face of Cheetah or Myghty. It's not just about adding one or two missing features, its missing a ton of great features that both these other template languages have thanks to years of use by demanding users. (While Myghty hasn't been around years, its benefitted from the experience gained using its Perl ancestor, Mason)

On the other fronts, ORM, controller, etc. I think you've done a great job picking obvious best of breed components. SQLObject is without a doubt the largest and best-of-breed ORM on Python, and CherryPy is obviously out front for its part.

Out of curiosity, if someone comes along and starts showing how much more speed and power you get from TurboGears thanks to a more full featured "best of breed" template language, would you ever consider switching TurboGears to it? ;)</description>
		<content:encoded><![CDATA[<p>I&#8217;m a little surprised to hear Kid regarded as a &#8220;Best of Breed&#8221; templating component when development on it had all but ceased prior to TurboGears, and it was originally designed for web services, rather than web pages. I would consider Kid the best of breed if we further narrow the definition of &#8220;breed&#8221; down to template attribute style languages.</p>
<p>The performance of it is also rather problematic (http://trac.turbogears.org/turbogears/ticket/28), as with even a moderate amount of markup it becomes as slow as Plone. I&#8217;m sure this will likely be remedied eventually, but I&#8217;ve already seen some people skip TurboGears entirely due to its abysmal templating performance (and lack of sophisticated caching).</p>
<p>Of course, even with its speed up to par, the features it has are lacking considerably in the face of Cheetah or Myghty. It&#8217;s not just about adding one or two missing features, its missing a ton of great features that both these other template languages have thanks to years of use by demanding users. (While Myghty hasn&#8217;t been around years, its benefitted from the experience gained using its Perl ancestor, Mason)</p>
<p>On the other fronts, ORM, controller, etc. I think you&#8217;ve done a great job picking obvious best of breed components. SQLObject is without a doubt the largest and best-of-breed ORM on Python, and CherryPy is obviously out front for its part.</p>
<p>Out of curiosity, if someone comes along and starts showing how much more speed and power you get from TurboGears thanks to a more full featured &#8220;best of breed&#8221; template language, would you ever consider switching TurboGears to it? <img src='http://www.blueskyonmars.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martijn Faassen</title>
		<link>http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-25600</link>
		<dc:creator>Martijn Faassen</dc:creator>
		<pubDate>Tue, 20 Dec 2005 19:55:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.blueskyonmars.com/2005/12/20/what-is-turbogears-not/#comment-25600</guid>
		<description>Concerning 'best of breed' frameworks, I understand from a few blog postings (i.e. I'm just jumping in randomly here) that the TurboGears community is involved in building a widget and form framework. We in the Zope community have been doing this for many years, and we have many different frameworks available right now, hopefully slowly evolving towards a single Zope 3-based framework in the future. I have the feeling that some of the experience and code we have could be valuable to you.

Instead of reinventing the widget wheel again, perhaps we can work together on some of this? Of course that would mean your widgets wouldn't be using kid and ours wouldn't be using ZPT (they typically aren't anyway), but if we can create a bigger pool of reusable widgets that sounds good to me.</description>
		<content:encoded><![CDATA[<p>Concerning &#8216;best of breed&#8217; frameworks, I understand from a few blog postings (i.e. I&#8217;m just jumping in randomly here) that the TurboGears community is involved in building a widget and form framework. We in the Zope community have been doing this for many years, and we have many different frameworks available right now, hopefully slowly evolving towards a single Zope 3-based framework in the future. I have the feeling that some of the experience and code we have could be valuable to you.</p>
<p>Instead of reinventing the widget wheel again, perhaps we can work together on some of this? Of course that would mean your widgets wouldn&#8217;t be using kid and ours wouldn&#8217;t be using ZPT (they typically aren&#8217;t anyway), but if we can create a bigger pool of reusable widgets that sounds good to me.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.302 seconds -->
