Ease of Deployment Matters

Peter Hunt took a look on "How Python wins on the Web". He argued that framework does not really matter -- not all those efforts mimicking Ruby on Rails anyway, as RoR and .NET has already won the hearts of developers. Instead, Pythonists should focus on killer re-usable applications.

Here's what I propose: screw Web frameworks for now. We won't win in the Rails generation... For today, let's work on making generic Python products. Let's make a kick-ass community forums system, an incredible blogging system, a news script, a CPanel/Webmin clone that people will use because of their features, not their programming language.

However, when you look around searching for re-usable open source web applications, what do you see? PHP applications. When you go to open source application directories like OpenSourceCMS, most the apps (if not all) listed in there are written in PHP.

To me, PHP provides a gentler learning curve -- you can easily add PHP tags to existing static HTML files to create dynamic sites. But so is many other Python-based template engines (like Spyce). The language itself is only so-so -- Perl'ish, and probably has many more warts than Python, even in its current object-oriented incarnation. I do not think it is as attractive to the developers as 5 years ago when LAMP(HP) was the buzzword. However, PHP-developed applications still rule the market of cheap-ass shared hosting. Why?

Ease of deployment.

Peter said in his post:

And, most importantly, let's all get behind what I believe is the most pressing and important concept in the Python web development world today: Paste Deploy. What Python needs more than anything is a brainless, quick-and-easy way of connecting applications to gateways.

WordPress guys are proud of their famous 5 minute install. Not just WordPress, there is simply "no step 3" in many PHP application installations. You upload files into your web-root, point the browser to install.php, and then just follow the steps to set up database, create configuration, initialise super user, etc. There is no need to compile your own Python executable to install easy install so you can download eggs to power your supa-dupa forum application downloaded from sourceforge...

But how do you get ease of deployment? I have no experience with Paste before, so I briefly looked at the Deployment documentation. While it looks very promising, its installation goes like this:

sudo easy_install.py PasteDeploy

Aargh! It seems for those do no think paying for dedicated server or VPS is justifiable, they can only rely on their web hosts to install those libraries for them. Most hosting customers won't have a clue on compiling their own Python, and it is unlikely that hosting companies will have every possible egg installed, unless there's enough demand. There will not be demands unless there are enough compelling Python web applications. However, sometimes even a seasoned Python developer will choose to develop his next re-usable killer app in PHP, if he knows how difficult it will be to deploy...

At the end a good framework still matters. Ease of deployment is crucial, but is also a vicious cycle that needs some momentum to break out. RoR has that momentum -- look at how many shared hosts are now claiming their support of RoR deployments. We only wish the same can be said about Django and TurboGears.