WEBVTT

00:00.000 --> 00:09.480
I everyone, I'm T-Bo, my pronouns are he, him, and just want to start by saying thank

00:09.480 --> 00:13.920
you to my partner who is looking after our kids while I get to be here.

00:13.920 --> 00:14.920
So thank you Deborah.

00:14.920 --> 00:18.280
I couldn't be here if you were to do this for me.

00:18.280 --> 00:22.560
And yeah, we had to talk about Django, are really happy to be here.

00:22.560 --> 00:27.960
I've changed the plan for my talk quite a bit because in December of last year I became

00:27.960 --> 00:30.800
the president of the Django software foundation.

00:30.800 --> 00:35.960
So I thought I might as well use the platform and talk about generally how we do decision

00:35.960 --> 00:41.280
making for Django and the DSF things that work, things that don't, we'll talk about

00:41.280 --> 00:44.920
the exhibits, but yeah, just so you're aware.

00:44.920 --> 00:49.440
Slides are live right now, you're very welcome to go in there, at comments right now if you

00:49.440 --> 00:51.320
feel like it's just follow along.

00:51.320 --> 00:56.040
And yeah, it's very experimental, I'm using Google Docs for slides, so see how it goes.

00:56.040 --> 00:57.040
Django.

00:57.120 --> 00:59.120
How many people here at No Django?

00:59.120 --> 01:05.200
Yeah, quite a few, but you know Python these days is gigantic, definitely lots don't.

01:05.200 --> 01:09.440
The web framework for virtualists with deadlines, that's our tagline.

01:09.440 --> 01:13.760
You might not know that Django turns 20 years old in 2025.

01:13.760 --> 01:18.960
It's been around for a while and for such a big and early project, it's really cool that

01:18.960 --> 01:25.120
it's a project that's very community run and run by a non-profits foundation since 2008.

01:25.200 --> 01:28.880
They were very early in doing this in that kind of style.

01:28.880 --> 01:34.320
Other projects from the same era, then to be still my more cooperates.

01:34.320 --> 01:40.560
And yeah, no PDF else since 2014, one of the things we definitely struggle with is decision-making

01:40.560 --> 01:44.720
is kind of more community-driven, consensus-driven way.

01:44.720 --> 01:50.720
And yeah, it's a big project, my estimation is we have on the order of 500,000 to a million

01:50.800 --> 01:56.560
Django projects are there that I live in production and on the order of half a million to two million

01:56.560 --> 01:58.640
developers are there that use Django.

01:58.640 --> 02:05.200
And it's full stack, by the reason included, by the reason included, has no RM, has routine.

02:05.200 --> 02:09.040
I know some of those bits as a coder, definitely not all of them.

02:09.040 --> 02:14.640
If you've not tried Django yet, there's free things I want to plug, Django girls tutorial.

02:14.640 --> 02:19.200
The Django girls, plus tutorial, the recently renamed, it's an amazing resource.

02:19.200 --> 02:20.880
So happy that we have them.

02:20.880 --> 02:25.280
Right there is what I do as a day job, it's a CMS built on Django.

02:25.280 --> 02:29.680
It's not just me, it's a big company behind it and lots of contributors in other companies as well.

02:30.480 --> 02:32.160
More opinions than the Django.

02:32.880 --> 02:39.440
And our conference coming up in Dublin this year, where I will celebrate that 20 years perfectly.

02:40.320 --> 02:43.280
Some of my history, I'm definitely a dev first and foremost.

02:43.280 --> 02:46.400
I've been in the country to Django for quite a while and the whole, you know,

02:46.400 --> 02:51.040
presidency thing governance thing that's quite early for me.

02:51.040 --> 02:54.640
I'm only doing this for this year, so definitely that's one of the challenges.

02:54.640 --> 02:59.600
In my mind, front and center is contributors turnover over time.

02:59.600 --> 03:03.280
And people like me who step in for a year or two, and then they might not have the capacity

03:03.280 --> 03:05.680
necessarily to keep up.

