Natalia is a Django Fellow and the release manager for the just-released 6.0 version. We talk about the new release, major features including template partials that Carlton helped usher in, queues, CSP support, modern email API, and the current work on Django 6.1.
This episode was brought to you by HackSoft, your development partner beyond code. From custom software development to consulting, team augmentation, or opening an office in Bulgaria, they’re ready to take your Django project to the next level!
William Vincent (00:00)
Hi, welcome to another episode of Django Chat. I'm Will Vincent joined by Carlton Gibson. Hey Carlton.
Carlton Gibson (00:06)
Hello Will.
William Vincent (00:07)
And we're very pleased to welcome back Natalia Bidart, Django fellow and release manager for Django 6.0. Welcome, Natalia.
Natalia (00:15)
Thank you so much. Thank you for having me. It's great to be back.
William Vincent (00:19)
Well, I feel honored that I'm on with the release manager and then also the author, co-author of one of the major features, which is template partials, which we'll talk about. ⁓ And then I'm here just emceeing it all. So we'll start with, how are you doing, Natalia? Because maybe people don't know, but as a Django fellow, it's a lot of work to do a release. Could you speak a bit about what that process is like? Is there follow-up work you have to do after a major release comes out?
Carlton Gibson (00:19)
Thank you for coming on.
Natalia (00:48)
well, how am I? I am very tired because it's December. So, you know, I'm not sure if it is psychological or if it is like a real thing. Like, you feel the whole year being on your shoulders. And in the South Hemisphere, the year matches the school year.
William Vincent (00:52)
Sure.
Natalia (01:08)
So we have a full school year in our shoulders as well. And holidays are starting this Friday, actually. So there is a lot going on. So last week at the time of this episode, we got two major, well, two big Django releases, not major. And...
William Vincent (01:13)
Mmm.
Natalia (01:29)
this Friday we're having like a release of first grade from my daughter. So that's also like a big event. And then everything is entangled right now in my head and in my tiredness. But focusing on the DeAngelo releases, you asked me about the feature release for Six of Zero.
William Vincent (01:34)
Mmm.
Natalia (01:47)
and what it takes. So, Angle has a release cadence of feature releases, what we call it, every eight months. So, we have this, we got the 5.2 on April this year, 2025, and eight months later, we got 6.0, which is the release that I made almost a week ago. During those eight months,
William Vincent (01:48)
Yeah, yes. Yeah.
Natalia (02:17)
The things that happens are feature development, which takes approximately six months, and then ⁓ a little bit less, five months maybe. And then we have a feature freeze that happened on September this year.
on feature freeze, we no longer add features to what is going to be the 6.0 release. To do that, we do what we call, we cut the stable branch. So all the feature development between April and September happened in the main branch, in the Django main branch. We landed all the things, documentation, features.
backward incompatible changes if we have to with the deprecation path and those things. On September, I branched from main unstable branch and that was the freeze of the features. And since then, I made an alpha release along with the feature freeze and that went out for people to ideally start early testing for 6.0.0. We got a month between the alpha and the beta release. I'm not sure what's the right pronunciation.
Carlton Gibson (03:31)
That depends which side of the Atlantic you're on.
William Vincent (03:32)
It's that's English versus American.
Either is fine.
Natalia (03:39)
Okay, so we got a month between alpha and beta and ⁓ during that time we will encourage early testing and we will try to track all the main bugs with the features, the new features that we have released. ⁓ The beta release mid-October and then we got another month until the release candidate.
which was around mid-November. At that time, we also do what we call a string freeze. All the strings that are shipped with Django inside Django, so all the messages that you see in the admin, in the validators, and in different parts of the Django framework, not the docs, the framework itself.
We do a freeze and we no longer allow for changes to be made to those strings because in mid November we call for translations for translators to go to the site where we have the available strings to translate and we encourage them to do translations. So that was for during two weeks and a few days before the final release I fetch.
all the translations from this website and I incorporated into what I released as the final version. So the Angle 600 final included not only the features and hopefully most of the bug fixes, but also included the latest translations for ⁓ the strings that we changed between 5.2 and 600. I can go into deeper details, but maybe that's not ⁓ where we want to go to.
Carlton Gibson (05:18)
The take home there is that there's quite a lot of work involved, right? So you're just spending basically three months in putting together the final release, even after all the development's gone on. It's not a trivial process.
Natalia (05:29)
Yeah, yeah, yeah. And I mean, for me, one non-trivial burden is to remember which
stage we are in, when the next release is happening. I have tons of reminders in my calendar not to miss a release date. Because every day you start your fellow day, it's like you have security reports, you have bugs to try it, you have PRs to review, you have messages, you have meetings, and you may also have releases. So ⁓ my main fear is to forget a release date, basically.
William Vincent (06:07)
Yeah, yeah, the world doesn't stop.
Carlton Gibson (06:07)
You just halfway
through the morning. It's like hang on isn't the alpha going out today? ⁓
William Vincent (06:12)
Well, this is like any big project, right? Like I've seen that some people, they'll take what they call book leave when they want to write a book and they just stop everything for months at a time. And that sounds like a nice indulgence. You should have like feature freeze or major release leave, right? It's just like, don't distract Natalia or Jacob. They're busy, if only.
Natalia (06:36)
⁓ I might consider that idea, but for what it's worth and in recognition to the other fellows, Sarah and Jacob, they are very mindful of this and they have a very supportive. I have been openly saying my focus right now is the feature freeze or the beta release or whichever. ⁓
putting things or suggesting the things to be on other people's and I've been focusing on release. So that's sort of already there. And it's also a necessity because if we want clean releases, we need to focus and prioritize that.
William Vincent (07:16)
Well, and this is also why we have multiple fellows, right? Carlton, I recall there was a time where you were almost solo, purely solo, you know, way back in the day. I thought there was a handoff period, wasn't there a period where you were, before Mariusz came on?
Carlton Gibson (07:27)
No, no, no, no.
or maybe only a short period.
Marish came on around the time Tim stepped back, it wasn't too long a period. Yeah, mean, Tim would pop his head up a year and a half later and be like, oh, you forgot to do X particular thing, which was always very handy. He was always watching closely.
William Vincent (07:39)
Okay, that's true. Tim was still helping for quite a while even.
Okay, yeah, yeah.
Natalia (07:49)
Hehehehehe
William Vincent (07:52)
Well, let's dive right in. ⁓ Maybe so. ⁓ OK.
Carlton Gibson (07:56)
Well, hang on, on, hang on, hang on, hang
on, hang on. Pre-Rafe, you said something there about the testing. You said two things. You said, first of all, ideally, people would start testing around the alpha. And then later on in your description, you said, we encourage early testing. How does that go? Do we get enough people to pick it up and give it a run?
Natalia (08:14)
I don't want to be mean, but I will say no. I feel that we don't have enough people testing. I'm not blaming anyone. Actually, I think that we should perhaps consider doing a different job or focusing some efforts into better advertising or better encouraging of early testing. ⁓
William Vincent (08:38)
Testing team, let's go, we need another team on the Teams page.
Natalia (08:41)
I'm not sure if the team maybe, I don't want to say a working group because I think that's too much. But maybe there might be individuals who find ⁓ rewarding or exciting to find issues in early versions. ⁓
I think we could benefit from those. I just today I saw a new ticket that is about CSP and how we might have missed an integration with something with ⁓ the assets objects, which I'm not very familiar with. So I need to investigate a little bit before finalizing the triage. And I was wondering, I wish we have had this feedback earlier. And even in the PR, this PR was open for so long and we tried to advertise this.
⁓ actually reached out asking for is there something that you want us to advertise for getting more eyes on and they did publish a post regarding CSP and encouraging people with some domain knowledge to go to the PR to test it when it was already ⁓ in the alpha release.
⁓ I don't know. I wish we had more people doing that testing, that exercising. I'm not sure what we can do about it. Do you have ideas?
Carlton Gibson (10:00)
I've got a long standing tool, one I've just never really done anything with is that if we had an example, TOCS config, say, which just said, look, here's how you can test in Django standard testing docs. Here's how you can test your existing Django project, your existing Django version with a TOCS config, really simple. It doesn't have to be like, know, eight versions of Python and all the rest. can just be like your current version of Python, maybe the next version of Python, plus your current version of Django. And then if you want to just...
example of how you do the pre-testing. You add this line to your TOCS config and you can run your test suite against the upcoming Django. And I think if we could just smooth the path, I think a lot of people just don't know how to do it. There was a post this week from ⁓ Seth, ⁓ certain name escapes me momentarily, who's the Python security developer in residence. Yes, thank you.
William Vincent (10:52)
Larson, I think.
Natalia (10:53)
He's great.
Carlton Gibson (10:55)
He
also maintains URL lib3 and they've had a deprecation warning in there for about three years or four years or five years and they finally took it out and they broke everything and had to put it back in again. It's like he's did a post about how deprecation warnings don't work.
William Vincent (11:01)
Yeah, yeah.
Carlton Gibson (11:09)
And we have the same problem in Django is we will, we've got a really good deprecation process and we've got this pending deprecation warnings and we've got these deprecation warnings and then we'll remove it the second release later and then there'll be the final release will come, not the pre-releases, the final release will come and someone pops up on the forum with, you've broken my workflow with this breaking change. It's like we've been warning you about this breaking change for the entire last cycle. But people don't know how to run with warnings. We should show them more is my thought.
Natalia (11:11)
Yeah.
William Vincent (11:35)
Well, I a,
I have a second add on take. So I agree the how, but also, mean, Django has a marketing problem. So does Python. Like we don't, we don't have a newsletter, you know, we don't have email capture. I can say this because there's this Django news newsletter that reaches, you know, almost 5,000 people, but there's 5 million people or something that use Django. So I think we need both nice steps, but also
I think we're kidding ourselves if we think that people that listen to this podcast read the newsletter are on LinkedIn or on X represent anything more than 0.1 % of our users.
Carlton Gibson (12:14)
Yeah.
William Vincent (12:15)
I don't want to a dead horse on that. think the board is doing stuff, but I think we gotta have a newsletter with like ⁓ 100,000 plus people to let people know just every so often, two months in advance or whatever the timing is, hey, you really should test this and here's how, I think would be helpful.
Carlton Gibson (12:15)
So there you are, Natalia.
on this too hot take saying that I don't know what do you think
William Vincent (12:36)
Hot take.
I mean, she's going to agree, I think, I suspect.
Natalia (12:40)
⁓
Are you pressuring me to agree?
Carlton Gibson (12:45)
Yeah, yeah, no, obviously you have to agree. ⁓
William Vincent (12:45)
No, no, no, I actually,
Carlton Gibson (12:48)
what wisdom you two fine old gentlemen have given us.
William Vincent (12:49)
it would be interesting if you disagreed, actually.
Natalia (12:50)
Hahaha!
So, well, I think there are two parts. ⁓
disconnected in a way because the first thing that I thought where you were speaking, Will, that what we really need is a video from Will showing how to test early because, I mean, Carlton was saying people doesn't know how to do it and I've heard requests from people saying we want videos explaining things and we don't want to read. That might be a generational thing which I really don't know. I've been struggling personally with
Carlton Gibson (13:24)
It is, is, absolutely is.
Natalia (13:27)
What? Well, yeah, I mean...
Carlton Gibson (13:29)
It absolutely is, the generational thing. Go on, carry on.
William Vincent (13:32)
Well, Sarah's
young. When Sarah comes back, we can have her do it. She's good at videos.
Natalia (13:37)
You're the one that is here now, and you're the one with all the equipment, and you're the one. Anyway.
William Vincent (13:39)
Yeah, yeah, yeah, yeah. No, no, I don't. don't. I don't want to put. Yeah, no, no, no. I agree. I'm actually
I'm writing it down in 2026 is like video year. So I agree. I agree. People need a video. Even me. I've gotten stupider. I just.
Natalia (13:48)
I think that...
With a video,
focus one, I just have to be generic, just saying I have this thing that I support or that I maintain, and this is how I do to try other versions of the angle with my ⁓ project. Not even, mean, alpha releases, but maybe other versions or other pythons or things. I think that could be useful. And also, I think that we should ideally advertise that a little bit more.
Within the DeAnglo website, I'm not sure the reach that we have in the website. I honestly don't know. If we think that we have enough reach via the DeAngloProject.com website, ⁓ I think that we could evaluate doing more of what the steering council is doing into putting some pages acting as a hub.
to summarize good content and packages and maybe we can also start summarizing resources and making some how-to's more engaging and prominent. ⁓ I think that would be one step forward. But then there is this thing that I ponder on every day, the generational thing, the how to do things.
William Vincent (15:12)
The youth, yeah.
Natalia (15:14)
I'm not sure if the youth, maybe, maybe. I don't want to just think about age. But I'm struggling with ticket reports, security reports, PR things, where I feel, and I will try not to be judgmental, but I feel like people do not read. They do not read. They just throw things together, usually via an LLM or something in between. even if it, I mean, it's.
I'm not sure how to address that. How people not reading maybe the application warning or docs or how to, I don't know.
Carlton Gibson (15:52)
bit like publishing a blog post is like you can write a blog post and you can read it a hundred times and you'll think yeah I've got all the typos and then you can hit publish and you can load it up in your browser and then you will spot the typo that you've missed and then you'll fix that and then you'll reload it and then you'll spot another typo that you've missed and there's no way that you can it's physically nomically not possible that you could capture those typos until you've hit publish so maybe it's the same with software releases you just have to let it out and then wait for the real issues to come in
William Vincent (16:19)
Well, I think it's also
easier than ever to, you know, send something to a Django fellow or the Django community with the help of an LLM or other resources, whereas it's almost, I mean, this is not a new issue, but AI slop or AI assisted slop. So, I mean, until you've had to be on the receiving end of this, I think it's hard to appreciate what it's like, right? To get requests from people who haven't fully read this or that.
Natalia (16:47)
Yeah,
yeah, it's exhausting. But if we want to focus on the positive, maybe. mean, if there is a positive use that we can take from the LLMs to help with the alpha testing, early testing, or encouraging people, or I don't know, can we train them on the side to recommend 6.0 in early staging? Staging, sorry. I don't know. I'm open to ideas, though.
Carlton Gibson (17:16)
It's, I have a feeling as well that they are opening ⁓ opportunities for people to partake that were never there before because without these tools, people couldn't contribute in any way. And so maybe the new contributions we're struggling as, you know, overworked maintainers were struggling to, to deal with them. But I don't want to be, I don't want to say, no, you mustn't use such tools because that's just a kind of,
Only the existing contributors, Gatekeeping, there's a word for that, gatekeeping. I worry that if we're too anti that we're...
We're not letting the new flowers bloom, I don't know.
William Vincent (18:01)
Well, I've added a note, Natalia, I will work on a video for that for next year. Videos is my focus as much as I can for next year. ⁓ Could we talk about the features in 6.0? Is there anything else? Okay, so, well, Natalia, you speak in paragraphs. We will link to the release notes. What would you say are the major features people should be aware of?
Natalia (18:10)
Thank you.
⁓ Okay, so I highlighted those in the release note and in the blog post, but since we have agreed that a lot of people do not read, let's just go over. ⁓ the feature that, I mean, one feature that is...
William Vincent (18:35)
Hahaha
Carlton Gibson (18:35)
Ha
ha ha ha.
Natalia (18:41)
⁓ very famous and people have been mentioning in keynotes and in conferences is of course Temple of Passions, which originally created by Carlton and brought to the Anglicore in the context of Google Summer of Code with Farham as an executor and Carlton as a mentor. That has been great. I think that ⁓
Having that within core and having a clean way of defining the fragments of your templates that you want to reuse allows for much well-finished designs and a cleaner layout of your templates. I have been using it in another project and I'm very, very... ⁓
in love, I will say, with how you can define the pieces in your templates. My only concern, and that's personal concern, is discoverability, how you can, in a way, have an index of what partials do you have and where are those when you need to reuse it, a different way of finding those other than using rep. But other than that, I think that's great. What are your thoughts?
William Vincent (20:07)
Carlton, come on.
Carlton Gibson (20:07)
Well, I'm
going to jump in. So I'm obviously enamored too. It's really nice to see it go through. So I started my new project and I read Carson's essay on the HTML website about template fragments. And I was like, okay, I need that for Django. And so I sat down and wrote it and then talked about it in Django in Europe in Edinburgh. And everyone was, not everyone, but like it was a good take up and everyone was pleased and there was...
There was the inline argument where you can define the partial and output it at the same time. That was added very early and there was a few tweaks found, but then after that it very quickly stabilized and it wasn't like there was a continual drip of new features. And so that was lovely. And then to have it merged into Chorus, like, well, that's lovely. It's really rewarding and it gives me a nice little warm feeling. And Farhan was amazing. The bottom line is I've got...
I was looking through my Django checkout the other day and I've got a branch from template partials that I started against, I don't know, 5.0 and I didn't get it done. So I re-based it against 5.1. didn't get it done. It was never going to happen because it just took too much time and too much effort to bring it up from, yeah, this is a fine third party package to this is Django quality for me to commit the time. So the Google Summer of Code project was exactly what was needed to add, to give it the momentum to get it actually into.
William Vincent (21:30)
I would just add he's still doing excellent, excellent work around Django. I'll just shout out to his Django Bolt project, which is Rust powered API framework, but he's doing lots of interesting stuff. this is like, you you suck people in, you're like Google Summer of Code, get a feature in, and then hopefully, hopefully they stay.
Carlton Gibson (21:44)
No.
is a young dynamo. He's got the Django bolt project, is like really interesting Rust-based thing. And he's got a nice API example called Django rapid, which is just Python, but it's using message spec to do the serialization and comparing that to say, DRF type approaches, it's ⁓ nice and quick. And just using that, you get kind of fast API type performance showing that the issue is the serialization there rather than the request response cycle, which is...
kind of cute. And then he's built also a kind of in browser Django repel environment where you can define your project, can create a... So he's got a WASM based SQLite there. You can define your models, define your migrations, run your migrations and run the whole project all in your browser. it's just kind of really cool. And the sort of thing that only a youngster with infinite free time and energy could possibly produce.
William Vincent (22:25)
Jenga Ripple, yep.
Yeah, it's new.
Well, I'm getting, mean, Carlton, we can sit on our old man Laurels. I'm getting flashbacks to Sage when he, I believe, did a Google Summer of Code and then, you know, now he's Wagtail core team and doing lots of stuff. so, ⁓ there's a feeling of, I had nothing to do with either of them. You did with both. ⁓ you know, this is how it should be, right? Like you bring people in who are smart and eager and have new perspectives and they, you know, enrich the ecosystem.
Carlton Gibson (22:55)
Yep.
William Vincent (23:15)
would say.
Carlton Gibson (23:15)
Yeah,
no, I can't disagree with any of that. Natalia.
Natalia (23:19)
That's a great definition and I actually think that it matches the other contributors that we have had that have also helped and drove major features to 6.0.0. We also have CSP, Content Security Policy Integration, landed in 6.0.0. That work was led by Rob Hudson. He is the maintainer of the third-party package, Django CSP. ⁓
we took like the core of that and made it the angle quality like Jesus said, Carlon. And that's currently for everyone to try out. And I'm not sure if you have, if you use it in your projects.
Carlton Gibson (24:05)
Yes, I do. I think it's a great thing. It's one of those things that I think really belongs in Django itself. It's sort of difficult, it's complex. I think there was a period where the third party package had been maintained for a long time. I think there was a brief period where it was kind of in this unmaintained limbo. I'm not 100 % sure on that, but I'm pretty sure that happened. And it's like, hang on, this is an important security feature. It's not some, I don't know.
custom field Bolton that only a few people need. This is something that should be available and it needs those kind of, I don't know, just that extra guarantee that being in Django itself provides. And I think to have it merged is like, yeah, that's good for the long-term stability, the long-term assurance. It plays into our security record. plays into Django's story about being a strong solid foundation you can rely on. I think for all of those reasons to have it merged into core is...
exciting and good and worthwhile. And you know if people want to get started that you can just set it up to do the reporting bit to begin with and that's a lovely way to just begin and you get the errors in your browser and it's okay yeah now I can fix them and then you can turn it on for real.
Natalia (25:13)
Just a little clarification for people listening. The reporting part, it's ⁓ non-invasive and you can define a CSP policy for your website with some basic configuration which is usually safe and not too restrictive and you will get reporting of the potential violations that your website might have when it comes to different assets usage. And I think that's very enlightening and can help.
tighten the security of any site.
Carlton Gibson (25:45)
Yeah, you wanna use that first if you're unsure because if your CSP policy is too tight, resources you need just won't load and then your website will break. So it's worth being sure you've got it right and then turning it on for real. But it's a really nice defense in depth measure. If you've got a template escaping on and you filter all user input and you shouldn't have cross site scripting things, but.
to be able to say, do you know what, I'm only loading resources from my own site or from this particular one other site or whatever your CSP policy is. It tightens all the screws, makes you just that little bit harder to have an exploit. yeah, I'm really excited by it.
William Vincent (26:26)
Yep, nothing for me to add. just agree. And I'm as you're talking, I'm currently actually for real on the work on working on the Jenga for professionals book 6.0 update for real. And I was just making notes on like, yep, need to make sure I paraphrase. for sure. But yeah, it's always just figuring out the level at which I want to introduce things, right? Because people read the books, hopefully to get a
Natalia (26:28)
Okay.
Okay.
Mission CSP. Yeah, yeah, yeah.
William Vincent (26:54)
curated opinionated take. And so I want to figure out what do I think is bare minimum you should do and then what is is extra. And so that's always what takes some discernment. Carlton, did you have a thought there?
Natalia (27:00)
Mm-hmm. Okay. ⁓
Carlton Gibson (27:02)
I
Yeah, just gonna say CSP is definitely a professional level feature. It's, you know, you don't need it as a beginner. So, no, but, but, but that's not what I meant. I meant you don't want to put it in the beginner's book. It's too like, it's something that a beginner just doesn't need to know.
William Vincent (27:11)
yeah, you should have it, like how much, you know, I'm going to include it for sure, but then, you know, probably I'll do something like.
No, no, no, yeah, yeah, yeah.
No, for sure. Yeah. I agree. ⁓ Background, I'm just looking at your blog post, Natalia, which we'll link to, which, as you said, covers all these. Background task, Jake Howard.
Natalia (27:30)
Yeah.
Yeah, background tax,
Jake Howard. He ⁓ did an amazing job over several feature versions. I he has started working before we released 502. Yeah, ⁓ and he has done an amazing and steady work into having ⁓ what he already have for, sorry.
William Vincent (27:47)
Yeah, long running, yep.
Carlton Gibson (27:57)
sounds gone Natalia.
William Vincent (28:01)
No, I can hear her. It's you.
Carlton Gibson (28:04)
My headphones are died sorry ⁓ just give me a second just give me a just give me a second
William Vincent (28:05)
Your headphones are died. I'll edit this, yeah. Now I can hear myself.
Carlton, this is why I have a wire, and not this fancy Bluetooth.
Carlton Gibson (28:15)
yeah
Yeah Yeah, yeah ⁓
Natalia (28:20)
that the camera is following him. Yeah.
William Vincent (28:25)
⁓
he must have... You're just using your laptop, right? It's continuity camera. It's a built-in feature.
Because mine doesn't have it. I have a fancy camera, but...
Natalia (28:39)
No, it doesn't follow, right?
William Vincent (28:41)
I could put it on though.
The third major feature is background tasks that Jake Howard led the development of. Do you want to, or can you speak to that, Natalia?
Natalia (28:52)
yeah, that was an amazing work, but Jake, as you said, but also it was a very rewarding interaction with Jake. He's very easy to work with. He's very attentive to details. He's very thorough. And he has been... ⁓
iterating over the PR for a long time. I he started work before 5.2, 5.2, yes. And he has been just pushing and updating things and reacting to review comments when they come because in the first stages, we wouldn't iterate that quickly. We did iterate it quickly when we approached.
the 6.0 feature fees and he's just ⁓ great to work with. I'm very thankful for having met him and having ⁓ gone through that process with him and the quality of the work that he has ⁓ shared, done, landed now in Django Core is great. So I think that one...
note that is important to share with the audience is that there has been some recent confusion about what is the background task that we have shipped with the angle. And I wanted to share that that's the definition of an API, sort of like in a generic way of a background task ⁓ worker engine to plug into the angle in a way that you could, if you need to,
either replace that engine or even have different engines in different setups of your project. And the angle background task will define how they should speak with the framework.
There is a way to define the tasks, to define how a task is enqueued, ⁓ how a task result is inspected, and a few other bits. There are, of course, settings for your project to define which background to use, which different options, and a few other bits.
William Vincent (31:01)
Yeah, so for right now, it's not a development-ready thing in and of itself. You still need to use third-party tools, but it's a new way that the third-party tools can probably link in going forward. Yes, Carlton?
Carlton Gibson (31:15)
But, and this ties into what Natalia is saying, the third party backend is there, Django tasks DB, or what's it called? Django tasks DB is there, and you just pip install that alongside and you're ready to go. I think ⁓ I've seen it read a few blog posts and they've got this like paragraph about how it's not really got a back time task. It's like, no, I think we just phrased this wrong somehow is that, yeah, look, to get going, just use Jake's backend that he's been working on, that he's developed with the...
William Vincent (31:22)
Yeah, yeah.
Django tasks,
Carlton Gibson (31:45)
API contract here. And it's the API contract bit that's in Django as Natalia saying. And yes, you need to install the extra package to go with it. But the point is that the API allows you to use Celery or, if somebody wrote an adapt, you could use Celery or Django Q2 or Jake's one or, you know, whatever package is out there. think, I think when I read a couple of the blog posts, I was like, hang on, we've, we've got the messaging slightly wrong here. It's not that it's not production ready. It really is just use, you know, DB tasks as the
as the background worker and you're there. Lethalia, what do you think? Yeah, but we should give people opinions. We should be like,
William Vincent (32:18)
Well, but that's an opinionated take, right? I mean, that's...
So you think I should recommend Django tasks as the way to do it alongside the new API? Because that's a question for me. Because I haven't technically, I'm sorry to make this, I'm sort of partial to Django Q2, but I don't do a ton with tasks. This is an open question for me. I'm going to introduce, here's the thing, you can use it locally. But for production, should I make a recommendation or?
Carlton Gibson (32:29)
Boom.
Well, the way I would phrase it, sorry to tell you, let me just answer Will's question directly and then you jump in and tell us what you think. the way I would explain it to anybody is look, there's this new task framework, there's an API and there's a worker implementation for it. That's the default recommended worker implementation. And then the great thing is that any other queue system can adopt the API interface and then that will be pluggable.
Natalia (32:49)
Yeah, yeah, sure.
Carlton Gibson (33:14)
into any third party app that wants to use tasks or any project that wants to use tasks in a ⁓ generic way the same as the database backends are. But the messaging seems to be, there's no backend. It's like, no, there is a backend. Jake spent an absolute age developing it. Go on, Natalia.
Natalia (33:33)
Yeah, so I wanted to mention that, ⁓ yes, Jake developed the database account, which will store the metadata for your tasks in the database. I don't have clarity with the task production ready when it comes to retries and robustness and atomicity and a few of the bits. It might be since the last time that I checked. But I do know that I believe RQ2 is already listed in Django task, and there is at least
a shim that allows you to work with it using the new API. I also know that the reason in progress PR for the angle task to have a shim to use Celery as well. That might need some updates, but I know it's there. Also, about recommendation, I think that
different projects might need different cues because the different cues might have slightly different either focus or performance, whether you may have a gazillion messages and not that many cues, or you will have a gazillion cues and not that many messages for whatever reasons. It also depends on your infrastructure, whether you want to prioritize resource consumption or velocity, you might need an absolutely
William Vincent (34:37)
Mm-hmm. Yep.
Natalia (34:52)
bulletproof retry mechanism or you can miss some of the packages, let's say. So I guess it's only fair to us for projects to evaluate which actual backend they need for their domain of the project. ⁓
There might have been a misunderstanding. When you were saying that, Carlton, I was thinking over and over. People do not read, because if you read the documentation that we wrote, it will say, I it said all over the place, we have ref docs for tasks, we have a topics page for tasks, we have the settings and the release note. In every one of those, we said that.
Carlton Gibson (35:19)
Yeah, they don't read, they don't read. We've established this.
William Vincent (35:21)
you
Natalia (35:38)
⁓ In this release, were providing the immediate and the dummy packet that were only for development and testing purposes. ⁓
It is true that we didn't say, if you want a production ready backend, you should go to this place. We didn't say that. We made some ⁓ improvement to the docs. We reiterated this concept, and we linked to the ecosystem page, the new one that the steering council created, so people will have perhaps more clarity on the current status. But yeah, definitely we're open to improvements, and we are also open to
eventually merging the, or seriously evaluating merging the database backend into the Angular Core. I think that would be a good addition.
William Vincent (36:28)
Yeah. Well, it's go Carl.
Carlton Gibson (36:29)
I mean, ⁓
perhaps preliminary, we could just have a pip extra where it's like an official sort of, know, pip install Django with task backend or something. ⁓
I'm excited about the task thing. Like Jake presented it, I don't know, back in the day, we were in, where were we? Golisier, we were in Vigo, yes, we're in Vigo. And he got up and he gave this great talk about how, particularly if you're developing a third party package, without tying yourself to one particular queue backend, and there are like 50, if you were to go on to,
William Vincent (36:47)
Yeah, where was it? was that in, was it Dublin, or Vigo?
Natalia (36:54)
Yes.
William Vincent (36:55)
yeah, I missed it.
Carlton Gibson (37:09)
Macedonia would say, what Django queueing backend tasks do you use? You'd get a different answer from every person who replied. And that's fine. And that's great. And that's the Django way. And that's wonderful. But if you're developing a third party backend or third party app and you want to use background tasks, you didn't have a common API you could lean into. And now you do. And that's a major step forward. I think it's going to be brilliant as that matures, regardless of which particular backend you use.
William Vincent (37:36)
Yeah, and I think it, for me as an author, it makes it easier to introduce tasks because I can go to the built-in option, you can try it locally. I don't have to cover celery to cover cues and tasks for someone, right, to make an exaggerated point, so.
Natalia (37:49)
Yeah,
You may even have a divide and conquer strategy within your engineering team because you may have a ciliary expert, for example, but you may have a team of around five engineers that are very skilled in Django and Python. They might just use the immediate or dummy backend for development and you might just focus on your specific.
William Vincent (38:05)
Mm-hmm.
Natalia (38:14)
background worker runner at some later point or with a specialized person.
William Vincent (38:22)
Yeah, and this is something I think that Django and I don't, can't say it's unique among web frameworks, but it feels like so much is optimized around one developer can do so much with Django. You can have queues, you can do CSP policy, you can do a lot of things that sometimes a team would be required, know, HTML template partials, you can get an interactive website solo so much more easily than you could in the past.
feels anecdotally to me that some other web frameworks are more focused on, I don't know, maybe like a big client or a big website needs as opposed to Django really is focused on like you solo can have production ready internet scale site more or less. And there's still these areas like if you need crazy celery or what have you, but just the built in power of Django is a lot. I don't know, does that make sense? I just feel like I don't always see other web frameworks
as focused on what a solo developer can do as opposed to what the broader community of teams that have front end and back end need.
What to say? I left everyone speechless with that.
Natalia (39:29)
Okay, and then, what happens?
Yeah, there is one more.
set of features that I want to highlight for C0 because the work made by Mike Edmonds was amazing and it's really worth calling out. He has done a set of improvements in everything that is email related. There was a big branch modernizing all the email API using Django. He changed all the underlying in the
William Vincent (39:41)
Mm.
Natalia (40:06)
the fundamental layer below the API that the angle provides and change everything to use more modern APIs from Python itself.
But ⁓ in order to complete that branch, Mike made a series of other improvements when it comes to how we handle a Unicode for ⁓ domains when it comes to URLs or email domains. He also made an amazing work in order to be able to generalize a decorator so we can deprecate more easily signatures of public methods or public functions.
So we have this strict policy and how we handle backward incompatible changes. And it's often the case where we want to change ⁓ a given signature. And more often is the case where we want to make some not named arguments to be only allowed to be passed as a named argument. He provided a decorator to make that transition and that deprecation more robust.
⁓ and reusable. And I think that was an effort that was so focused and well spent. And I'm very thankful for how he approached that because he was really thinking about maintainers, the maintainer work, what we go through when we need to handle those cases. He was ⁓ very easy to work with and I appreciate a lot his contribution.
Carlton Gibson (41:45)
Yeah, no, he, he spent an awful lot of time digging into the details of things which are very obscure and like the different Unico versions and whatnot. And ⁓ that work.
sort of unglamorous in a way, you know necessary to excavate, okay how do we make this change and so you know absolutely what you just said.
Natalia (42:05)
Yeah, exactly that. And from the point of view of the release manager, which happens to be me, ⁓ I felt so contained and so supported by his work. And I really think it's worth calling that out because...
while the fellows have this title and we might be in this pedestal from point of view for the people, sometimes we don't know what we're doing or we don't know for some areas of the angle. We don't have the expertise to go deep or to make decisions about, yes, let's go this way or let's remove this or add this. Having people with the domain knowledge and with the patient and the care to explain a concept, to provide rationale, to provide side information,
Thor analysis of how they are reaching the conclusion they are reaching and ⁓ how they are ⁓ going into or advising in one direction or another one ⁓ give us the maintainers and the people that is making decision. ⁓ It removes stress from us or at it did for me. So I think that's very, very needed and valuable.
William Vincent (43:17)
Yeah, because it's worth saying that the code is almost the least of it. If people go in and look at the discussions, there's a lot of discussion, as you said, education and everything else that goes into it. you can't just drop perfect code and be done with it. It's a small percentage of what's required.
Natalia (43:27)
Yes.
Yeah, and I think that applies for all the hardline features that I highlighted because I learned a lot from all of them. Like CSP, I don't even know it existed. ⁓ The insides of the template rendering engine, I never looked into until template versions. And background task, I also learned a lot because I've been using Celery, but I never really dig deep into what it really means to have task and what it means to run.
William Vincent (44:05)
Well, I just had one thought, Carlton, is there anything you wanted to slip in on 6.0?
Carlton Gibson (44:11)
No, not really. It's just another solid incremental change. Every single release, I always say this, every single release, like 5.0, amazing, 5.1, amazing, 5.2, amazing, 6.2, 6.0, amazing. It's just like it does keep coming. And people are like, well, why still Django? Well, have you looked at the release notes recently?
William Vincent (44:27)
And things don't, things don't break.
I mean, and things don't break. mean, yeah, no news is good news. I at PyCharm, we just released a version and every time we release something for a variety of reasons, there's, you know, there's stuff that emerges. The amount of things that need to be fixed is so small for something as important as Django. I mean, it's pretty phenomenal. But my question was, Natalia, even though 6.0 came out, 6.1?
Continues a pace. Is there anything you want to say on that is Jake the release manager for that? I don't know actually
Natalia (45:05)
Yes, so 6.1 started official development when we did the cut of the 6.0 stable branch. So 6.1 has been in the kitchen since September this year. And the fellows tried to take turns for being release manager of the different feature versions. So Sara did 5.2, I did 6.0, and we have kindly invited slash
William Vincent (45:18)
Yeah.
Natalia (45:35)
Blight Jacob to the release manager for 6.1. So yeah, he will be in charge of the feature freeze, the alpha release, and the subsequent releases. Yeah, I'm looking forward to that as well.
William Vincent (45:38)
Hahaha.
Yeah, I'll put a link. You can see the 6.1 release notes under development. So August 2026, and there's some features that may make it around model field fetch modes, database level delete options, and other things. yeah, it's relentless, right? The train just keeps on chugging. Even though you want to take a pause and celebrate and deal with 6.0 issues, it's like, nope, here comes 6.1.
Natalia (45:53)
Yes.
Yeah, and it's little bit scary as well because I just got the feature freeze and 6.1 development starts. personally, I wasn't able to pay attention to 6.1 development. Jacob has done that, very focused, which is great. And it's also another thing that provides me peace of mind. But it never stops. ⁓
maybe a talk for another time, but I'm very curious on the Calder proposal that you have, Carlton, because I think that will help with this feeling of overwhelming, at least that I have. But yeah, maybe we can discuss it.
William Vincent (46:52)
Yeah, can we give the pitch for that, Carlton? We can end on that.
Carlton Gibson (46:56)
Yes,
the basic idea is to move to an annual release cycle and the main motivation is to tie in better with Python's annual release cycle, which since 3.9 is every year. And ⁓ the issue is that there are any given time, are five ⁓ live versions of Python now. So I think Python 3.10 is the lowest and Python 3.14 is the highest. So there's five whole versions there. And
Django's release cycle was created before they Python switched that cycle. so we, the versions that 5.2 is still supporting Python 3.8, which is ⁓ been end of life for a year and a half by the time we, by the time 5.2 goes into life. And it would be nice to A, cut the number of birth and versions we're supporting and B, get on track with the kind of forward looking.
Python support policy that I think we're being recommended to follow. So that's the main reason. And then ⁓ the sort of second one is we have this kind of gap between ⁓ LTS versions where people kind of get stuck on an LTS and they can't easily upgrade from 5.2 to 6.0 because 6.0 isn't an LTS. So they wait all the way till 6.2, which means that there's this kind of, we have this drop off when.
the old ⁓ LTS goes end of life, have people that are, so the people are currently on 4.2 when 6.0 is released. So now, or in April, sorry, 4.2 will go end of life and people will be like, I'm still on the old LTS, I managed to start updating. And that takes almost the entire LTS cycle to get people on to say 5.2, just as 5.2 goes end of life. And it would be nice if every version was an LTS version. So there's... ⁓
I've got a proposal for that. And then the third bit was the Calver bit is to just make it, make it clearer what the version numbers come to. So we've talked on this podcast a million times about how, you know, when 6.0 comes out, people are like, well, it's not really a breaking change. It's not, it's cause it sounds as if it's semantic version. It's like a new major version, but it's not. It's just a continuation of Django's rolling releases. So I put, I put ⁓ an email out about that a couple of months ago.
and I will write that up over the new year period and present that and see if we can get some agreement on progressing that so that perhaps for the 7.0 period that might be Django 28.
William Vincent (49:27)
And there's a Django forum post that we'll link to from you, Carlton, with a lot of discussion as well. 48 messages.
Natalia (49:35)
Yeah, and on top of everything that Carlton's saying, from the point of view of maintainers, we will also get a little bit more breathing room if we have one ⁓ feature version per year.
William Vincent (49:48)
Yeah, well, and just if something comes out in 2026, it's 26.0 or .1. I think it makes all the sense in the world. Just for that, not to mention the maintenance and the Python part, nobody can tell you. Even you and I, Carlton, would struggle. When did 2.2 come out? I don't know.
Carlton Gibson (50:07)
Yeah.
No, yeah, who knows? like as well, the idea with that as well that every version would have exactly three years of support. And so if it's Django 26, well, you know it's supported till 29. And if it's Django 27, it's supported till 30. If it's 28, it's supported till 31, et cetera. I think that would give people a bit more clarity as to what version they're on and when they need to act and things like that.
William Vincent (50:38)
Yeah,
I mean, that's what PyCharm does. For example, there's three releases a year. We just had our third one. So it's 2025.3. Next year will be 2026.1. I think it's helpful.
Carlton Gibson (50:49)
Yeah.
An Ubuntu does it, another player, it's not novel, it's... yeah.
William Vincent (50:53)
Yeah, it's not breaking new ground.
Natalia (50:55)
Yeah,
yeah.
William Vincent (50:57)
⁓ Natalia, is there anything you want to add while you have a microphone and the ears of the community? I know you've said a lot already.
Natalia (51:07)
⁓ That is for the 6.0 release or something more wide.
William Vincent (51:12)
Or anything, anything,
Carlton Gibson (51:12)
No, no, no, anything.
Open floor, go on.
William Vincent (51:13)
anything. don't talk about that. That's, that's boring. No, just about being a fellow, just personally. mean, I, I keep, I am constantly struck by the fact that fellows, you know, people use Django and assume it comes from no, from somewhere indeterminate. And at the end of the day, it's fellows. It's people you called out doing the work, you know, there's real people doing hidden work to make all this happen.
Natalia (51:41)
Right, yeah, that's key. I wanted to say something along those lines in that the DSF, the Django Software Foundation, they, one and a half person right now in order to ensure that Django is maintained. But we can't possibly do everything. There is no time and we don't have the energy nor the time to do everything that is needed. So Django is what it is today because of the effort
of and in contribution from a lot of volunteers. The paid persons, the fellows, we try to...
try to do the best that we can with those efforts. We try to provide support, try to provide reviews or advice, or execute the bits that other people cannot execute. But I'm finding myself more and more overwhelmed with the amount of things that are coming our way. And without the help of the volunteers, I don't think that we could keep up. I mean, we're not even keeping up. But we're keeping up with priorities. We're not keeping up with everything. ⁓
⁓ But I think the involvement of contributors and volunteers is key. And I think that the angle is what it is because of that, but needs a lot more of that to continue being an excellent web framework. ⁓ We're struggling a lot, as I've mentioned already, with LLM.
⁓ results which are low quality, unreviewed, but they're taking a lot of time. that's also an open thing that I don't have any answers, nor any concrete proposals yet, but it's also that we are struggling a lot with. So if I can ask anything, please people to review what you're sending to open source in general, because it's consuming a lot of time from containers. Yeah.
Carlton Gibson (53:37)
I when you were talking there, it seems that people think ⁓ either Django sort of comes out of nowhere and they have no idea where it comes from, or they think there's some massive corporate entity with a massive team and like lots of resource. The bottom line is there's one and a half full-time people paid to work on it. There's very little resource and I think it's important to keep that in mind.
William Vincent (54:00)
No notes On my end. Well, Natalia, thank you for taking the time I know just before this you had an ops meeting and just all the things you and ⁓ Jacob and Sarah juggle. It's so impressive and Django wouldn't be what it is without especially the fellows. So thank you for Your work and not going insane managing everything. I appreciate it Well publicly yeah Yeah
Natalia (54:21)
Thank you. Well, you don't know if I haven't gone insane. I'm still not sure when it may be.
William Vincent (54:30)
Yeah. We will have notes to everything. Everyone check out 6.0, give feedback. And thank you again, Natalia, for taking the time.
Natalia (54:40)
Thank you for having me. I really enjoyed.
William Vincent (54:43)
All right. We'll see everyone next time. Bye bye.
Carlton Gibson (54:43)
Good.