Building a web app: Choosing my platforms

Created: 08 Sep 2004

So, I’m making the first decisions about my two new pet projects. The book database is esentially a pilot application, where I’ll make my early mistakes and be prepared to chop, change and abondon things at very short notice. I’m going to be quite indulgent and pretend that I need a perfect development platform for my application. I’ve already decided that I’m going to using a relational database, a robust web/application server and an object orientated programming language. So I need to choose an OS, RDMS, web server and programming language. I’m looking, genrally for free software solutions as I want to be able to trust my tools and get great support if I break them. I also don’t want to pay money for them. I really, really don’t want to pay money year on year just to use the tools I have.

The OS will be some sort of UNIX clone, possibly Linux, although I’m not that bothered at this stage. I have substantial experience using UNIX systems and there’s no way I can afford to spend time learning anything else.

The programming language is the first real choice I have. I see no reason to learn another one, so it should be either Python or Perl. I did consider PHP too, but I don’t have any real PHP programming experience. I’ve been using Perl a lot recently to write small scripts of 100 lines or less. The syntax and style of Perl leave a lot to be desired in my eyes and I am nowhere near being even an average Perl programmer. So, Python it is, then. I enjoy writing Python, which usually brings a leap forward in productivity.

By choosing Python, I have narrowed the field in my choice of web server. I only know of two possible contenders, Apache with mod_python and Zope. Given that I have a strong recent history of supporting Apache servers professionally, that makes my choice easier. I have written off Zope without making any serious investigations. I do know that it has a persistent object store and would basically save me writing a lot of code to handle logins, news features and probably a lot more besides. I should however, be able to find libraries for mod_python that do the same thing. So, I’m going ahead with mod_python with the intention of making a call at the Zope website if things go wrong with this approach.

So, lastly we come to the choice of database. I think it is a choice between PostgreSQL, MaxDB (this was SAP DB), MySQL and Firebird, which are the free RDMS packages available. MySQL didn’t provide full ACID support and useful things like foreign keys when I last looked and quite frankly I don’t care if it does now. Binned. We use Postgres at work, so it would be a smart move to choose that. So, preliminary choice made. If I find that Postgres fails to meet my needs in some way, I’ll look again at MaxDB and Firebird.

I’m sure I’ve left myself some headaches in the future. For one thing, my hosting provider does not offer Postgres or mod_python, so I may be going it alone and buying (a more expensive) form of hosting, such as a dedicated server or virtual machine. I don’t yet care about these things, as I can develop on my own machines.