03:05.680 --> 03:09.360
But yeah, that's me, that's the history, that's Django.

03:09.920 --> 03:15.600
And I thought I'd give a started thinking about, you know, keeping Django relevant on why people

03:15.680 --> 03:21.680
come to Django to start with as contributors, not as users, as contributors first of all.

03:21.680 --> 03:26.720
And for me, in my mind, it's a matter of making an impact with the work you do.

03:26.720 --> 03:30.960
So this is the kind of question that I tend to encourage people to ask themselves,

03:30.960 --> 03:34.800
why do you contribute, what kind of impacts are you hoping to have?

03:34.800 --> 03:38.160
And this chart here won't go into the details.

03:38.160 --> 03:43.840
My job is accessibility first and foremost, and when I see this chart, when I see Django,

03:43.920 --> 03:47.760
having a lower score than next, I guess, it's just not acceptable.

03:47.760 --> 03:50.640
And the only correct answer is a perfect score.

03:50.640 --> 03:56.160
And you know, becoming driven, it's hard for us to have the resources to beat those better frameworks.

03:56.160 --> 03:59.280
But that's why we here, that's why I'm talking to you, so you make them.

03:59.280 --> 04:03.440
So yeah, accessibility, I'm hoping way to improve, that's why I got involved to start with

04:04.240 --> 04:07.200
more graphs. I'll skip right over this one, it's not so useful.

04:07.200 --> 04:11.040
And yeah, more recently, I guess it's worth mentioning at the scale of Django.

04:12.000 --> 04:14.720
I don't know how many people here will have seen this chart before.

04:14.720 --> 04:18.800
The climate impact of technology, we have to think about long and hard.

04:20.000 --> 04:26.720
Yeah, I'll keep this brief, but definitely if you think of 500,000 websites or projects with APIs,

04:27.440 --> 04:33.200
that's 500,000 servers, that's tens of millions, maybe billions of users out there

04:33.200 --> 04:37.200
are using Django websites that load them in their browser, that takes lots of energy.

04:37.200 --> 04:43.760
So any improvement we can make to the carbon footprint of Django projects that adds up really fast.

04:44.720 --> 04:50.080
The NHS in UK uses Django, they have like on the other of a billion page views per year.

04:51.040 --> 04:54.800
So yeah, just that's why I'm here, don't have to agree with that.

04:54.800 --> 04:58.400
That's just sharing context on how this came to be.

04:58.400 --> 05:03.440
And yeah, so from a governance standpoint, I also like, again, like stepping through the roles,

05:03.440 --> 05:10.880
the contributors ladder, to think of what keeps the community healthy and encourage us to consider

05:10.880 --> 05:15.680
those challenges we might be having. I don't know here, like how long people have been Django

05:15.680 --> 05:21.200
notes for, definitely there are some people that love it, have loved it forever, and are very

05:21.200 --> 05:26.480
happy with it. And I talk about the existential threats to Django a bit, I definitely want to

05:26.480 --> 05:30.720
make clear, Django is going to stick around forever. It's so big of a project, it has so much

05:30.800 --> 05:35.280
momentum in Russia that it's not a concern whether Django will be there tomorrow or not.

05:35.840 --> 05:40.240
It's just so stable, and that's one of the reasons why people go for it.

05:41.120 --> 05:46.080
But it does still mean we have to worry about longer term, how it can keep it evolving,

05:46.080 --> 05:52.000
and not just rely on this in Russia, but whether it's accessibility and the carbon footprint,

05:52.000 --> 05:57.360
whether it's diversity of contributors or users that we're heading in direct direction.

05:58.160 --> 06:02.080
So yeah, how do you know whether you're heading in direct direction? Well, in my mind,

06:02.080 --> 06:08.640
best place to start is to compare your projects with other projects. This right here is the

06:08.640 --> 06:16.320
best way I found to compare any two tech projects out there. This is the ranking of those projects

06:16.320 --> 06:21.920
websites in a specific data set called Tranko. Basically, if the line goes down, it means the

