Tim Roberts wrote: > > Consider Ruby. If someone asks, "I'd like to do a web site with Ruby, what > should I use?", the answer comes back loud, clear, and unanimous: Ruby on > Rails.
I actually believe that people in most buzzword shortlist situations see Rails as being the name in the list of candidates, not Ruby - it's somewhat like Zope being in the list rather than Python, or Struts/Tapestry/Apache-project-of-the-month being in the list rather than Java (albeit with a fairly warm corporate feeling that Java is there underneath). > If someone asks, "I'd like to do a web site with Python, what > should I use?", she gets 25 different answers. "Look at HTMLGen, Cheetah, > WebWare, CherryPy, Karrigell, Django, Pylons, Plone, Zope, TurboGears, > etc., etc.", none of which are pre-installed in the typical Linux > distribution. To the non-programming decision maker, that kind of response > makes Python look unprofessional -- a toy. Indeed. That's why, after enumerating the uncontrollably expanding list of solutions for a time [1], I wanted to concentrate on showing the viable options with all their differentiating features in the Python Web Frameworks Overview [2]. Ultimately, that content was moved to the python.org Wiki [3] and everyone got their chance to hype their pet project - it became like a random set of links. Sure, everyone wants everyone else to see their work, but there's a role in the community for objective education about the right tool for the job rather than either graphically showing the little fish tear each other apart, or jumping on the bandwagon with the most momentum and hyping it to the exclusion of everything else. In the latter case, the end result is to promote the big fish to the bigger pool (that stuff about Rails, Zope, Struts & friends above), creating another generation of "agile frameworks". [...] > I agree with Marc. PLEASE do not create "yet another Python web > framework." Let's pick one, and join together to turn it into the One, > True, Unquestioned Web Solution. Let's say we go for front-runner "du jour", Django. I've looked at Django, and I'll admit that parts of the core API are fairly well done when compared to certain other frameworks. However, let's say that we want to "do it right" whilst expressing our dissatisfaction with the templating, noting that when doing XML-oriented templating (that's HTML, XHTML, XML and so on) I prefer something which upsets my Web page editor less than it already is. So we unplug the templating somehow and offer other options which plug into whatever magic that exists in Django to make everything work smoothly. Let's say we unplug the database abstraction layer because it doesn't do everything we want, either, noting that I don't have any strong opinions about Django's object-relational mapper, but I am wary of Web frameworks which apparently encourage a database installation just for "hello world" even if it isn't strictly required from a technical perspective. Ultimately, we end up in a situation that is described far better in the following article: http://www.cmlenz.net/blog/2006/08/the_python_web_.html In my opinion, what has damaged the Python Web frameworks scene has been the continual hype and land-grabbing, the refusal to cede ground on even the most basic stuff ("my magic form request variables are better than yours", even though the majority of such magic solutions are lacklustre at best), and that continual sighting of a grand prize that at best gives you a ticket to Zopeworld - you get your own "business ecosystem" while everyone else starts working on the next thing to undo you. I'd like to hear suggestions on how some cooperation can be encouraged above the WSGI level, which despite the fanfare didn't really give so many good answers to those confused users looking for a solution. As I've said often enough before, the abstract "paper comparison" of Web frameworks evolved into WebStack [4] which was originally an exercise in seeing just how different many frameworks are at the lower levels: the answer, given that you can paper over them in that way, is "different only in unhelpful ways but not irreconcilably so". One day, the Python Web frameworks scene may grow up and realise this fact. Paul [1] http://web.archive.org/web/20041011015154/http://thor.prohosting.com/~pboddie/Python/web_modules.html [2] http://www.boddie.org.uk/python/web_frameworks.html [3] http://wiki.python.org/moin/WebProgramming [4] http://www.python.org/pypi/WebStack -- http://mail.python.org/mailman/listinfo/python-list