Published on 30 May 2014
If you talk to us, there’s a particular technology you’ll hear about a lot: Django. It’s named after legendary 1930s jazz guitarist, Django Reinhardt — and incidentally, the “d” is silent. Although widely used, Django isn’t especially famous, and people have a lot of questions about it when we bring it up.
Why do you use Django?
Django is an open-source, Python web framework that makes it easy to develop web applications quickly, with less code. Django is the technology behind many of the websites and apps we build, and forms the basis for our content management system. We use it because it’s among the most mature of the best web technologies available, and it’s written in a language - Python - that is also mature. Maturity means that its components have been carefully thought-out and rigorously tested by a wealth of developers. Django is also well-architected, which means, amongst other things, that in the constantly shifting world of technology, we stand the best chance of being able to swap over to new technologies when they come along, giving our clients the greatest amount of flexibility in the future.
We appreciate its clarity and simplicity, and have found that it’s the ideal technology for a lot of different projects like:
- high traffic, scalable websites;
- projects that require integration with lots of other systems;
- websites with database-driven content;
- websites with large editorial workflows;
- projects that require advanced technological capability, like artificial intelligence;
- Big Data projects; and
- building internal tools.
I ❤️ Wordpress/Drupal. Why wouldn’t you just use a familiar, off-the-shelf CMS?
Because of the customisation cliff!
Web technologies broadly fit on a spectrum between general-purpose CMSes like Wordpress (which include many features out of the box and are extended by installing plug-ins) and web frameworks like Django (which do very little out of the box, but provide tools for efficiently adding functionality).
In nearly every project we undertake at IC, we are completely free to choose the technology that best suits the project. We’re experienced with a broad selection of best-of-breed technologies, and the choice often comes down to the level of customisation that’s needed.
The customisation cliff characterises the trade-off in cost between choosing a general-purpose CMS and using a web framework. The cost increases with the level of customisation either way, but by choosing a general-purpose CMS, the cost can easily become exponential. We suggest general-purpose CMSes for sites that only need very little customisation.
Why’s this? Well, by choosing a general-purpose CMS with a large number of features and installing plug-ins, we can quickly provide a website that has standard features. However, these kinds of CMSes aspire to be all things to all people, and so tend to be very complex internally. This complexity means that when we add and customise features, it’s easy to introduce knock-on effects and incompatibilities elsewhere which also need to be resolved. If a website needs several customisations during its lifespan, this cost is compounded and can become an untenable maintenance burden.
On the other hand, choosing a web framework like Django means that we are free to build functionality in whatever way the project needs, in the simplest possible way. For sites that consist mostly of commonly-needed features, this may initially be slower to get going than an off-the-shelf CMS, but that is made up for in efficiency down the track. Framework-based sites also tend to work exactly to the project requirements, rather than doing a bunch of unnecessary stuff that we’d rather not have to test and maintain. For sites that need a lot of customisation, the simplicity of the framework approach makes these customisations much easier, and so the development and maintenance costs are greatly reduced.
The customisation required by a web framework still sounds expensive and time-consuming, no?
For most of our client projects, we suggest a hybrid approach of a general-purpose CMS and a web framework to get the best of both worlds. Specifically, this means we use a web framework like Django which we have used for many projects before, so that the project benefits from our strong expertise and a rich library of existing code and tools ready to use in the project. We also start with a simple CMS, one that's built using the Django framework and proven in our previous projects, that allows you to start working with rich web content straight away. As the project progresses, we'll add only the features you'll use, by carefully selecting and configuring applications and tools from our own libraries, as well as the hundreds of open-source projects available. We write custom code only where necessary.
Is Django better than Ruby on Rails?
We prefer it :) But the real answer is that Django (which uses Python) is a fine choice for almost any project where Rails (which uses Ruby) is also a fine choice, and all other things being equal it’s really a matter of personal stance.
The Python and Ruby communities have traditionally attracted developers with different philosophies. The difference is difficult to pin down, and the communities are by no means mutually exclusive, but the cliche is that Ruby attracts ‘rockstar’ developers (and hence receives more attention) and Python attracts ‘old hands’ (and hence is more quietly confident).
From our perspective, Python’s advantage is that it is older and more mature, and is regularly used for other kinds of software, like desktop applications, scientific and financial computing, which makes it much easier to get Django websites to integrate with other systems. Ruby although inspired by Python, is comparatively new, and is used far more for Rails sites than anything else.
Is Python better than PHP?
Yes. Yes it is.
PHP is still the most popular language for building websites, but that is almost entirely because of historical inertia - PHP was the first easy-to-use language for building websites and many popular CMSes of today started life when PHP was the best option.
Up until about 2007, before they started IC, Greg and Alastair were building sites in PHP. But it was so painful that they considered giving up building websites altogether. Luckily Django came along just in time! They’ve never looked back.
Compared with Python, PHP is slow, verbose, inflexible, and difficult to debug. Because it’s designed for ease-of-use rather than quality-of-code, it’s all too easy to write insecure, messy code. Modern PHP frameworks help with code quality a lot, but those frameworks are still lagging behind the likes of Django in terms of helping us to get our jobs done.
Who else uses it?
We’re not alone in our love for Django. It’s used by some of the most prominent sites and organisations on the web, like:
- NASA Science
- The Onion
- Mercedes Benz
- parts of The Guardian
- The New York Times
- Washington Post
- parts of Google
- International Watch Company
Want to join their ranks? Give us a call. We’d love to talk about how we can build you a world class website that’s flexible for whatever features and changes the future brings.