06:21.920 --> 06:28.720
project is getting more and more popular. So walk around the bits. This very bottom is very

06:28.720 --> 06:35.040
safe tools that will never disappear. Django is the big black line right there. Right here,

06:35.040 --> 06:41.040
we have flask. Again, very popular Python tool. That is, I don't know how you feel about flask.

06:41.040 --> 06:44.720
I don't know it too well myself. It's definitely going to stick around forever. And right there,

06:44.720 --> 06:48.880
we have first API. I don't have much data for those, so that's why I just added the two points.

06:49.600 --> 06:54.400
And yeah, lots of JS frameworks going like, because they have way more marketing resources

06:54.400 --> 07:00.640
than the rest of us. And also, folks like HTML, blue line in the top right corner, definitely

07:00.640 --> 07:06.160
getting adoption pricey fast. So that's the type of trends I think we should all learn to look at

07:06.160 --> 07:13.280
as community minded open source people to understand why options are out there. What are the

07:13.280 --> 07:19.280
people outside this room in a wider pool of 2 million developers considering as far as tech?

07:19.280 --> 07:24.400
And what do they like? Basically, I want to steal all the good ideas from all those different frameworks.

07:26.320 --> 07:32.160
And yeah, I think we're seeing this tells us those tools are being used. This tells us Django,

07:32.160 --> 07:37.440
people use it. Doesn't tell us that people actually like Django, which, you know, are kind of like

07:37.440 --> 07:42.800
for that to still be the case, too. So here we turn to the Stack Overflow developer survey that

07:42.800 --> 07:50.240
has really solid numbers on developer sentiment towards framework year over year. And it's a big

07:50.240 --> 07:56.480
table, I guess the sad news is numbers aren't looking so good for Django. So that's definitely why I'm

07:56.480 --> 08:02.640
here is making it clear that it's not all rosy. And we need to take a good hard look at this type of

08:02.640 --> 08:08.240
data and think of maybe not just how we evolve Django technically, but how we market it as well.

08:08.240 --> 08:14.400
So people evaluate for the good bits and help us address the bits that need improvement. So I guess

08:14.400 --> 08:20.000
here in particular, the wants to start using line people who wants to start using Django,

08:20.560 --> 08:25.600
definitely getting lower. But it's not, it's not necessarily also bad. So I think something

08:25.680 --> 08:32.400
I want to make clear is this survey only tracks a group of like 10, 20 frameworks. So quite

08:32.400 --> 08:37.280
naturally as new frameworks come about, they won't be in the survey and people will start using them.

08:37.280 --> 08:41.200
So this kind of downwards trend that we've so before is there for all frameworks.

08:42.080 --> 08:48.880
If we look at year over year numbers, so essentially whether usage is increasing or decreasing,

08:48.880 --> 08:53.920
the figures aren't so bad. And I guess this restaurant in particular, people who want to

08:53.920 --> 08:59.600
stop using Django, it's only ever gone down. So that does mean that the people who start using Django

08:59.600 --> 09:07.120
take the time to learn such a big framework, appreciate it. So talking about DX, maybe some of the

09:07.120 --> 09:12.720
more modern aspects of the Python ecosystem aren't their yet in Django, but the people who take

09:12.720 --> 09:17.680
the time to invest into it, they like the long-term maintenance, they like the repeatable releases,

09:17.680 --> 09:22.640
they like knowing that for example, we have multiple maintenance, quite a bit of fluency.

09:22.640 --> 09:29.440
It's not driven by a solo person. Yeah, just again to harm your viewpoint home. So as a

09:29.440 --> 09:37.920
chart, what I want you to focus on here is the fact that the adoption in blue, that isn't growing so

09:37.920 --> 09:43.520
much. Here is compared to again compared to the other frameworks in that data set. So Django still

09:43.520 --> 09:49.120
definitely is growing by virtue of the Python ecosystem growing. But what that means is we're not

09:49.120 --> 09:55.040
finding this theory as many new people as we might like. People like Django or if people keep using

