Django Roadmap 2024
Tags: django, python, webdev
Published: 2024-01-21 16:39:36

I saw Sarah's [request](https://mastodon.social/@sabderemane/111787906469153045) for "what people want for Django" which included a link to Paolo's [post](https://fosstodon.org/@paulox/111783847246554164) and [blog article](https://www.paulox.net/2024/01/19/my-django-roadmap-ideas/) with details. I'm glad this was brought up by [@thibaudcolas](https://fosstodon.org/@thibaudcolas) in this [forum post](https://forum.djangoproject.com/t/informal-roadmap-retrospective-workshops-for-django/26835).

Turns out I have a few thoughts. 😅 Caveat: this is mostly "pie in the sky" sort of thoughts and I'm conveniently ignoring what would actually need to happen to make any of these ideas happen.

This is also not meant to degrade any of the excellent work that has made Django what it is today. I ❤️ Django, use it for all of my projects, and just want the best for it so it continues to thrive long-term.

One side note: I wonder if the annual Django survey could be leveraged for potential roadmap ideas? Something like: collect ideas, core devs whittle down the ideas to the top 20, and then the community votes. It wouldn't be binding or anything, but it might give insight on ideas from multiple different perspectives?

In true roadmap fashion, I'm also going to try to include goals or metrics for the high-level things I'm thinking about.

## Marketing

As I mentioned in my [reply](https://indieweb.social/@adamghill/111794263074539636) to Sarah, I'm not sure if it's a "roadmap item", but in my opinion Django needs better _marketing_ more than it needs new features. So, I'm going to focus on that first. Don't worry I also have my own pet features I would like to see in Django core. 😉

**Metrics**

- Number of downloads goes up
- Developer use goes up (based on [StackOverflow developer survey](https://survey.stackoverflow.co/2023/#section-most-popular-technologies-web-frameworks-and-technologies) maybe?)

### Homepage

I'm going to ignore all of the JavaScript web frameworks and I'm mostly going to focus on [`Ruby on Rails`](https://rubyonrails.org) and [`Laravel`](https://laravel.com) because I think they are closest to the current use-case of `Django`. They share the same downside of needing to know an additional language after JavaScript, are mostly server-side rendered, and database-centric.

- The Django headline is "Django makes it easier to build better web apps more quickly and with less code." which isn't bad per se, but doesn't hold a candle to the punchier Rails H1 "Compress the complexity of modern web apps."
- Both RoR and Laravel prominently showcase the companies that use them -- Django makes no mention of the huge companies that are built on top of it
- Rails has a 35 minute (!) video on the homepage which seems like overkill, but people do love seeing how something works, as opposed to just a bunch of words
- both talk about the features included in the framework: database modeling, authentication, etc.; Django has all these things (and more!)
- both talk about the number of contributors and community; Laravel even has user testimonials (similar to a SaaS product)
- both prominently say they are a "full-stack" framework
- both mention how to build SPA-like applications (Hotwire and Laravel, respectively)
- both show actual code to give people a sense of how "beautiful" it is


Overall both of the Rails and Laravel homepages "feel" modern, fresh, and exciting. Django should take some inspiration and make the framework feel fresh and inviting.

### Documentation

Django's documentation is best in class in my opinion -- it is vast and covers everything I have ever needed to find. I think an aesthetic refresh of the docs site would be useful, but I don't have any specific tweaks, although Paolo mentioned a few things in his article.

However, when I search on Google or Kagi djangoproject.com doesn't always show up first in the results. I wonder if there are some SEO tweaks so that search results consistently point to djangoproject.com?

### Evangelists

Django needs a constant drumbeat of people talking about it, saying how great it is, and advocating for it. Django needs companies that utilize it to shout about how it's helping their business. In short, Django needs evangelists. Lots of tech decisions are made word of mouth.

## Modernize

Generally, look at the current most-used packages for Django and incorporate them into core. Again, I'm totally ignoring why this is a bad idea and how it creates extra maintenance burden, reducing how often fixes can be released, etc. But, in general if you say that a framework is "batteries included", but then 80% of new installs add the same 5 packages, then... maybe they should just be included by default? Solve the 80/20!

Another approach would be to have "blessed" framework configurations ala [Laravel Starter Kits](https://laravel.com/docs/10.x/starter-kits) to reduce the amount of code that would go into core.

**Metrics**

- Reduce the number of additional packages needed for different Django use-cases (i.e. what is needed for a web app, what is needed for a backend API, etc)?

### Serve static assets

Just include `whitenoise`.

### Asset management

Almost every site will need to use and bundle JavaScript and CSS, so it should be included. I use `django-compressor`, but whatever... just pick one.

### Create APIs

A huge use case for Django currently is as an API backend, so let's make it easier. Bundling DRF maybe is overkill (maybe not?), but the closer to a frictionless API the better. DRF is probably closer to current Django, but I personally like what `django-ninja` is doing here, but it's probably because of my affinity for FastAPI/Pydantic.

### Background tasks

I tend to use `django-q2`, but again I don't really care. I just want something supported and straight-forward to use.

## Conclusion

I am sure there are features that Django should add, but as it is, it solves huge use-cases for the majority of web applications. But, people don’t know all of its features or they have a feeling it’s “outdated”. With better marketing and a few core additions Django would be used (and loved) by even more developers.