<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Curb Your (Python Web Framework) Enthusiasm</title>
	<atom:link href="http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/</link>
	<description>the craft of software development, free/open source software advocacy, and the rest of life</description>
	<lastBuildDate>Wed, 24 Feb 2010 17:08:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: -= Linkage 2007.01.14 =-</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34846</link>
		<dc:creator>-= Linkage 2007.01.14 =-</dc:creator>
		<pubDate>Mon, 26 Jan 2009 15:40:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34846</guid>
		<description>[...] CYE about Python web frameworks&lt;br/&gt; Another thing we had was Python fans without significant Java experience continually emitting FUD about the JVM, which blows my mind. I have been following Python pretty closely for over a year now, and the amount of ignorance about Java in the Python community still surprises me. [...]</description>
		<content:encoded><![CDATA[<p>[...] CYE about Python web frameworks&lt;br/&gt; Another thing we had was Python fans without significant Java experience continually emitting FUD about the JVM, which blows my mind. I have been following Python pretty closely for over a year now, and the amount of ignorance about Java in the Python community still surprises me. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Massimo</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34106</link>
		<dc:creator>Massimo</dc:creator>
		<pubDate>Mon, 21 Jan 2008 15:19:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34106</guid>
		<description>I agree that there too many Python frameworks and fragmentation is a problem but there is a biger problem. Most existing frameworks have a bottom-up design instead of a top-down one. Developers keep adding layers that break backward compatibility instead of starting from a user-centric API design. web2py (http://www.web2py.com) was originally designed to address this issue and show how a web framework should be user centric and not developer centric. The web2py API have never broken backward compatibility.</description>
		<content:encoded><![CDATA[<p>I agree that there too many Python frameworks and fragmentation is a problem but there is a biger problem. Most existing frameworks have a bottom-up design instead of a top-down one. Developers keep adding layers that break backward compatibility instead of starting from a user-centric API design. web2py (<a href="http://www.web2py.com" rel="nofollow">http://www.web2py.com</a>) was originally designed to address this issue and show how a web framework should be user centric and not developer centric. The web2py API have never broken backward compatibility.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom K.</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34100</link>
		<dc:creator>Tom K.</dc:creator>
		<pubDate>Fri, 18 Jan 2008 20:38:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34100</guid>
		<description>I committed to django based on their endorsement from the People&#039;s Front of Judea. :)</description>
		<content:encoded><![CDATA[<p>I committed to django based on their endorsement from the People&#8217;s Front of Judea. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: yep, that&#8217;s me - barry at alltc.com &#187; Mark Ramm, friend and exemplar</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34091</link>
		<dc:creator>yep, that&#8217;s me - barry at alltc.com &#187; Mark Ramm, friend and exemplar</dc:creator>
		<pubDate>Tue, 15 Jan 2008 05:24:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34091</guid>
		<description>[...] post about a Python web frameworks OpenSpace convened at CodeMash drew a bit of attention, and looking [...]</description>
		<content:encoded><![CDATA[<p>[...] post about a Python web frameworks OpenSpace convened at CodeMash drew a bit of attention, and looking [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34090</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Mon, 14 Jan 2008 20:52:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34090</guid>
		<description>Thanks Barry!

TG2 will have the same object dispatch based controller mapping, with the possible additon of a way to manually override that mechanism when you want/need something different.  But object dispatch will still be the default, and it will always just work.   But, because Routes and django&#039;s regex matching, do allow you to do somethings easily that are hard with object dispatch, I think it&#039;s likely worth supporting some kind of built-in overide mechanism for special cases.  And the most likely candidate would be Routes (from Pylons, which is based roughly on Rails-ActionPack routes implementation).  But this will only happen if users who don&#039;t need it never have to worry about it. 

As for Genshi, that&#039;s another pragmatic decision.  Genshi has almost exactly the same syntax as Kid (it was designed from the beginning to be a reimplementation of Kid) with a few new features, such as includes, the ability to use xpath expressions in match templates, and a couple of useful tags.  But the main reasons we are switching to Genshi are:  

1) community support -- Lots of devs on genshi, lots of users, so it will be around for the long hall -- vs. Kid has had trouble maintaining a viable community
2) basic performance -- Genshi is quite a bit faster than Kid

That coupled with the very similar API&#039;s made it worth switching to Genshi.  

Mako is another story.  To be clear, there was some open discussion of switching to mako, but we will be sticking to Genshi.  It often has 10x perfomance gains over Gehshi, and for sites which render millions of hits per day (or which just render very, very large pages) that can make a huge difference.   Because the performance differece can be huge in some cases, TG2 will have to support Mako and even try to document it&#039;s use, but it will not be the default.

Hopefully that clarifies some things, and makes it clear that we aren&#039;t playing ring-around-the-component. :) 

Hopefully that clears up some things about TG2&#039;s development path.</description>
		<content:encoded><![CDATA[<p>Thanks Barry!</p>
<p>TG2 will have the same object dispatch based controller mapping, with the possible additon of a way to manually override that mechanism when you want/need something different.  But object dispatch will still be the default, and it will always just work.   But, because Routes and django&#8217;s regex matching, do allow you to do somethings easily that are hard with object dispatch, I think it&#8217;s likely worth supporting some kind of built-in overide mechanism for special cases.  And the most likely candidate would be Routes (from Pylons, which is based roughly on Rails-ActionPack routes implementation).  But this will only happen if users who don&#8217;t need it never have to worry about it. </p>
<p>As for Genshi, that&#8217;s another pragmatic decision.  Genshi has almost exactly the same syntax as Kid (it was designed from the beginning to be a reimplementation of Kid) with a few new features, such as includes, the ability to use xpath expressions in match templates, and a couple of useful tags.  But the main reasons we are switching to Genshi are:  </p>
<p>1) community support &#8212; Lots of devs on genshi, lots of users, so it will be around for the long hall &#8212; vs. Kid has had trouble maintaining a viable community<br />
2) basic performance &#8212; Genshi is quite a bit faster than Kid</p>
<p>That coupled with the very similar API&#8217;s made it worth switching to Genshi.  </p>
<p>Mako is another story.  To be clear, there was some open discussion of switching to mako, but we will be sticking to Genshi.  It often has 10x perfomance gains over Gehshi, and for sites which render millions of hits per day (or which just render very, very large pages) that can make a huge difference.   Because the performance differece can be huge in some cases, TG2 will have to support Mako and even try to document it&#8217;s use, but it will not be the default.</p>
<p>Hopefully that clarifies some things, and makes it clear that we aren&#8217;t playing ring-around-the-component. :) </p>
<p>Hopefully that clears up some things about TG2&#8217;s development path.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Barry Hawkins</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34089</link>
		<dc:creator>Barry Hawkins</dc:creator>
		<pubDate>Mon, 14 Jan 2008 19:43:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34089</guid>
		<description>&lt;p&gt;Hey Mark!  Hope you get a chance to recover from your conference/sprint marathon.&lt;/p&gt;
&lt;p&gt;Yeah, you were not among those who were saying the stuff about the JVM which gave me pause.  Additionally, some of the stuff I heard were things I heard at Pycon last year and even at PyAtl meetings.  One of the best Java assertions I once heard from a Python person was &quot;Are people even doing that much work in Java anymore?&quot; :-)&lt;/p&gt;
&lt;p&gt;As almost anyone who knows me can tell you, I am no particular fan of the Java language.  I don&#039;t think the Java platform is bad, though.  But, even if I did, I don&#039;t see much use in sharing it while trying to have a meaningful discussion about a different language.  The more open and collaborative feel of the dynamic language communities were a big part of the draw for me as I started looking at Ruby and Python.&lt;/p&gt;
&lt;p&gt;For the record, I still think TurboGears has the best long-term vision among the Python choices.  Furthermore, I think that only it and Django merit serious consideration.  I didn&#039;t spell it out fully in the original post, but hearing about things like web2py (formerly Gluon) were what made me think about fragmentation.  Two leading Python frameworks does not fragmentation make. ;-)&lt;/p&gt;
&lt;p&gt;I don&#039;t think anyone could question the soundness of switching to SQLAlchemy; that is the neatest ORM I have seen in any language.  I was really excited when I learned about that.&lt;/p&gt;
&lt;p&gt;The &quot;cool&quot; topics about TurboGears that concerned me were the discussions about even more changes to controller and view components.  As you have pointed out, there have been some initial changes with well-documented reasoning.  However, as I heard about the proposed new changes to controller mappings (I can&#039;t remember exactly, something about going one way because of Pylons, but then WSGI was a different way, and Django had this other way that was cool...I kind of glazed over at that point) and moving from Genshi to Mako for view stuff, I began to be concerned.  No doubt there are great technical reasonings behind these as well, but I wonder if they are critical enough to need to change already.&lt;/p&gt;
&lt;p&gt;What I&#039;d certainly like to make clear is that this post in no way is meant as a condemnation of the TurboGears project, and I think you&#039;ve done a great job trying to steer the thing.  Thanks for all the tireless (and unpaid) work you&#039;ve put into it.&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>Hey Mark!  Hope you get a chance to recover from your conference/sprint marathon.</p>
<p>Yeah, you were not among those who were saying the stuff about the JVM which gave me pause.  Additionally, some of the stuff I heard were things I heard at Pycon last year and even at PyAtl meetings.  One of the best Java assertions I once heard from a Python person was &#8220;Are people even doing that much work in Java anymore?&#8221; :-)</p>
<p>As almost anyone who knows me can tell you, I am no particular fan of the Java language.  I don&#8217;t think the Java platform is bad, though.  But, even if I did, I don&#8217;t see much use in sharing it while trying to have a meaningful discussion about a different language.  The more open and collaborative feel of the dynamic language communities were a big part of the draw for me as I started looking at Ruby and Python.</p>
<p>For the record, I still think TurboGears has the best long-term vision among the Python choices.  Furthermore, I think that only it and Django merit serious consideration.  I didn&#8217;t spell it out fully in the original post, but hearing about things like web2py (formerly Gluon) were what made me think about fragmentation.  Two leading Python frameworks does not fragmentation make. ;-)</p>
<p>I don&#8217;t think anyone could question the soundness of switching to SQLAlchemy; that is the neatest ORM I have seen in any language.  I was really excited when I learned about that.</p>
<p>The &#8220;cool&#8221; topics about TurboGears that concerned me were the discussions about even more changes to controller and view components.  As you have pointed out, there have been some initial changes with well-documented reasoning.  However, as I heard about the proposed new changes to controller mappings (I can&#8217;t remember exactly, something about going one way because of Pylons, but then WSGI was a different way, and Django had this other way that was cool&#8230;I kind of glazed over at that point) and moving from Genshi to Mako for view stuff, I began to be concerned.  No doubt there are great technical reasonings behind these as well, but I wonder if they are critical enough to need to change already.</p>
<p>What I&#8217;d certainly like to make clear is that this post in no way is meant as a condemnation of the TurboGears project, and I think you&#8217;ve done a great job trying to steer the thing.  Thanks for all the tireless (and unpaid) work you&#8217;ve put into it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34088</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Mon, 14 Jan 2008 19:05:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34088</guid>
		<description>One other thing.  

I think the coolest features and best selling points of Django is their docs.  So, from my perspective that&#039;s one of the &quot;cool&quot; things we need to emulate.</description>
		<content:encoded><![CDATA[<p>One other thing.  </p>
<p>I think the coolest features and best selling points of Django is their docs.  So, from my perspective that&#8217;s one of the &#8220;cool&#8221; things we need to emulate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Ramm</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34087</link>
		<dc:creator>Mark Ramm</dc:creator>
		<pubDate>Mon, 14 Jan 2008 18:58:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34087</guid>
		<description>Well

I think there&#039;s a lot to be learned from looking at the &quot;cool&quot; stuff.   Things are popular for a reason, and one of the things you have to do when working on a project that solves problems for users is to look at the why some people think other solutions to that same problem are &quot;cooler.&quot; And that&#039;s what I&#039;ve been trying to do with TurboGears.   Beyond that, the main objective of the last year is to work with Pylons, Repoze/Zope, and whoever else in the python web framework world is interested in working together. 

I think the &quot;fragmentation&quot; argument is actually overbolown, there&#039;s a lot of cooperation, code-sharing, and idea-proliferation going on behind the scenes.  For example one of the things that was mentioned in the conversation was the Django-Admin interface.   This is cool because it allows you to edit your data quickly and easily, and it provides a very quick way to get a working user interface.  Django is popular because this feature is really attractive, and their user community is growing partly because of it.  Unfortunately the implementation is very Django specific.   But, lots of the ideas are very viable outside of django.   So, rather than take this project on as a TurboGears feature, we&#039;ve been supporting a project called DBSprockets, which will bring many of those same features to TurboGears, and pylons.   But it&#039;s designed in such a way that it&#039;s actually useful to a wider set of python web developers than just the members of our little community. 

The idea came from django, and has been reimplemented in a more flexible way on top of SQLAlchemy and ToscaWidgets.   This is actually a benefit of multiple competeing projects, we can learn from one another and new ideas seem to come at a faster rate when there are lots of people experimenting in different ways. 

We certainly aren&#039;t changing core components because of a &quot;coolness factor&quot; calculation.   We moved from SQLObject to SQLAlchemy because SQLAlchemy provides a complete and compelling database access layer, built on an SQL independence layer, and an Data Mapper based ORM.  Sure, some of the things SQLAlchemy can do are pretty cool, but the fact of the matter is that it provides a much better scalability and legacy database integration story than SQLObject.   There&#039;s a lot of pragmatic decision-making behind these choices.   But, SQLAlchemy isn&#039;t always enough to get us in the door, because the coolness of the Django Admin interface is a lot more visable to new users, than the scalability features of SQLAlchemy.  The Genshi switch was based entirely on similar pragmatic reasons (performance, developer base, flexibility, etc).

But building a side project which allows us to get in the door to tell our story about building frameworks around components with well defined interfaces, and with direct support for many important &quot;enterprise architecture&quot; patterns isn&#039;t raw persuit of coolness, it&#039;s a pragmatic decision about how to position ourselves and our philosophy in the larger market. 

As for the anti-JVM fud, I must have been focused on something else.  And I sure hope I wasn&#039;t an accidental participant in it.  

I happen to know that the threading story on the JVM is far better than in python.  And both Jython and Jruby have better threading support than their respective C implementations for various reasons related to object reference counting and garbage collection.  But I think there are lots of advantages to multi-process concurrency solutions, and I&#039;m not at all convinced that the JVM has a better story there than c-python, and that was a point I tried to make at the meeting.   But perhaps I wasn&#039;t clear or wasn&#039;t thinking properly.  If so, I&#039;m sorry to have contributed to spreading any anti-java FUD.</description>
		<content:encoded><![CDATA[<p>Well</p>
<p>I think there&#8217;s a lot to be learned from looking at the &#8220;cool&#8221; stuff.   Things are popular for a reason, and one of the things you have to do when working on a project that solves problems for users is to look at the why some people think other solutions to that same problem are &#8220;cooler.&#8221; And that&#8217;s what I&#8217;ve been trying to do with TurboGears.   Beyond that, the main objective of the last year is to work with Pylons, Repoze/Zope, and whoever else in the python web framework world is interested in working together. </p>
<p>I think the &#8220;fragmentation&#8221; argument is actually overbolown, there&#8217;s a lot of cooperation, code-sharing, and idea-proliferation going on behind the scenes.  For example one of the things that was mentioned in the conversation was the Django-Admin interface.   This is cool because it allows you to edit your data quickly and easily, and it provides a very quick way to get a working user interface.  Django is popular because this feature is really attractive, and their user community is growing partly because of it.  Unfortunately the implementation is very Django specific.   But, lots of the ideas are very viable outside of django.   So, rather than take this project on as a TurboGears feature, we&#8217;ve been supporting a project called DBSprockets, which will bring many of those same features to TurboGears, and pylons.   But it&#8217;s designed in such a way that it&#8217;s actually useful to a wider set of python web developers than just the members of our little community. </p>
<p>The idea came from django, and has been reimplemented in a more flexible way on top of SQLAlchemy and ToscaWidgets.   This is actually a benefit of multiple competeing projects, we can learn from one another and new ideas seem to come at a faster rate when there are lots of people experimenting in different ways. </p>
<p>We certainly aren&#8217;t changing core components because of a &#8220;coolness factor&#8221; calculation.   We moved from SQLObject to SQLAlchemy because SQLAlchemy provides a complete and compelling database access layer, built on an SQL independence layer, and an Data Mapper based ORM.  Sure, some of the things SQLAlchemy can do are pretty cool, but the fact of the matter is that it provides a much better scalability and legacy database integration story than SQLObject.   There&#8217;s a lot of pragmatic decision-making behind these choices.   But, SQLAlchemy isn&#8217;t always enough to get us in the door, because the coolness of the Django Admin interface is a lot more visable to new users, than the scalability features of SQLAlchemy.  The Genshi switch was based entirely on similar pragmatic reasons (performance, developer base, flexibility, etc).</p>
<p>But building a side project which allows us to get in the door to tell our story about building frameworks around components with well defined interfaces, and with direct support for many important &#8220;enterprise architecture&#8221; patterns isn&#8217;t raw persuit of coolness, it&#8217;s a pragmatic decision about how to position ourselves and our philosophy in the larger market. </p>
<p>As for the anti-JVM fud, I must have been focused on something else.  And I sure hope I wasn&#8217;t an accidental participant in it.  </p>
<p>I happen to know that the threading story on the JVM is far better than in python.  And both Jython and Jruby have better threading support than their respective C implementations for various reasons related to object reference counting and garbage collection.  But I think there are lots of advantages to multi-process concurrency solutions, and I&#8217;m not at all convinced that the JVM has a better story there than c-python, and that was a point I tried to make at the meeting.   But perhaps I wasn&#8217;t clear or wasn&#8217;t thinking properly.  If so, I&#8217;m sorry to have contributed to spreading any anti-java FUD.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sp3w</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34086</link>
		<dc:creator>Sp3w</dc:creator>
		<pubDate>Mon, 14 Jan 2008 17:00:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34086</guid>
		<description>[...] CYE about Python web frameworks Another thing we had was Python fans without significant Java experience continually emitting FUD about the JVM, which blows my mind. I have been following Python pretty closely for over a year now, and the amount of ignorance about Java in the Python community still surprises me. [...]</description>
		<content:encoded><![CDATA[<p>[...] CYE about Python web frameworks Another thing we had was Python fans without significant Java experience continually emitting FUD about the JVM, which blows my mind. I have been following Python pretty closely for over a year now, and the amount of ignorance about Java in the Python community still surprises me. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Words of Wisdom From The Elder</title>
		<link>http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/comment-page-1/#comment-34084</link>
		<dc:creator>Words of Wisdom From The Elder</dc:creator>
		<pubDate>Mon, 14 Jan 2008 16:08:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.yepthatsme.com/2008/01/14/curb-your-python-web-framework-enthusiasm/#comment-34084</guid>
		<description>&lt;strong&gt;Codemash Timeline...&lt;/strong&gt;

Codemash Timeline...</description>
		<content:encoded><![CDATA[<p><strong>Codemash Timeline&#8230;</strong></p>
<p>Codemash Timeline&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