09:55.040 --> 10:04.240
it, but I'd like us to look a bit further forward than this. And yeah, let's look at the trends

10:04.240 --> 10:08.320
in the Python world. I'm sure you know them already, but definitely useful in my mind to be aware

10:08.320 --> 10:14.160
that there is lots of data on this stuff. We don't have to guess. And the big trend is data science,

10:14.160 --> 10:20.720
and I guess the popularity of web frameworks among people who do data science or maybe AI

10:20.720 --> 10:28.320
with Python. Well, this is a tough one to read. So I'll talk to the numbers. So we're looking at

10:28.320 --> 10:33.760
two bar charts per framework. The white one is popularity of the frameworks with people who are

10:33.760 --> 10:40.720
in a data science space. And the brown yellow one is what developments. And what's really interesting

10:40.800 --> 10:46.800
to me here is to see how many data science people are using those web frameworks. But how big

10:46.800 --> 10:52.560
the gap is in numbers of people using Django that are in the data science space and web developments.

10:52.560 --> 10:57.440
So to me right here, there's an opportunity for Django, maybe by changing which API as it has,

10:57.440 --> 11:03.920
by changing its marketing simply speaking to be popular with that crowd. Again, I don't want

11:03.920 --> 11:09.040
to make it sound like you have to use Django as the best thing for everything. But I do think

11:09.040 --> 11:15.360
that whether it's flask or Django or fast API, it's useful for those frameworks to be aware

11:15.360 --> 11:21.680
of the trends and to adjust their documentation or their features accordingly. And again,

11:21.680 --> 11:27.520
just to be clear, fast API flask to definitely the right to hold a job in lots of scenarios. So

11:27.520 --> 11:32.800
not saying that it's one or the other. And we have to last to learn from those frameworks.

11:33.040 --> 11:40.640
So just looking at this data a bit more again, we see the trend looking at survey results

11:40.640 --> 11:48.160
year over year, where there is some growth in usage for some frameworks. But definitely I like

11:48.160 --> 11:55.760
us to reflect on what those trends are driven by basically. And this survey comes from JetBrains.

11:55.760 --> 12:00.640
JetBrains are amazing supporters of the Python community. You know, they have their ID,

12:00.640 --> 12:05.200
they have good lots of good reasons to do this. But they still don't let show up and sponsor the

12:05.200 --> 12:11.040
foundation and make things happen. And they even packed this forest where they say the jump in

12:11.040 --> 12:17.280
popularity for fast API. They put it on performance, developer economics, so dx and type hinting.

12:17.840 --> 12:23.600
And that seems quite on the money to me. So definitely something so where I know that's the

12:23.600 --> 12:28.320
DSF as far taken on decision making, which traveled a bit in making about mind and having a good

12:28.400 --> 12:32.880
story around this. And I don't necessarily think that Django is bad at those things, but I definitely

12:32.880 --> 12:40.240
think we need to make it clear what our vision is for those things. And yeah, just, you know,

12:40.240 --> 12:46.080
iterates, be open about our struggles and make those gradual improvements that people appreciate

12:46.080 --> 12:50.800
in the rest of the Python ecosystem. It's amazing that Python is evolving, I want Django to follow

12:50.800 --> 12:57.680
along. And so yeah, again, existential threats, small challenges really, because Django is not going

12:57.760 --> 13:05.120
anywhere. People love the stability and it's right and tested. I thought I'd look at some

13:05.120 --> 13:12.160
internet comments on what people think of Django. I find it amazing that people take the time to

13:12.160 --> 13:16.000
share their thoughts on the framework that definitely helps us to the community grow and I want

13:16.000 --> 13:21.440
to encourage more of that. I'll read some bits of this that I think are really relevant. So

13:21.440 --> 13:26.000
the like and the pace of evolution is definitely something where I think we have to have a good answer.

13:26.640 --> 13:31.280
And this person, they've been replied to by someone else who says, no big corporations,

13:31.280 --> 13:36.800
we've tons of money back in Django. I don't know who knows how much versatile the makers of

