Transcript: Django Fellows - Natalia Bidart & Sarah Boyce
This episode of Django Chat is sponsored by TalkPython and their new HGMX courses.
The link's in the show notes and we'll tell you more about them later.
Hi, welcome to another episode of Django Chat, a fortnightly podcast on the Django Web Promo.
I'm Carlton Gibson, joined as ever by Will Vincent. Hello, Will.
Hi, Carlton.
Hello, Will. And today we've got with us two special guests, two Django fellows,
Natalia Bedard and Sarah Boyce. Hello, fellows. How are you?
thank you for joining us hello hello yeah very well thank you yeah right exactly that's more
that's that's more like it right no air silence please come on um i don't know will that's it
i've done the intro you have to ask a question now okay well so this is our fall season and what
better than to start with our fellows since 5.1 just came out you're already working on 5.2 and
i know thinking about 6.0 so maybe i'll start with a question 5.1 is there one feature that
each of you was most excited to ship, because it's always a race at the end to see if something
gets in.
Okay, so, well, I'm Natalia, I was the release manager of 5.1, so I don't remember from the
top of my head what we were running against, because it feels like we were running with
everything.
There is always, you know, all these branches that we want to push forward to the final line.
Because, I mean, at least to me, it's very important to have the contributors feel like what they do is eventually seen and used by other people.
So that means having that merge into the angle.
But from the things that were released, I love the query string template tag, the new template tag that was merged.
I have been implementing that by hand for many years, so I have been starting switching my projects to using it.
And then there is also some work that Sarah picked up, which is the Postgres connection pool.
so maybe sarah you can tell us a little bit more how was that like yes i mean uh i would say it's
more florian's work that i helped near the end with but uh yes now that was a a feature we uh
that had been worked on for some time and we managed to get that into uh 5.1 so yeah very
exciting so could i ask a question on that because i i'm quite excited about that i'm going but i
haven't really back or tested it to know can i can i in theory can i get rid of pg bouncer now
because i've got pg bouncer everywhere and maybe one less thing maybe maybe
uh yeah i mean definitely try and uh yeah um it's it's quite nice to see the 5.1 go out because
uh it just means that we change the flavor of our release blockers so i would like to learn what's
uh what's working and what's not working so the more that people use it now uh the more we will
know how well it's working for people so okay and we'll find out over the next two or three releases
yes things come in and it's like oh do you know what this needs fixing that needs fixing okay
yeah um can i just yeah and also i sorry i happen to know that jeff might be trying connection pool
pool as well so you might want to reach out to him okay and encourage each other well we're
sort of connection pool support group yeah yes yeah okay that's fine i was in a get context data
today and i was looking at some logic and i was like what's this doing and it was building a query
string so in my view and i too am quite excited about the query string template tag because all
that can just be like moved over to the template and one line of django versus a horrible mess
tom did a great job there and it's super useful and actually for 5.2 we are well a contributor
is extending a little bit to make it a little bit more flexible and being able to pass a name
parameters to it in order to uh do things a little bit more fancier um and then going back to 5.1 we
We also have, well, the login required middleware, which is something that you can enable in
order to have, by default, login required on every view.
With that, we shipped a new decorator to not require login on a given view.
So you can, you know, have a few views, particularly for login, and not to require authentication.
And then there is this huge push regarding accessibility that has been happening from
before 5.1, but you can see the most noticeable, well, I think the most noticeable consequences
of that push in 5.1 and there will be more in 5.2 about assorted fixes regarding accessibility
in the admin in particular, but also at some widget level
which will help your application even though outside the admin
and to do the right thing in most cases
for when defining the different HTML attributes for accessibility.
And I would like to call out for that the accessibility team.
I think that this wouldn't be happening if it weren't for them.
They have been working a lot since more than three, five years now.
And they have been not only doing work, but also inviting more people to join the team
and training them and helping them becoming accessibility experts as the original group.
And we are seeing more and more efforts being proposed and fixes being proposed by the community,
but not only by the initial team, but also from new contributors.
And I think that's great.
And I think that's going to help the accessibility part of Django a lot.
And you said a key word there.
You said training.
Because for years, I've sort of known accessibility is important.
I've known the basics, you know, use your headers in the right structure, use labels and forms.
But there's a step beyond that where I'm a bit like, whoa, big chasm of knowledge I don't have.
And so how are we or how are the accessibility team pushing that forward?
The forms just do it for you, Carlton.
just the default forms handle it well there's that yeah there's that yeah yeah i think it's
super important these kind of uh specialized groups i would love to have a similar one for
the orm in fact sarah and and i have been starting some conversations around that
i think that it's at least i'm trying to embrace the notion that there is there are a lot of things
that I do not know
and that I'm training on
and asking for that,
it's okay.
It's not like I should know
and I should try to hide in secret
and learn by myself.
It's okay to ask
and it's okay to share
and that learning,
I think,
is much, much richer
than doing this on your own.
I also think
Thibaut,
in collaboration
with the accessibility team,
he's been working
on some contributor guidelines
that he's uh wanting to add into Django which will uh hopefully at least give people an
appreciation of the different elements uh involved in having uh an accessible web page uh the
different kind of um tools that people are using to uh uh when they experience the web's different
screen readers that are popular and so forth um and i know with the uh part of the
reason they wanted to increase the team is ideally they also wanted users and testers of
uh of this uh software so that they can uh you know with real life experience say whether it's
working for them or not um so uh yeah no i think and in the process i think we all are learning
when when we're reviewing these uh pull requests and i've had the the the joy and the pain of a
screen reader experience and uh it's yeah it's really interesting and you learn bits along the
way yeah i think that having that kind of guide is amazing i mean it's that why why do open source
one thing it's a massive learning opportunity right and just as i don't know when you start
and you go to the django docs and there's all this how to write unit tests and how to run the
test suite and you can take all of that stuff and you can apply it to third-party packages and you
can apply it in your work your work and you could do oh look i know all about testing why because i
help contribute to django well the same here right you can learn the accessibility tools
apply them on Django take them to your third-party packages take them to your work that's that's a
lovely reward that as individual contributors we can get from doing you know learning these new
skills so I know you alternate being release managers um so Sarah you're up for five two
or sorry Carlton do you have a question before I ask yes yeah just before you go to five two
so um Natalia you said you were the 5.1 release man you still are until the end of life
yes yes yes i i know i know i know i'm also well i was also the 5.0 release manager and i just
finished that on august 7th and then once you're done being a fellow then you have to help the new
fellows be release managers right carlton is that how it goes you never really i don't know i know
you go off on hold then you never could you never put a word yeah who's carlton yeah there's a sort
dusty patch where there was some what let me sarah before you go in so natalia how how different was
it the second time versus the first time i know we we had interviewed you and especially the first
time right it's like oh my god it all relies on me is the feeling that i hear fellows say
well the second time was so the first time i had no idea what i was doing the second time
I had like 20% of idea of what I was doing and so I guess I felt less panic and I sort of knew
what was coming so I think that made a huge difference for me in terms of being able to
prepare a little bit more for some things also I tried to one of the things that were more
the word that I'm thinking is invasive
but that doesn't necessarily apply
for the final release you need to fetch
all the translations from TransEffects
into the bundle that you're releasing
and that process
it's extremely
cumbersome
and tiresome and it's very
time consuming as well
so between 5.0 and 5.1
I tried to propose a
small improvement towards that
in order to choose a little bit the TransEffects API
in order to fetch the translation a little bit more smartly
in that using some days in order to fetch what is really needed.
So that helped considerably.
And so, yeah, overall, it was a slightly smoother process.
Well, the first one or two releases are in some ways the best to change things
because you're still coming at it with this new newness.
And then I imagine after a while, you sort of just accept certain things.
But when you're new, you're like, well, that doesn't make sense.
Let me fix that, right?
Just like when you join a code base for the first time, I feel like six to 18 months is
kind of your sweet spot where you fix stuff.
And then after 18 months, sort of the technical debt just like wears you down.
You embrace it.
In my experience.
Yes, yes.
You embrace it.
You embrace it, yes, yes.
Absolutely agree, yes.
sorry so sarah um what is the what is the what is the what is the training process like for
being a future release manager oh gosh um uh so natalia is very helpful um i have had
some unsuccessful and some slightly more successful monthly releases so uh at least some
um uh okay so for those who don't know uh we generally will have a release every month these
are the um the final the 5.1.2 for example those will happen monthly pretty much partly
they don't necessarily happen uh they are uh they happen if there are release blockers that
we uh backported fixes for or there were security fixes that we um did a release for
uh uh but in my experience it happens every month in theory it can skip um so we
you take it roughly in turns to do this in theory um so i've had at least an experience of releasing
a a new version of django um with the feature release itself um i've seen some things that
have been happening in the background uh but until you're doing it uh i wouldn't say it's um
uh yeah it will it will come there are docs and there's also uh current current fellows and former
fellows and and people to support but um yeah we'll see how it goes well the timeline i think
because it doesn't it's april right it's every eight months or so but that feels like a long
way off but really sort of the next couple months is when what's going to be in it is really decided
I wonder if either of you could speak to what is the internal timeline for these releases, right?
Because on the outside, we just see every eight months it appears, but I know that's not how it works.
So I think the alpha freeze deadline, I think that's January 15th.
So that will be then that there is like another month or so where book fixes can still be back put.
So at that point, we make the cut.
Then the branch for 5.2 exists.
Right now, we just have main, and then we have stable slash 5.1.x, and then so forth.
So on January 15th, I will create a new branch called stable slash 5.2.x.
And then there will be no more new features and no more API changes in that.
so there will be no new deprecations, nothing will be removed.
At this point, it's pretty much stable in that you should be able to try it out
and try everything out at that point.
There is then a bug fix freeze, a beta release that we will do.
So at that point, we will stop backporting some of the bug fixes that are going into main, which are kind of unrelated to 5.2.
But then after that point, we still backport stuff in, but they will only be related to the new stuff.
So anything that was changed or added in the 5.2 that has an issue, that's going to continue to be backported.
And then even after the final, we still back put those into the monthlies.
So I'm not sure if that makes sense.
But roughly January 15th, no more new stuff.
And then just fixes going forward.
I mean, that aligns with what I've heard, but I've talked to Carlton and Tim and stuff.
So hopefully for listeners, that gives a little more sense of the magic.
I hope so.
I think it's worth saying about the stability policy at this point, right?
So what is it that gets backported to a supported version of Django?
Well, say it's an old one like 4.2 or 5.0 will be or 5.0 now.
What gets backported there is just a data loss bug or a crash,
something really serious and nothing else because you can't be backporting
changes to something which is deployed on loads of installations
that are out there running in the wild because you're going to break
some of those installations and so they don't get backported what gets backported is just for that
mainstream before that first eight months after the release bugs in the new features it when we
added i don't know the the postgres connection pool and it turns out that it's got a memory leak
well yes of course we'll backport a fix to that but not you know some fix that was released two
versions ago because people have worked around that by that time and you break their work around
if you fix it in a point release.
Absolutely.
And I think it's part of the reason why
I would encourage everybody
not to do the release from LTS to LTS
because if you went from 4.2 to 5.2
and you tell us about a couple of things
that were changed back in a 5.0 or 5.1
that have now caused issues
because you've only just started to test these,
It's kind of too late and we're going to be like, oh, what a shame.
And then you will only get those fixes, hopefully, if someone does them by 6.2.
Because if you're only going to upgrade them, then that's when you'll get it.
But it won't go into a monthly, it won't be backported.
So, yeah, big benefits of staying up to date.
Yeah, and if you're going LTS to LTS, it's going to be, so if you find a bug that was introduced after 4.2 and you find that in 5.2, you're not going to get it till 6.
exactly that's kind of painful i wonder if i could ask about the the jango knot program which
sarah you were very instrumental in setting up and still being involved with just in terms of
your life as fellows because i see on the jango news uh newsletter we have uh jango knots who
come in and talk about the uh releases sarah you started this trend but it's double digit every
week so what is that i guess what is that has there been an uptick in quantity or is it just
quality or um i i mean i just looking at the numbers see a change in contributions based on
that program does that align with your experience um it's really hard to tell because in terms of
uh the the what what what we mention in um the django news updates is the points
where things get merged right and that the the merging has a massive bottleneck in that there
are only a couple of people who have merged rights and they will always do uh they will
always do another review even if there is a review um and so in terms of like the number of
uh pull requests that are getting raised and that require reviews and that in theory could be
merged it actually um unless those things were really simple things uh which we can merge very
quickly it doesn't often massively impact like what we get through in a week-by-week basis
um but i would say that it means that there are uh like people that are engaged um in the the
process itself and trying to uh you know have new voices in into discussions that have been
been going on for a while. Um, and that, that I feel like I can see, uh, more so, um, than
necessarily, uh, the, the number of commits. Uh, but yeah, I mean, I think it's been a really
great way to, uh, encourage more people and to give them like a, a routine that they perhaps
didn't didn't see themselves doing before or at least if you're the kind of person who's just like
yeah i'll do it one day and this will actually give you the the um reason to to dedicate some
time and to get involved um but i'm curious what natalia thinks because obviously i'm very biased
well actually uh from what you just said which i agree uh but there is also in these programs
Not only Diagonal Space, also Google Summer of Code, there are mentors, whichever name
we use for them, which are experienced Diagonal contributors and will guide their mentees
towards ideally a successful PR being merged.
And that process alone helped the mergers, us, the reviewers, a lot in that we get PRs which have a high quality that are not, I mean, despite sometimes being complex or being non-trivial, we don't have any numbers.
but I will say that the review iterations that those require to be merged
might be less than if we will just get a raw PR from someone that hasn't been mentored.
So not only do they have the support in order to start to be involved with the community
in the various communication channels that we have,
but also they start with, I will say, a quality of their proposal
that is great and that help us a lot.
And regarding that, there is also, I mean,
Google Summer of Code and 5.2,
which perhaps, Sarah, you would like to mention a little bit
because it's all a little bit entangled,
what we have and the different features
and how these mentoring programs are keys
to the new features that are being developed.
right now yeah so uh this google summer of codes uh period we had three accepted projects
so we had um automatic uh importings of models to the shell uh which was a project that salvo's
been working on i'm pretty sure that we'll get in for 5.2 uh no more django extensions and run
server plus then well i mean extensions has other great things but that's for me that's always been
like the the big reason i put it in just it's such a pain to deal with the shell and your models so
that's awesome yeah it's really cool um and uh yeah i'm i'm pretty confident that one's coming
in that was mentored by um buffnash and adam johnson uh then there is a project by ben which
he's been working on which is like the oldest open ticket on in jang right it's like 373 or
something like that it's yes i have no idea if he knew what he was getting himself into
that one really is that one is this is pretty pretty intense i mean it's it's intense um
but he's been doing a really fantastic job uh and like the amount of progress that's been
happening in this topic you know compared to the past few years is is amazing so um
I think it's unlikely that we will see that feature in 5.2 but I'm optimistic for 6.0
but we'll see um there is then there is um a project by Shifa um which has been mentored by
sage uh which is also quite a nice thing so say sage originally added to jacross and jason field
in a google summer of code two three both four versions and i don't know this project um so
well but i think this is jason key transformations or something like this um and uh yeah we'll see
that will be a 5.2 6.0 candidate I'm sure um but yes so fantastic I'm not sure how many
projects we've had in the past but it feels like a lot and then there is actually there's a fourth
project um there is adding async support to Django Deep October which is mentored by Tim Schilling
and that project I believe is being done by Iman Pandey and from what I hear it might already be
done and released so yeah congratulations they're amazing this episode of django chat is sponsored
by talk python are you serious about getting better at python than web development they have
over 250 hours of courses including their new hdmx plus django course whether it's django core python
or tooling you want to learn you can save 10 and get a great course at talk python.fm forward slash
django chat listeners with hyphens level up your python and support the show with the talk python
course. The link's in your podcast player show notes now. Well, I want to ask about, so DjangoCon
US is coming up and I think all four of us are giving talks. Sarah, your talk is about what
hidden features in Django 5.x. Are there any that we missed that you're going to be highlighting?
Well, actually, I mean, when I say hidden, I mean, there's, I mean, I don't want to give too
much away. Yeah, sorry. Maybe that's too leading a question. But there's a lot of stuff that we
don't actually um add to the release notes at all um
So I want to actually give some of that work a stage.
So that's the idea.
And then, Natalia, I'll just mention you're giving a keynote.
What is the topic this year?
The Django Fellowship is the topic.
So when I – also, I don't want to give a lot away,
But when I got the position, actually, when I heard about the call for applicants for the Django Fellow, I had absolutely no idea what that was about.
And I read the call for applicants, and I made this assumption in my head around what was it about.
And I don't think it was that accurate.
And also people, I mean, in my environment, my friends and my family will ask me, what is that?
And there wasn't any clarity of what it is.
So I would like to present what the Diango Fellowship is and also its value and then some personal view and reflections around the fellowship and things that can happen around that.
Great. Yeah. I mean, I know from just being on the board that the role of the fellows is really hidden from most people.
So shining a light on that is important.
And I have to say, your talk last year, Natalia, was my favorite talk of the whole conference, the Inside Out.
That was an amazing talk.
So I'm looking forward to your keynote.
Thank you.
I was so nervous and had some technical difficulties.
I'm looking forward to having the opportunity to give it again in some other context because I think I will enjoy it a little bit more.
So at DjangoCon, Carlton and I are also giving talks.
My talk is on the Django user model, and I want to tee that up as a question to you fellows.
How do big decisions get made?
Because one thing Carlton and I have been advocating for is making a change that goes beyond a Google Summer of Code, beyond what a Django knot could do.
And so what is your perspective on that?
Because I think it was 2016 when there was a Kickstarter for Postgres.
Features were added, but it's been a while.
So could you share where you sit on these big decisions?
Like, let's change something.
Natalia, shall I go?
All right.
So just so people know, the fellows are not necessarily directing the future changes of Django.
We're not, you know, there with a whiteboard and deciding what Django should look like for 6.x, for example.
We're very much in the day-to-day maintenance of things and, you know, ensuring that the changes that go into Django are, you know, well-tested, well-documented and following the processes as they should be.
and it often means that when people come with suggestions to track and people often do they
raise a ticket when they've got some new feature suggestion or they want to change something
it's not uncommon that we say oh actually this requires a wider discussion with the with the
community and part of the reason is we are just two voices right we we have some thoughts we have
some opinions of course um but we don't necessarily know what's what's best or or how everyone is
using django in the different um ways that they're using it uh so in terms of when you want to make
your changes uh one of the advantages that you have is that and i believe his name is jake howard
or real orange one, has been working on...
He's just had a dep accepted to hopefully have
this background worker inbuilt solution in Django Core.
And I think that also had some momentum
also from a DjangoCon talk.
I'm not sure if that was just in DjangoCon Europe recently
or in one before.
And then he was working on a DEP, which, you know, that got like quite a lot of input and discussion around that.
At some point, once that feels ready, you can propose this gets voted on by the steering council.
And if the steering council votes to approve that, then that DEP becomes accepted.
And then you can now essentially work on implementing the API changes or the design changes that you had detailed in that document.
I mean, this is the idea of the larger decisions which require quite extensive reasoning and thought as to why we want to do these kind of changes.
because generally Django doesn't want to break things.
So it needs to be really justified when we do this.
And I would say, you're right, it doesn't happen so often.
And in a way, because of Google Summer of Code has,
they also write like a project document.
In a way, they've been doing a similar kind of justification
and research and stuff when they apply to perhaps add in,
you know uh composite primary keys as an example um but yes in theory we should be doing depths for
for all of these changes and that gets the the review from uh the community but it's not entirely
defined like what is the boundary of of when it's depth worthy and when it's not it's a little bit
gray but um but but like all like all natural boundaries every division in the world there
are cases that are clearly one side in cases clearly the other and a sort of middle in a bit
where we're not quite sure right that's totally normal i think what happens is we can't get an
agreement it's not just like normally 95 of ideas are either yes or no and everyone's on board and
then sometimes it's a bit more hang on this is a bit more you know and if you're at work and you
say can we implement this new feature it's not unreasonable for them to say can you spec it up
first yes right which is kind of what a deck writing the depths that spec it up first bit
i think we make it a little bit too formal if anything but the idea is right and particularly
regarding your question well uh one of the things that jake did that i think is super helpful for
something to get traction is to provide whatever feature or idea you are proposing as a third-party
package.
So currently, the Angle task is a package that exists that you can install and that
is getting updates and features and pull requests.
And it will also, at some point, when the Angle task gets merged into the Angle main,
it will serve as a transition package for all the versions of Django to adopt it
and then be able to keep upgrading Django and keep using the same interface for the background workers.
So having something like that for whatever you're planning,
which I'm very curious to know about, would be a good way, a good path forward.
I would say that it's more, I'm trying to be the cheerleader here.
I mean, Carlton has a third-party package, for example, Django unique user email.
Yeah.
I mean, so, yeah, the idea there is just to enable login by email by making the email field unique.
And I always felt that if you just want login by email, custom user models are a big, quite sledgehammer to crack that little particular nut.
And the reason why we didn't migrate auth.user back in the day was it was felt it was impossible.
But, well, hang on, you can just have this little bolt-on option
and there's your unique email.
And the same with the profile fields that I want to, you know,
I'm working on proof of concept there.
If you want to hide those from the model layer, you can, and so forth.
I think there is a route forward for auth.user,
which doesn't require every project already out there
to do a painful set of migrations.
There are more subtle ways that we could go about it.
And I think that just in the authorization end of it.
So when we had, a while back, Thibaut ran a roadmap workshop.
And the number one thing everyone said was, let's update contrib.auth.
Let's make auth in Django a better thing.
Well, okay, we need a way, we need a roadmap forward.
So what I'm working on at the moment is proofs of concept of, well, you know, we could perhaps go this way.
We could perhaps go that way.
And then I'm hoping that we can get the community and the very clever people in the community to help me think through the harder problems about, well, okay, if we're realistically going to do that, what about this case and that case and this case?
Because, you know, my proof of concept is something I knock up in an afternoon or a week, and that's not quite the same thing.
Well, because it feels like if I waved a wand, auth is one of the areas where Django is not as forward-looking as it should be, right?
I mean, for historical reasons, the model user models from 2003 or so, but not having
two factor auth, not having social auth, not having, you know, working with pass keys.
I mean, the current status is personally, I rely on Django all auth, which Raymond
Penner's has worked on for forever.
And I know he just got a grant that to me, that's kind of been a kludge that papers over
some of these problems.
But, you know, newcomers come in and say, this is way too much confusion around authentication, essentially.
So that would be the overall goal.
But my talk is going to be a lot more about the past and the present and then kind of leading up to the future.
But again, all this was in 2012, like all this happened.
You can see the discussions.
Things got heated and that led to custom user models.
And I think the argument that Carlton and I would make is that that doesn't really solve the problem.
but in practice, and I'm sure you'd agree, most people, separate from the logging in and out,
how you deal with information about the user, you either use a user profile model or you use a
custom user model, and that's fine to have a split, but that's deeply confusing to people I'm trying
to teach or people who come in, or it would be better if there was one way, which I know is hard
for the Django community to align around. So there's the model itself, and then there's how
do you attach information to it and there is a third one if you ask me which is splitting
authentication from authorization yeah so what would you do where's your wand what would you
natalia take off your fellow hat how would you fix everything i'm not entirely sure i haven't
given this like a serious thought but in my experience when working with the user
and a decent-sized service
might usually need to authenticate every so often,
but might need to authorize a user very often.
So the need to fulfill those different types of requests
is a little bit different.
So to me, the first gut reaction
is that we need to split those out,
being able to authenticate from being able to authorize a user to do certain actions
in a way that we can then, in production, deploy that with different abilities
and different constraints or different scalability features
because your authorization service will have usually a higher rate of requests
than the authentication service.
So my first instinct is to split those two in a way that I can scale them differently.
Yeah, no, I agree.
The other thing I'd really want to do is be able to like have kind of levels of authentication.
So, you know, you might log in with just a form and you get your accession cookie and
that's fine for browsing around.
But if I suddenly want to go into the settings and update my email, maybe change my account
email, well, maybe I need to re-authenticate.
Maybe I need to use my two-factor in order to do that because that's a kind of more high
risk activity and i to have grades of you know grades of who are you would be nice um so there's
lots we could do um there's lots we could do well so that's that's that's my hope that there's
momentum and agreement coming out of jingo con us that this is worthy of not just worthy of focus
but can have those discussions around okay what is what is the path is it you know can we you know
write it out on a napkin in the hallway on like what what might a depth look like what might a
third-party package look like to address some of these things?
The issue is that it's a lot of work.
It's a lot of work.
work. So it's, that's kind of the other piece where maybe the Django Software Foundation and
others come in is, it feels to me like something that might require some funding, which Django
itself hasn't historically done, but I'm not on the board anymore. So I feel like Django could
and should, you know, periodically find funding for major, major projects that the community gets
behind um but that's i guess that's another piece on the puzzle here but i feel i feel like that's
in some ways the easiest like if there was consensus and okay we could find someone who
could we could find someone qualified if there was agreement and we could find a way to raise
the money um for three months whatever the time period is to pay them to do that carlton yes
anything you want to add i get slightly well you know i just get cold slightly cold shivers hearing
you talk that because the battle scars of too many django decisions that didn't get yeah well
i'm i'm newer than you carlton and the fellows are newer than i am so on on this type of thing so
in django and you're daniele asked me a question off in after my talk about whether we dodged
sometimes dodged a bullet like django is very much like and not what was it about i can't remember
what it was about in bringing in um drf into core so five six seven eight years ago the idea was
yeah let's just merge DRF into Django core and now all this time later it didn't happen and
actually you look around you think the API space is so exciting and you know let's not just take
one thing and crown it let's let the the thousand flowers bloom and let's see how they all grow
and so Django's in a way in that sense Django's really slow and really painful decision process
actually saved us from doing something which would perhaps look too good at the time but would
have then limited us going forward and i don't know i think sometimes the slowness is good but
it is really hard to get these changes i don't know i mean you're you're you're there dealing
with it both of you all the time i mean it was what it's one of the hardest things of the fellow
yes i i for me the hardest is the lack of clarity on that because i i know now but i don't think
that we as as everyone is clear about how hard it is and how perhaps intentionally undefined is
and that to me is very frustrating and i feel that for contributors is also quite frustrating
because i think there are mixed expectations uh around that um that is something that i would
like to see more clear not necessarily more more streamlined or make changes more easy no but being
able to clearly state what would be the process and what it entails even though uh that says it's
very difficult to change tiago i know jacob cabla moss had some ideas on this a while back he's a
there's a thread on the forum about it and i'm hoping he's going to pick that up and push that
just to the next level at some point.
So if you see him, you should say, Natalia.
I might see him at DjangoCon.
I might say it to him myself.
I want to add in terms of dodging bullets,
I mean, templates, I think, has borne out.
So Django's approach of not embracing
a more full-bloated Django templating system
has now led to the fact that HCMX smoothly slides in
and we don't have our version of React
or something that we have to deal with.
So that's another example of staying small,
And there was certainly momentum, momentum, maybe 10 years ago around Django templating should do more. But the fact that we didn't, and it's minimal, and as painful, I mean, this is sort of like the, my startup, one of my startups experience was at this company called Quizlet, which is education flashcards. And it's grown and grown and grown, which has been great. But on the inside, it's grown in part because we couldn't ship new features, which was incredibly frustrating, and people left over it internally.
But it turned out long term that was best for the business just to like keep it going and not not change too much.
But when you're fighting, when you're in the day to day, you want to you want to do things right.
And so that you need somewhere to put that frustration.
It's a universal thing, I guess, even though maybe long term it's best for a project.
It's not best for the people keeping it going.
i mean the the uh it's the i think people don't appreciate that it's not like the issue is is that
we need to get 20 people in a room and just talk about it because that's usually what will happen
in a in a company is that you've got you have a limited number of developers in theory you could
do you mean even with a very big team you could do some kind of like off-site event and you talk
about it and blah blah blah and you get everybody on board and fine that's what you're doing now
and that kind of breaking changes is something that you are willing to do and that you will
be able to do that but with Django in reality actually the number of people who discuss a lot
of the changes in quite a lot of depth is a relatively smallish group who are regularly
adding their voices into the discussions I mean it's not unusual that we'll get new people with
new ideas but they're not necessarily adding their voices to other such open discussions and
and I think with the stability element of it even little really little things as to like how we've
named it and that someone wants to change that in theory we would deprecate it to add a a better
better name and so it's not really a place for experimentation that we can just you know yeah
let's just throw it out there and see what people say necessarily because you know it'll take eight
months or longer for deprecations to really come into business and um yeah so anyway it's it's
definitely a lot more um complicated than what people are perhaps used to in their in their day
jobs and if we you know cycle back to janga not space i would say that's one of the main things
is for me is really this kind of expectation management and just kind of talking to people
about um you know what what is kind of normal in with django contributing but perhaps this is is
normal in in many open source contributing spaces around you know how long things take how long you
should expect before you you ping someone for a reply or you know the discussions about you know
whether you've you've actually because two people thought that was a good idea does that mean it's
a good idea and all this kind of stuff and yeah anyway it's it's definitely it's it's tough
and i don't know how to make it easier um but yeah it's definitely tough there's a online um
guide to running an open sales project by the curl maintainer um and it's called everything
curl and in there and he talks about running the project and he's been doing it i know
30 years or something something obscene amount of time now but he's got a whole chapter on people
and he's absolutely clear that the people's side of it is the hardest problem is the hardest bit
it it just is like this technical problem yeah we can bash our way around that but
negotiating the different requirements and the different needs that's that's the work that's
I mean, I think this is relevant, too, because yesterday it was announced that Laravel, which is the PHP framework, which is probably one of the ones most similar to Django, raised $57 million from Excel to do cloud hosting and stuff.
And so there are inevitably the questions about, well, why can't Django do things like that?
And it's important to say, well, Laravel is one person, this guy Taylor.
I mean, there's open source, but it's his thing.
He can decide what he can do.
And part of that is monetize and do all these other things.
And while it's easy to sort of look and say, oh, I wish we could move fast, there's, I mean, I worked with this project called MeteorJS for a couple of years that was a VC-funded framework that was trying to make money off hosting, and it's gone, gone, right?
So when you raise money and you go fast, you end up often not working in the long term, right?
The fact that Django's, what, 18, 20 years old is because of this slowness.
19 years.
And also, I think also it's important to mention the fact that because Django doesn't rely on one person, it can have longevity, right?
At some point, all this stuff eats away at you or your life changes and you don't want to do it, but Django can persist.
I mean, look at Jacob Kaplan Moss, right?
He's a good example, I think, right?
One of the creators, deeply, deeply involved.
And he's always been around, but he was a little bit less involved for a number of years.
And now he's back on the board and doing things, but it's not, you know, it's not, it's not the Jacob show and he wouldn't want that. So I guess that perspective is important to keep in mind as easy as it is to see the shining lights. Like that's kind of why we're, we're still here and yeah, things, but, but there is a, there is a cost to the, the internal side of, especially being a fellow, right? Like, you know, how does it, is it something that people can only do for five years? You know, it's five years too long, right?
Maybe there's ways that DSF, the community, can do to not have it bubble up and feel overwhelming at a certain point.
I don't know.
Maybe that's a hallway track discussion.
We'll see.
So I think we're coming near the end.
Are there any topics for either Sarah, you, or Natalia that we haven't mentioned that you'd like to raise?
Sarah, why don't you go first?
Well, we already talked about Jaggernaut space, but I will just reiterate it that we're coming towards our third session of the year.
I think by the time this goes out, the applications for Jaggernauts will be closed.
However, hopefully there will be sessions next year.
And really, as with everything, it's more gaining the mentors,
gaining the volunteers to help run these sessions.
That is the bottleneck.
So if you want to, if you have capacity
and this is something you'd be interested in doing,
please do reach out to the organisers
and I'm sure we'll do something next year with you.
Okay. And for me, on a similar topic, something that I have seen and I'm now extremely convinced
is that Tiango is progressing and it is what it is because of the contribution of all the
community and the people that tries to help and make the framework remains current and
grow. And there is, how things are right now, I don't see a way for the fellows to keep
it progressing, and fellows on the run to keep it progressing and being stable and something
that gains future.
We desperately need the community to be involved to help in whatever way that you can, either
be writing code, documentation, mentoring, or doing reviews, doing back triage, attending
to conference and talking to us and bringing ideas i think that's key key to the point that
it's the difference between the angle remaining and not remaining so um that is also something
that i want to touch in my talk how i think that's fundamental and we i think that if
i could ask for any more resources to be put somewhere that would be one thing that i i think
we should prioritize carlton do you have any as a fellow alum comments yeah no like that's
absolutely true i always described it as being the janitor right you keep the floor clean like but
django is progressed by its contributors and the the purpose of the fellows is not to push the
framework forward the purpose of the fellows is to give the space for the contributors to
get on and do the things they want to do rather than i don't know trying to merge four patches
onto four security patches onto five branches just to get them all out on a security race.
No, that's the fellow's job. That's not, you know, the contributor's job.
Yeah. So I absolutely agree with that. I, you know, we swept the floor, right?
Thank you both for coming on. I hope this becomes a regular thing because one of the goals
of this podcast is to shine a light on the community. And I've, I felt like the fellows
kind of operated in the dark historically. Um, so now that people, if they, yeah,
Yeah. If they didn't already, they know who you are, but they also understand how the role fits
into the community and things everyone can do to make it more maintainable. So with all that,
we'll have links to everything. We are at DjangoChat.com. And again, thank you both for
coming on. Thank you for having me. Thank you very much. Thank you so much. All right. We'll
see everyone next time. Bye-bye. Bye-bye. This episode was brought to you by TalkPython
and their new HTMX plus Django courses.