I really like Peter Hunt's latest post: How Python wins on the web; quoting a bit:
But oh, how quick are we to forget Python's smashing successes in the Web world. We've got Plone, probably the most popular and comprehensive CMS out there. We've got the platform its built on, Zope, which is (from what I hear) fairly popular, too. We've had PyBloxsom, which until WordPress came along was a very widespread blogging system. And hell, we've got Python's "killer" web app, Trac, which just about everyone is using these days. And oh, BitTorrent. I know it's not a Web application in the traditional server-side sense, but it just shows how capable Python truly is.
What do all of these applications have in common? They certainly don't share a web framework; most of them are developed specific to that application and tailored to various deployment platforms (CGI, FastCGI, custom server, mod_python). Python appears to be falling behind in the world of custom-made Web applications, but in the world of generic, reusable Web applications, Python is doing great.
I wouldn't necessarily throw in the towel for frameworks, but I think Peter's right to bring the focus back to apps. A good environment (language, framework, design methodology, whatever) is good when people build great applications using it. And that's all there is to it. Obviously we have imagination and choice and we can have forward vision, but these are just aspirations; you still have to deliver the application before it really matters. And there's a lot of good applications written in Python, so we have nothing to apologize for.
Interestingly, by this metric, PHP is a really great language. Also by this metric PHP is a really horrible language. PHP is funny that way. What PHP gets really right is that it invites participation, a PHP app is generally approachable. PHP has had a good feedback cycle: good applications exist, starting of the cycle; then it comes back because people regularly tweak and modify the applications they install.
A lot of the features in my incomplete list of web environment features are about making an application inviting for people other than the original developer. These may be people who installed it, people who are tweaking it, or coworkers who come in at different points in its development. The motivation is bringing the feedback cycle back around; so that once we put applications out there we get people (even if very indirectly) coming back around as participants. And, of course, inviting participation without losing good development practices, which are "good" for reasons that apply just as much if not moreso to those late-joiners.
But of course, the feedback cycle starts with great applications. So lets go write applications. If there's lots yet to do in frameworks, there is a near-infinite amount left to do in applications.
I'm concerned that the apps tend to hide Python. Yes, the apps are popular but couldn't the same apps be re-written in Ruby? And with the surge in Ruby popularity there are plenty of Ruby developers who can/will give it a try.
I think it's a stretch to equate Zope & Plone popularity with Python. My fear is that to use this spin to soothe the egos of Python developers is worse than throwing in the towel or turning off the lights. You've just gouged out your eyes. And possibly setback Python's hope to go mainstream by about five years.
This is part of why I think it's important, having created applications other people want to use, that we create a situation where they are encouraged to extend and expand upon those applications. An environment of complimentary applications, plugins, and general customizing experience cannot be easily duplicated. So while a nice encapsulated zip file has a certain appeal, I also want people to feel they can jump into the code without destroying the application or getting themselves in trouble in the future.# Ian Bicking
I'm starting to give up the goal of a mainstream Python.
Yesterday I needed a way to reach out from a Python program and respond to a Windows GUI prompt for a password. A prompt that I had not expected when writing the app. Panic time!
I Googled for help and found the watsup module. Wow, what a clean, well designed and documented package. Built on top of other similarly impressive Python packages. I'm grateful for the help, excited to have so much power available to me and anxious to show off this stuff to other programmers. I already liked Python. But this is an additional layer of appreciation. And, although purely as a side note, a good example of the value of a high quality framework.
My real point is that the big win for Python is not the watsup package but that Python, well designed or not, attracted the creator(s) of watsup. I see Python as a filter that only certain people can get past. If scope by indent and crippled threads keep certain people (most Java programmers) away and let the watsup creator pass though, then... maybe that's best.
Maybe the developers who have told me it's better to do it right than be popular are correct. I'll try to find peace with that thought. And be happy to have made it past the filter myself.
This actually seems very logical to me. When you look at pythons batteries included approach, all the tools are there for writing these custom apps with no outside libraries. This seems highly desireable given that these apps for the most part will have to be hosted on a platform which only has python installed, and the user doesn't have control over what they can install on these machines. Urllib alone is more than adequate for generating http headers and responses. I don't blame the fact that we don't have killer frameworks, just with all the dependencies most require, basically anything beyond python greatly reduces their usability. Though one thing that did catch my attention quite a bit, is the new demo over at twistedmatrix of their web 2, the one file has several deployment options built in. Also I believe that when most python programmers go to tackle the web, have a hard time thinking past the application and we want our applications to be very usable by as many people as possible.# Todd