13:36.800 --> 13:44.480
next JS have in venture capital funding. It's 150 million. So the DSF, our yearly budget,

13:44.480 --> 13:52.560
is $25,000 and 95% of that goes towards paying people full-time to maintain Django. So the

13:52.640 --> 14:00.560
marketing budget at the DSF is $5,000. So yeah, so we need people and we need to be

14:00.560 --> 14:04.400
better at fundraising as well as definitely an argument there and we need a better story.

14:05.840 --> 14:10.080
And yes, at this last point, why don't you have to use private packages to create a rest

14:10.080 --> 14:16.880
API in 2023? Definitely a concern with our Django package ecosystem, whether it's too fragmented or

14:16.880 --> 14:22.400
not and which batteries should be in core. And again, I want to make it clear, like if all

14:22.400 --> 14:29.440
need a rest API, maybe you don't need a full stack, such feature, full framework. Maybe you're

14:29.440 --> 14:34.160
very happy with other ones, but I definitely want people who are happy with Django to be able

14:34.160 --> 14:39.920
to take it in more use cases. Not for me to say as the president, but you know, I want to

14:40.640 --> 14:45.760
help the framework grow whichever direction. So yeah, more opinions on the on the internet.

14:47.760 --> 14:52.080
I'll focus on this bit that I haven't highlighted. It's not very exciting to be a Django developer

14:52.080 --> 14:59.280
today. I mean, I love the JS ecosystem and I love JavaScript, but if you want excitement,

14:59.280 --> 15:07.760
like for sure, you know, going for React upgrades year over year, switching from Redux to MobX to Zustand,

15:07.760 --> 15:12.720
like you can have lots of excitement over there. And we're not about that, that's for sure.

15:13.360 --> 15:18.480
There are definitely trends. I hope we we integrate in Django, but yeah,

15:18.480 --> 15:23.440
excitement definitely, like that's not our ethos. But again, I want to make it clear, like this

15:23.440 --> 15:28.000
type of feedback in my mind, amazing for us. And I want, I want this kind of criticism.

15:30.720 --> 15:36.480
Yeah, so it's not all doom and gloom. I have linked to those past if you want to make time to

15:36.480 --> 15:42.400
look at what people have to say. I've left the technical aspects of our Django hard type

15:42.400 --> 15:46.080
hints. Should Django have a built in API story. Should Django have a single file,

15:46.640 --> 15:51.040
options. Should Django have better docs. In my mind, all those things sound great,

15:51.040 --> 15:55.280
but definitely the right people to make those calls in our given as model. They are our steering

15:55.280 --> 16:00.480
counsel. It's a group that's we've struggled with maintaining over the years. We have new steering

16:00.480 --> 16:06.480
counsel members as of a few weeks ago. One of them, MRIs in this room. Thank you for being here,

16:06.480 --> 16:12.880
MR. And I hope that they help us as a community figure out which of the technical challenges

16:12.880 --> 16:23.600
to address and make it happen with our community competitors. So yeah, the challenges and in my

16:23.600 --> 16:28.160
mind, which things we need to be changing are encouraging more diverse contributions,

16:28.720 --> 16:34.320
definitely a framework that's 20 years old. You don't improvise keeping people around for that

16:34.320 --> 16:39.920
long. Even keeping people around for a year or two is hard. So 20, there's just no way. You have to

16:39.920 --> 16:46.560
have a plan for how you unlock people into the projects and retention. So keeping them. So just a

16:46.560 --> 16:52.160
quick shout out here to the Django Note space program. They're an amazing program. Just like Django

16:52.160 --> 16:58.480
Girls Plus that have to find new people that want to take on this type of tech work with Django

16:58.480 --> 17:06.560
and their focus on contributors to the framework in particular. And yeah, so governance definitely

17:06.560 --> 17:11.840
long-term technological direction by volunteers working in the open. That is a lot to ask

17:11.840 --> 17:16.960
out of volunteers. And when we compare ourselves with other frameworks, we have to keep in mind

