Why easy deployment is great

And why the Python community should do its best to get there

This is my argument for my Python web deployment software: kraftwerk (src).

PHP software is very easy to deploy. The server just maps a user folder to the HTTP path component and the server executes php scripts that match. Because of this file system mirroring it's easy to get started and understand what the web server is doing.

Python is different, and has chosen to be so for good reason. As the developer familiarizes himself with WSGI and web frameworks out there the landscape gets clearer and the reasons for this complexity become excusable. That doesn't mean we shouldn't try to make it as easy to deploy our websites.

I believe we'll have to abstract the server work required for each site and each server. The knowledge required to run a stable and performant Python website shouldn't be the domain of every developer. But it would be nice this were still within the power of all developers to accomplish. The developer community is afraid of this because they suspect that as soon as the server stack breaks they will be left out in the cold with HTTP 500 for a whole day as they figure out how the server works.

This is understandable. However novice PHP developers don't have this fear. They are used to the server always working! Python developers should have the same option. Today we are all server experts! And that is why my argument will upset Python web developers; I'm telling them they shouldn't have to spend their time learning something they already know. Deployment is still the single biggest obstacle for newcomers.

I am greatly interested in building a tool that allows anyone to easily deploy websites without having to learn everything about web servers from scratch. They should get the basics of websites easily. And it's not just about newcomers. All developers should be able to get the basics for free. For the same reason that "apt-get install" is better then compiling. Newbies will make bad choices and experts are wasting their time.

So am I going to sell everyone this idea of a deployment tool? By making it work out of the box beautifully and by making it easy to customize. By not making controversial server design decisions and by placing loose constraints on Python application code.

Ruby developers have Heroku. They love it! Let's do something even better.