<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.3" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: The Shrinking Python Web Framework World</title>
	<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/</link>
	<description></description>
	<pubDate>Wed, 09 Jul 2008 12:06:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.3</generator>

	<item>
		<title>By: tom</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-15509</link>
		<dc:creator>tom</dc:creator>
		<pubDate>Fri, 22 Feb 2008 22:54:09 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-15509</guid>
		<description>I started to use Django a few months ago and I am very impressed by its ease of use and performance. I was new to Python (coming from C#) and was a bit surprised by then quickly amazed by the simplicity and power of this language !

Concerning Python frameworks, Django is definitely my favorite ! I just found the frequency of the release a bit slow. A good start to evaluate other Python frameworks :
http://www.therightsoft.com/softwaretechnologies/webframeworks/?languageid=2

(though as said before in the discussion, all the items are not comparable...)</description>
		<content:encoded><![CDATA[<p>I started to use Django a few months ago and I am very impressed by its ease of use and performance. I was new to Python (coming from C#) and was a bit surprised by then quickly amazed by the simplicity and power of this language !</p>

<p>Concerning Python frameworks, Django is definitely my favorite ! I just found the frequency of the release a bit slow. A good start to evaluate other Python frameworks :
<a href="http://www.therightsoft.com/softwaretechnologies/webframeworks/?languageid=2" rel="nofollow">http://www.therightsoft.com/softwaretechnologies/webframeworks/?languageid=2</a></p>

<p>(though as said before in the discussion, all the items are not comparable&#8230;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Massimo</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-1451</link>
		<dc:creator>Massimo</dc:creator>
		<pubDate>Sat, 13 Oct 2007 04:32:14 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-1451</guid>
		<description>&lt;a href="http://www.youtube.com/watch?v=VBjja6N6IYk" rel="nofollow"&gt;Here&lt;/a&gt; is a video respose to this discussion. It makes the list longer but I am trying to make a point about usability and software engineering: 1) you cannot require your average user to be as knowledgeble as the developers of the framework; 2) choose a top-down design, not a bottom-up one, otherwise your users will be disappointed by APIs that change on a weekly basis. With &lt;a href="http://mdp.cti.depaul.edu/examples" rel="nofollow"&gt;Gluon&lt;/a&gt; I have tried to address these two issues. Remember that our competitors are not other Python frameworks. Our competitors are JSP, PHP and perhaps Ruby on Rails.</description>
		<content:encoded><![CDATA[<p><a href="http://www.youtube.com/watch?v=VBjja6N6IYk" rel="nofollow">Here</a> is a video respose to this discussion. It makes the list longer but I am trying to make a point about usability and software engineering: 1) you cannot require your average user to be as knowledgeble as the developers of the framework; 2) choose a top-down design, not a bottom-up one, otherwise your users will be disappointed by APIs that change on a weekly basis. With <a href="http://mdp.cti.depaul.edu/examples" rel="nofollow">Gluon</a> I have tried to address these two issues. Remember that our competitors are not other Python frameworks. Our competitors are JSP, PHP and perhaps Ruby on Rails.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bir2su</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-1229</link>
		<dc:creator>bir2su</dc:creator>
		<pubDate>Fri, 05 Oct 2007 10:46:55 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-1229</guid>
		<description>Django is the best framework not only in the python world. it is the best web framework ever built. Unlike other framework it is scalable and is ideal framework for the agile web development.
 
you can download the django book(pdf) at bir2su.blogspot.com</description>
		<content:encoded><![CDATA[<p>Django is the best framework not only in the python world. it is the best web framework ever built. Unlike other framework it is scalable and is ideal framework for the agile web development.</p>

<p>you can download the django book(pdf) at bir2su.blogspot.com</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seeking Refuge</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-1089</link>
		<dc:creator>Seeking Refuge</dc:creator>
		<pubDate>Mon, 24 Sep 2007 13:22:39 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-1089</guid>
		<description>Regarding RoR, I've arrived back at Python from Ruby,  finding that they have a much bigger elephant in their room,  probably several elephants.

First of all,  the only deployment game in town is currently Mongrel,  and the proposal is that you deploy 5 or so 30 meg Rails processes PER APPLICATION.  So you have a bunch of little clusters popping up everywhere hogging all the RAM,  and in lieu of a single server,  they propose that this all be managed by a thing called Capistrano.  I simply can't do this.

I went back to Django after seeing the simple and familiar Apache prefork deployment on mod_python.  Should be good enough.  RoR/Mongrel is some kind of bandaid.  Who thought of this per-app clustered architecture,  at 30 megs a pop?  Am I seriously willing to deploy that?  Guess I'll have to take a look...

Who knows though...maybe I'll end up going back.  Get to know Capistrano.  Seems to me they've become as complex as Java.  Hey,  maybe I'll just go back to Java.</description>
		<content:encoded><![CDATA[<p>Regarding RoR, I&#8217;ve arrived back at Python from Ruby,  finding that they have a much bigger elephant in their room,  probably several elephants.</p>

<p>First of all,  the only deployment game in town is currently Mongrel,  and the proposal is that you deploy 5 or so 30 meg Rails processes PER APPLICATION.  So you have a bunch of little clusters popping up everywhere hogging all the RAM,  and in lieu of a single server,  they propose that this all be managed by a thing called Capistrano.  I simply can&#8217;t do this.</p>

<p>I went back to Django after seeing the simple and familiar Apache prefork deployment on mod_python.  Should be good enough.  RoR/Mongrel is some kind of bandaid.  Who thought of this per-app clustered architecture,  at 30 megs a pop?  Am I seriously willing to deploy that?  Guess I&#8217;ll have to take a look&#8230;</p>

<p>Who knows though&#8230;maybe I&#8217;ll end up going back.  Get to know Capistrano.  Seems to me they&#8217;ve become as complex as Java.  Hey,  maybe I&#8217;ll just go back to Java.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sharp Programmer</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-792</link>
		<dc:creator>Sharp Programmer</dc:creator>
		<pubDate>Sun, 09 Sep 2007 03:40:10 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-792</guid>
		<description>I just entered into Python world. I speak Perl. Once I grab up enough syntax, I'll look at the framework. Thanks</description>
		<content:encoded><![CDATA[<p>I just entered into Python world. I speak Perl. Once I grab up enough syntax, I&#8217;ll look at the framework. Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Orr</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-513</link>
		<dc:creator>Mike Orr</dc:creator>
		<pubDate>Fri, 31 Aug 2007 19:54:02 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-513</guid>
		<description>It's interesting that some people now consider CherryPy "not a framework". When the angst over the burgeoning number of frameworks climaxed in 2005 at the PyWebOff talk in PyCon 2005, CherryPy was one of the foremost frameworks. So what happened?

TurboGears introduced the concept of "megaframework", which Django and Pylons are also competing in. It looks like this has now become people's concept of a "framework", and the simpler frameworks are now... framework components?

The original definition of a framework was "it calls you" -- i.e., a container for your application -- as opposed to a library where is "you call it". So all these server/dispatcher thingys are frameworks under this definition, including small ones like Paste and web.py.

Quixote is still maintained and in production sites. Its lack of activity is due to its stability as well as its minimalistic philosophy: fewer features means fewer bugs.  The Quixote developers have chosen not to compete in the megaframework arena but instead to let people come to it. It does what its paying sponsors need, in any case. :) Future development has been targeted to Qpy, which has a more extensible codebase.</description>
		<content:encoded><![CDATA[<p>It&#8217;s interesting that some people now consider CherryPy &#8220;not a framework&#8221;. When the angst over the burgeoning number of frameworks climaxed in 2005 at the PyWebOff talk in PyCon 2005, CherryPy was one of the foremost frameworks. So what happened?</p>

<p>TurboGears introduced the concept of &#8220;megaframework&#8221;, which Django and Pylons are also competing in. It looks like this has now become people&#8217;s concept of a &#8220;framework&#8221;, and the simpler frameworks are now&#8230; framework components?</p>

<p>The original definition of a framework was &#8220;it calls you&#8221; &#8212; i.e., a container for your application &#8212; as opposed to a library where is &#8220;you call it&#8221;. So all these server/dispatcher thingys are frameworks under this definition, including small ones like Paste and web.py.</p>

<p>Quixote is still maintained and in production sites. Its lack of activity is due to its stability as well as its minimalistic philosophy: fewer features means fewer bugs.  The Quixote developers have chosen not to compete in the megaframework arena but instead to let people come to it. It does what its paying sponsors need, in any case. :) Future development has been targeted to Qpy, which has a more extensible codebase.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Boddie</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-320</link>
		<dc:creator>Paul Boddie</dc:creator>
		<pubDate>Thu, 23 Aug 2007 15:51:00 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-320</guid>
		<description>"Not really. Pylons and Turbogears recommend Genshi or Mako templates which are both built for Unicode from the ground up."

Nice to see that there's a consensus. It wasn't always this way, I believe.

"There are issues remaining with unicode, but at this point its primarily a Python problem (and in some cases, a database problem, like MySQL which can present some encoding challenges); strings are still represented as bytestrings by default, and converting into unicode objects can be tricky."

Ignoring the database issues, which can be awkward, the "tricky" part of converting byte sequences (plain strings) into characters (Unicode) is hardly a "Python problem" unless that's a label for the work that framework developers don't want to do: it's a fundamental part of interpreting the data. Python 3000 doesn't magically solve this for you because the issues don't go away with Python 2.x. Instead, they reside in the nature of the data the framework is busy pumping backward and forward on your behalf - precisely at the point where the framework should be lending a hand.

I didn't bother exposing data as Unicode in WebStack for some time, mostly because I used the excuse that it was but a thin wrapper over other frameworks, but having full Unicode support for Java Servlets and "pot luck" for all the CPython stuff was highly embarrassing - it would be like an XML toolkit giving you plain strings and making you do encoding conversions manually.

If I wanted to point the finger at a guilty party on the subject of Unicode, encodings, and so on, it'd be the people who wrote the HTTP specifications, along with the people writing the next generation of them who are probably more inclined to dream up fancy new form widgets than define unambiguous behaviour. Nevertheless, other people have considered such matters before, and it isn't particularly sensible to just ignore their work, even if they aren't the "cool" people any more.</description>
		<content:encoded><![CDATA[<p>&#8220;Not really. Pylons and Turbogears recommend Genshi or Mako templates which are both built for Unicode from the ground up.&#8221;</p>

<p>Nice to see that there&#8217;s a consensus. It wasn&#8217;t always this way, I believe.</p>

<p>&#8220;There are issues remaining with unicode, but at this point its primarily a Python problem (and in some cases, a database problem, like MySQL which can present some encoding challenges); strings are still represented as bytestrings by default, and converting into unicode objects can be tricky.&#8221;</p>

<p>Ignoring the database issues, which can be awkward, the &#8220;tricky&#8221; part of converting byte sequences (plain strings) into characters (Unicode) is hardly a &#8220;Python problem&#8221; unless that&#8217;s a label for the work that framework developers don&#8217;t want to do: it&#8217;s a fundamental part of interpreting the data. Python 3000 doesn&#8217;t magically solve this for you because the issues don&#8217;t go away with Python 2.x. Instead, they reside in the nature of the data the framework is busy pumping backward and forward on your behalf - precisely at the point where the framework should be lending a hand.</p>

<p>I didn&#8217;t bother exposing data as Unicode in WebStack for some time, mostly because I used the excuse that it was but a thin wrapper over other frameworks, but having full Unicode support for Java Servlets and &#8220;pot luck&#8221; for all the CPython stuff was highly embarrassing - it would be like an XML toolkit giving you plain strings and making you do encoding conversions manually.</p>

<p>If I wanted to point the finger at a guilty party on the subject of Unicode, encodings, and so on, it&#8217;d be the people who wrote the HTTP specifications, along with the people writing the next generation of them who are probably more inclined to dream up fancy new form widgets than define unambiguous behaviour. Nevertheless, other people have considered such matters before, and it isn&#8217;t particularly sensible to just ignore their work, even if they aren&#8217;t the &#8220;cool&#8221; people any more.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Martijn Faassen</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-318</link>
		<dc:creator>Martijn Faassen</dc:creator>
		<pubDate>Thu, 23 Aug 2007 14:33:33 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-318</guid>
		<description>Zope 3 has been unicode safe from the start. Since 2002 or thereabouts. I was somewhat bemused at seeing Django announce unicode support proudly a few months ago. They have backwards compatibility hacks and all, right? We've have had this, without any hacks, for half a decade and probably nobody even knows it. Shows how badly we market Zope 3 (but this is changing, with Grok).</description>
		<content:encoded><![CDATA[<p>Zope 3 has been unicode safe from the start. Since 2002 or thereabouts. I was somewhat bemused at seeing Django announce unicode support proudly a few months ago. They have backwards compatibility hacks and all, right? We&#8217;ve have had this, without any hacks, for half a decade and probably nobody even knows it. Shows how badly we market Zope 3 (but this is changing, with Grok).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mike bayer</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-317</link>
		<dc:creator>mike bayer</dc:creator>
		<pubDate>Thu, 23 Aug 2007 13:58:56 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-317</guid>
		<description>"given the widespread problems many Python-based frameworks have had with Unicode...[they] probably still [remain] in other frameworks"

Not really.  Pylons and Turbogears recommend Genshi or Mako templates which are both built for Unicode from the ground up.  SQLAlchemy, used by both, can represent tables in Chinese (not just the data; the *schema*).

There *are* issues remaining with unicode, but at this point its primarily a Python problem (and in some cases, a database problem, like MySQL which can present some encoding challenges); strings are still represented as bytestrings by default, and converting into unicode objects can be tricky.  That's pretty much where the confusion comes from.  

"It’s not all about momentum, you know - sometimes you want pieces of the stack to be stable, even mature. "

I dont find this to be true in the Java world either.  A year ago, we were using Hibernate and Struts.  Now we're using JPA and Struts2 (which is an entirely different product); Hibernate's API has been totally replaced, and Struts has literally been chucked wholesale.  While we might want to look at Java for insight on how to handle things, my observation is that *they* have been looking at *us* (us being, Ruby and Python) a *lot* as of late, working at making their APIs more friendly, adding decorator-like "annotations" and iterator syntaxes, copying our ideas for web controllers, and cutting down on the XML bloat.  I think the "stability"/"maturity" perception on the java side comes down to the sheer number of developers working on things over there (and being paid full time to develop them by big corporations).  Whereas Python projects are often volunteer/part-time/not-really-funded ventures with much smaller userbases.</description>
		<content:encoded><![CDATA[<p>&#8220;given the widespread problems many Python-based frameworks have had with Unicode&#8230;[they] probably still [remain] in other frameworks&#8221;</p>

<p>Not really.  Pylons and Turbogears recommend Genshi or Mako templates which are both built for Unicode from the ground up.  SQLAlchemy, used by both, can represent tables in Chinese (not just the data; the <em>schema</em>).</p>

<p>There <em>are</em> issues remaining with unicode, but at this point its primarily a Python problem (and in some cases, a database problem, like MySQL which can present some encoding challenges); strings are still represented as bytestrings by default, and converting into unicode objects can be tricky.  That&#8217;s pretty much where the confusion comes from.  </p>

<p>&#8220;It’s not all about momentum, you know - sometimes you want pieces of the stack to be stable, even mature. &#8220;</p>

<p>I dont find this to be true in the Java world either.  A year ago, we were using Hibernate and Struts.  Now we&#8217;re using JPA and Struts2 (which is an entirely different product); Hibernate&#8217;s API has been totally replaced, and Struts has literally been chucked wholesale.  While we might want to look at Java for insight on how to handle things, my observation is that <em>they</em> have been looking at <em>us</em> (us being, Ruby and Python) a <em>lot</em> as of late, working at making their APIs more friendly, adding decorator-like &#8220;annotations&#8221; and iterator syntaxes, copying our ideas for web controllers, and cutting down on the XML bloat.  I think the &#8220;stability&#8221;/&#8221;maturity&#8221; perception on the java side comes down to the sheer number of developers working on things over there (and being paid full time to develop them by big corporations).  Whereas Python projects are often volunteer/part-time/not-really-funded ventures with much smaller userbases.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Boddie</title>
		<link>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-316</link>
		<dc:creator>Paul Boddie</dc:creator>
		<pubDate>Thu, 23 Aug 2007 13:36:12 +0000</pubDate>
		<guid>http://blog.ianbicking.org/2007/08/21/the-shrinking-python-web-framework-world/#comment-316</guid>
		<description>"And as for Java, frankly I think we’re beyond the point at which there’s much to learn there."

I think a lot of frameworks could start out by learning how the Java technologies manage to work with Unicode, given the widespread problems many Python-based frameworks have had with Unicode until very recently. I note that someone in the Django community eventually stepped up and dealt with the issue, but it probably still remains in other frameworks, given the occurrence of discussion threads on such matters in various places.

It's not all about momentum, you know - sometimes you want pieces of the stack to be stable, even mature. The problem has been that everyone has wanted to show how much they're innovating (which has indeed happened), but that can lead to egregious and ubiquitous breakage as the developers refine their work. You wouldn't want your C library API to mutate every few weeks or months. Likewise, it's a relief to be able to use technologies which improve but don't break your code needlessly as they evolve, get updated or get fixed. (I don't update WebStack very often at all, or at least not the central abstractions, but that doesn't mean it doesn't work any more, or that it isn't useful for other components or applications.)

As for the Wiki page...

"It’s a horrible landing place for people looking to make a decision about a Python web framework. I was just trying to be helpful to readers by warning them about that."

The dates next to the frameworks give the discerning reader a good indication of framework vitality, and I don't even think that this was even my idea. Nevertheless, the page, which was previously a mess of links and opportunistic promotion, got an overhaul a while back after I got fed up with how incoherent it had become. Whether it plays an important role in informing people or not (or whether it represents the "new consensus" around Python Web frameworks as you see it), giving it the brush off is rather unfair to the people who update it (usually not me, unless I'm despamming it or making superficial edits) as well as the people who find it useful.</description>
		<content:encoded><![CDATA[<p>&#8220;And as for Java, frankly I think we’re beyond the point at which there’s much to learn there.&#8221;</p>

<p>I think a lot of frameworks could start out by learning how the Java technologies manage to work with Unicode, given the widespread problems many Python-based frameworks have had with Unicode until very recently. I note that someone in the Django community eventually stepped up and dealt with the issue, but it probably still remains in other frameworks, given the occurrence of discussion threads on such matters in various places.</p>

<p>It&#8217;s not all about momentum, you know - sometimes you want pieces of the stack to be stable, even mature. The problem has been that everyone has wanted to show how much they&#8217;re innovating (which has indeed happened), but that can lead to egregious and ubiquitous breakage as the developers refine their work. You wouldn&#8217;t want your C library API to mutate every few weeks or months. Likewise, it&#8217;s a relief to be able to use technologies which improve but don&#8217;t break your code needlessly as they evolve, get updated or get fixed. (I don&#8217;t update WebStack very often at all, or at least not the central abstractions, but that doesn&#8217;t mean it doesn&#8217;t work any more, or that it isn&#8217;t useful for other components or applications.)</p>

<p>As for the Wiki page&#8230;</p>

<p>&#8220;It’s a horrible landing place for people looking to make a decision about a Python web framework. I was just trying to be helpful to readers by warning them about that.&#8221;</p>

<p>The dates next to the frameworks give the discerning reader a good indication of framework vitality, and I don&#8217;t even think that this was even my idea. Nevertheless, the page, which was previously a mess of links and opportunistic promotion, got an overhaul a while back after I got fed up with how incoherent it had become. Whether it plays an important role in informing people or not (or whether it represents the &#8220;new consensus&#8221; around Python Web frameworks as you see it), giving it the brush off is rather unfair to the people who update it (usually not me, unless I&#8217;m despamming it or making superficial edits) as well as the people who find it useful.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