17:16.960 --> 17:21.280
all the engineering resources they have, not just the marketing. And how much of that is in the

17:21.360 --> 17:26.240
background where it's much easier for them to fight over things, still be friends,

17:26.240 --> 17:32.640
whereas for us it's all public. And yeah, it's challenging. And yeah, I guess the last one here

17:32.640 --> 17:36.560
as far as governance is having a clearer vision for the future of Django. So right now we have a

17:36.560 --> 17:41.840
vision as particularly for what Django is at this point in time. I don't think necessarily have one

17:41.840 --> 17:49.040
for how we want it to evolve. And maybe that's what takes it from 20 years old to 40. And so yeah,

17:49.120 --> 17:53.360
opportunities, the vision I just mentioned, having a roadmap for Django,

17:54.080 --> 18:00.400
this document right there is my experiments from a year ago before I was president and also

18:00.400 --> 18:06.080
before I was a bald member. And I definitely think that's such a great win for Django. If we

18:06.080 --> 18:12.400
could have a public, okay, here is for the next release. Five to two coming out in a few weeks.

18:12.400 --> 18:17.040
Here is what we had plans, here is what we delivered. Definitely tested out if you haven't yet.

18:17.120 --> 18:21.840
For the release after 6.0, here is what we have planned and so on. Not necessarily for our

18:21.840 --> 18:27.680
users, but also for the contributors to a line on the changes that need to happen. And yeah,

18:27.680 --> 18:33.440
having more professional foundation, again, like, I do this kind of stuff for a living for

18:33.440 --> 18:39.440
wacktale, wacktale is a much smaller project with much fewer contributors to coordinates.

18:39.440 --> 18:44.240
Django is on the other of the thousand contributors per year. I'll let you imagine, like, I don't

18:44.320 --> 18:49.680
even, I can't even know them all by name. And yeah, those thousand contributors,

18:49.680 --> 18:56.880
that's representing maybe 10,000 people engaged in going to conferences, 100,000 to a million

18:56.880 --> 19:01.600
devs are there that are using good day today. So finding better ways to engage with those people,

19:01.600 --> 19:06.000
again, in my mind, essential. I don't want to learn just from those other frameworks and trends.

19:06.000 --> 19:13.200
I'm not learned from what people in those kinds of rooms talk about and value. And yeah,

19:13.840 --> 19:17.920
we have about five minutes for questions. I believe. I'll be right outside these

19:17.920 --> 19:20.960
doors to talk about Django for the rest of the afternoon. Thank you for having me.

19:30.640 --> 19:31.680
Do you have any questions?

19:32.320 --> 19:45.840
Yes, thank you. You have mentioned the ecosystem of part packages, which some people believe

19:45.840 --> 19:54.320
are necessary to turn Django into a usable web API. It's very planning a short medium term to

19:54.320 --> 19:58.880
try to maybe reach out with people, collaborate with them to see if some features can be

19:59.760 --> 20:04.720
put into very bad project or is it not the direction which is considered right now?

20:04.720 --> 20:10.480
Yeah, yeah, great question. There is definitely a plan with in touch with as many package

20:10.480 --> 20:15.040
materials as we can. And we've been in touch with those people that, you know, the DRF's and the

20:15.040 --> 20:22.160
Ninja's of the world for want to say almost years now. The problem with phase is that, again,

20:22.160 --> 20:27.360
like the DSF is quite a small entity, it's not super sustainable for us to move things as big as

20:27.360 --> 20:33.520
packages in core. So we have to think very carefully of keeping our cost of maintenance,

20:33.520 --> 20:38.160
low enough that is sustainable while bringing this innovation. So in the case of those APIs,

20:38.160 --> 20:42.960
to me, again, as a technical distributor, not as the president, the answer would be,

20:42.960 --> 20:47.840
making sure we review the story from a developers perspective, looking for those options

20:47.840 --> 20:52.640
in deciding, and maybe it's just a matter of listing the top five of those packages in

20:52.640 --> 20:57.680
that specific space in our docks rather than people having to go and hunt for them.

