On the Reign of ‘Benevolent Dictators for Life’ in Software

Sometimes, open-source projects need an enlightened despot.

On Monday, a small change was made in Django, a popular open-source software framework. The change didn’t alter any code: It struck a paragraph from a tiny text file titled “committers” that described the purpose and provenance of the software bundle.

In Github—a website that helps store and manage the Django codebase—the change got a short, cryptic title: Removed BDFLs section from docs/internals/committers.txt.

But in that moment, Django as a community grew up a little bit. Django had lost its Benevolent Dictators for Life.

.. It runs some or all of the websites for Rdio, Instagram, and Pinterest.

What Powers Instagram: Hundreds of Instances, Dozens of Technologies

We run Django on Amazon High-CPU Extra-Large machines

.. We’ve found that our particular work-load is very CPU-bound rather than memory-bound, so the High-CPU Extra-Large instance type provides the right balance of memory and CPU.

.. We use http://gunicorn.org/ as our WSGI server; we used to use mod_wsgi and Apache, but found Gunicorn was much easier to configure, and less CPU-intensive. To run commands on many instances at once (like deploying code), we use Fabric, which recently added a useful parallel mode so that deploys take a matter of seconds.

.. Most of our data (users, photo metadata, tags, etc) lives in PostgreSQL; we’ve previously written about how we shard across our different Postgres instances. Our main shard cluster involves 12 Quadruple Extra-Large memory instances (and twelve replicas in a different zone.)

.. The photos themselves go straight to Amazon S3, which currently stores several terabytes of photo data for us. We use Amazon CloudFront as our CDN, which helps with image load times from users around the world (like in Japan, our second most-popular country).