A New Web Project Part 1: Choosing an OS for Web Development
Since I was starting a new project from scratch. I have the luxury of choosing any development environment I like. Since I’m working on a personal project, I’m less concerned about stability and more interested in exploring some of the newer technologies and OSes/Distributions out there. However, I don’t want to get too cutting edge. I still want the site to ship and be maintainable. I’d also like some of the learning applicable to what I do at work.
Basically the choices boil down to the following:
Unix/Unix-like: (Linux, BSD, Mac OS X)
Windows web development is a whole other ball of wax, so I’ll address those in a future set of posts.
In the Unix world, one can essentially choose between Linux, BSD, and Mac OS X. The latter (Mac OS X) is not a very realistic option if you want to use cheap hosting for your website, as I do. There are not many cheap hosting options.
Any of the BSD variants would be fine. They are very stable, and I’ve had a good experience with them at Yahoo!, but BSD.
has good support for Python and Django. AWS does provide FreeBSD images. However, BSD is a little bit outside my core comfort zone (I’m primarily a Linux guy.) For this project I’ll stick a little closer to my knitting. In a future project I’ll explore BSD.
So the the choice boils down to Linux.
Supports Python, Django and Mezzanine very well
I’m very familiar with the OS and its quirks
Cheap hosting is available
Finally lots of expertise on the web with this stuff (so a Google search is all that’s needed to solve most problems)
In addition I’d like to host my website on one of the relatively cheap AWS Linux instances. So I’ll have to pick AWS.
Which Linux Distribution?
There are many good Linux distributions, but I explored only those I had at least some passing familiarity with.
For production work, I would normally choose CentOS. It is stable and reliable (and free!)
Ubuntu would also make a great distribution. I’m a little less familiar with Ubuntu. I’ve only recently started using it as a Desktop environment. So I’ll keep learning the environment there, while I explore something else for this project. I imagine, most of what I do would seamlessly work on Ubuntu.
However, as I’m looking to explore the edges a little, I’m going to go with Fedora. It’s a distribution that I’m very familiar with, as I’ve used it in some form or the other for16 years, even before it’s present branding. It’s a little too unstable for my taste, for production work. But for a personal project, it’s great. It exposes me to some the things that I’m likely to encounter in CentOS down the line.
The project provides cloud images and is the distribution is well supported by AWS and other cloud hosting providers.
Of course Python/Django and Mezzanine are available (either as yum packages or pip install-able packages.
So Fedora it is for this project!