Jacob Kaplan-Moss

So you want a new admin?

I wrote this post in 2016, more than 8 years ago. It may be very out of date, partially or totally incorrect. I may even no longer agree with this, or might approach things differently if I wrote this post today. I rarely edit posts after writing them, but if I have there'll be a note at the bottom about what I changed and why. If something in this post is actively harmful or dangerous please get in touch and I'll fix it.

Django’s admin site is about 12 years old. It started circa early 2004 as an internal CMS at the Lawrence Journal-World, was released as part of Django in 2005, and has been chugging away ever since. There’s been some substantial re-writes along the way – magic-removal, new forms, the flat theme – but for the most part the admin’s stayed pretty much the same for that entire time. The interface, functionality, and CRUD-oriented workflow haven’t really changed since those early years at the Journal-World.

So it’s no surprise that the idea of building a “new admin” comes up frequently. Django’s scope has expanded considerably, and the web’s improved substantially in the last decade. So we can imagine all sorts of cool things we might do if we were re-building the admin from scratch today. Many want to know: why hasn’t this happened? There have been a number of attempts – django-admin2 being the one that’s made it the farthest – but all so far have failed to even achieve parity (let alone go beyond). What’s going on?

The admin may look simple on the surface, but it’s shockingly complex and represents a ton of work. The original version was the work of a team (Simon, Adrian, Wilson, Dan, and me) working very closely with a group of users (the editors and journalists for lawrence.com, kusports.com, and ljworld.com) for over a year. It was nearly a perfect environment for product development, one that’s hard to replicate (and probably impossible in an all-volunteer community). Then, that focused effort was followed by a decade of incremental improvement by hundreds of people across the Django community.

The tools available have gotten better, so if we were to start from scratch now it would be easier than it was a decade ago… but not by much. The level of effort to build a new admin from scratch is truly monumental. Remember: it took a team of 5 a year to build the first one, and then a team of hundreds refined it slowly over a decade. There’s no reason to believe it would substantially fewer person-hours to build a new admin of equal parity.

I’ve done some rough analysis on what it might cost if you wanted to hire such a team to build a new admin. I’ve worked as a consultant, on similar tasks, so this is a familiar exercise for me. At current market rates, I tend to come up with costs on the order of $1 million. Frank, my partner at Revsys who tends to be better at cost-estimating, thinks that’s overly pessimistic; his estimates are more in the $500,000 - $750,000 range. But regardless of who’s right: you’d need to lay out a ton of cash if you were trying to buy a new admin.

So anyone who wants to build a new admin needs to answer this fundamental question: how would you raise that sort of money, or find the equivalent level of dedication from volunteers?

So far, nobody’s been able to crack that nut. Until they do, we’ll need to be okay with steady, incremental improvement.

PS: if you have a million bucks, and want to buy a new admin, I’ll totally sell you one. Get in touch.