Re: Why Web Programming Matters Most

This is very true. In my environment (database support, FWIW) I find that most of the utility-type programs I write fall into one of two categories - server-side utilities/daemons (with a command line interface at best) or web applications.

For web applications, I'd love to use Python. I've tried, often enough. But this is "internal" software, and it's hard to get any time to spend on it. So I have to be able to get a basic, good looking (I know, but it matters to management :-() application, up and running fast. Python can't really do this, as things stand.

The type of application I'm talking about isn't fancy - a very basic CRUD (Create, Report, Update, Delete) application is all I need as a start. Once I've got that sanctioned and running, adding the extra bells and whistles is a lot easier to get agreement to. This is where, in my view, Rails scores - it's a "build the basic application in a day" environment, with the flexibility to grow once the initial system is in place.

FWIW, being an Oracle environment, we've started using Oracle's proprietary HTML DB system. It's nice for that basic CRUD system, and it's got a reasonably nice-looking set of default templates (with slick bells and whistles like tabbed dialogs, which always impress people :-)). But it's an unholy nightmare to extend. And yet that doesn't matter, because the initial development is so simple...

So there's a challenge. If someone were to develop a Python framework which made writing a basic CRUD application a simple matter, coupled with some good, "professional-looking" templates, I'd bite your hand off to get it.

Comments:

Paul: We've had the exact Python Web framework you're asking about for about a year -- on-the-fly ORM generation, dynamically-created admin interfaces, stupidly-simple CRUD and much, much more... It's just a matter of convincing our higher-ups to open-source it. We're working on that.

Stay tuned. And if you (or anybody else) have suggestions on how to convince management to open-source a product, please contact me. (holovaty.com/contact)

I'd like to pipe in with my agreement regarding the true problem here. SQLObject is a good, transparent ORM. Nevow, Quixote and CherryPy are all quite reasonable object publishers. Cheetah or one of the XML template systems (ZPT, Kid, etc.) are decent template systems. The parts are all there. Because of distutils, they're even pretty easy to install.

The problem is that once you've got them installed, you're sitting there with a blank directory, wondering what to do next. Reading through the docs of the various projects will give you some ideas, but you don't get a great feeling about things because you're not really sure how to kick things off and make something visible that you can put your arms around and start improving. I do test-driven development and find that it helps, but a project really takes off once you've got something to grab onto.

That's what Rails offers that none of the current Python solutions does: a way to get going nearly instantly. So much so, that they can create a 10 minute demo video.

A large number of applications are all about CRUD. Sure, they all have their own wrinkles, but if you can give someone a quick start with CRUD and easy ways to grow from there, you've got yourself a winner with a big chunk of apps.

Subway can do this (but, I haven't looked closely enough at it to know if that's where it's heading). Bringing this kind of CRUD quickstart would at least let Python catch up with Rails.

As Ian pointed out in another posting, and you say here, Python has all the bits. What it lacks is the "quickstart" appeal. Whatever you call it, that's what's missing. And I don't see this as "playing catchup to Rails" - it's a simple case of providing entry-level, tutorial type documentation and sample material (something that open source projects are notoriously lacking in, because none of us like writing it).

I don't think there's any need to evangelise a "one true system" for object publishing, or for templating, or whatever. Each has its strengths and weaknesses. But picking one set (and accepting the compromises) and doing a really good job of putting that quickstart tutorial together will add something extra to the mix. Subway sounds interesting, but a first glance makes it look like (more) packaging and "layers". I'm happy with a toolkit of "bits". I don't really want a packaged solution, I want a first step up.

Heck, I'm very close to going it alone, and building something for myself. I found a document the other day called "Four Days on Rails", which went the step past the 10-minute demo video, and showed how to start customising the initial application. I'm seriously considering doing something similar for Python, starting from SQLObject, Cheetah, and Quixote (or maybe CherryPy). But my graphic design skills are dire. I'm going to find it very hard to write something along the lines of "look - it's easy to build a basic web application in Python" when I can't even stomach the look of the result myself :-)

I don't know if I'll ever get round to doing this (my life is a mess of part-completed projects...) but I'm not sure that waiting and hoping someone else will do it for me is going to work, either.

(And I even looked at Rails, but I can't get my head round Ruby so I'm probably safe from the temptation to swap languages for a while yet...)