Transcript: Kolo for Django - Lily Foote
hi welcome to another episode of django chat podcast on the django web framework carlton
gibson joined us by will vincent hello will hi carlton hello will and this week we've got with
us lily foot thank you for joining us lily yeah it's a pleasure thank you for coming on we always
ask um so we'll get into what um everything about you and all about django but we always ask we
start off about how you how you found Django in the first place so you know it's kind of the
origin story so let's go with that how how come you're here uh yeah so um I uh
went to university for mathematics kind of got burnt out near the end of it and decided to
try learning programming um uh that led to me thinking uh now that led to me uh picking up
python and um then i was like um how do i uh how do i make my own website and i
looked around a bit saw that django was quite recommended for websites with python so tried
that and then ended up turning that into a career okay so the easy way then like just back
yeah um yeah i uh had a couple of um junior level jobs and then um ended up in oxford
uh for a company called in kuna where there are a bunch of um other jangri people um
Mark Tamlin who was a
core dev for a while
and
Charlie Denton and George Hickman
and just being around
them
really
kickstarted my involvement in
open source
it's very
inspiring
I mean Oxford's got a kind
of Django connection right
because i think torchboxer yes torchbox as well um uh yeah i um never worked with them but i am
aware that they're around but there was a were there meetups and things like you know is there
yes um yeah so george who i mentioned uh ran the oxford python um meetup for a while um
he's since moved away so it's run by other people now but um i remember i tried running some janga
girls events in oxford uh we managed to do it successfully twice which was good well super
so i remember meeting you in heidelberg i think at uh janga con europe so yes you know was was
that your first where you've been before and you've been uh seem to be quite well established
to that point yeah so i think the first jango con i went to was um cardiff in 2015 okay um i'd been
to some pycons before that as well and then yeah i've made pretty much every jango con europe since
um except the first online porto one i didn't go to have you been able to primarily work with then
Python and Django throughout your career, or were there any detours into other languages and
frameworks? From the start, it's been Python. One of my early jobs was half Django and half
Kivy, the Python mobile framework. In recent years, I've got into Rust a bit.
that seems to be the natural progression well it's just you know it's not hard enough let's
make it more difficult the um so okay so the way i kind of got to know you mostly was you're like
oh yeah i i'm working on this this db defaults ticket yes you've been working on that for a long
time and that's finally gone in for django 5.0 yes can you tell us a bit about it this is don't
know what it's what's it for you know and perhaps the backstory of getting it in because
you know spoilers that store that ticket was open forever yes so um
db default is um defining defaults for a model field so that the database knows that that should
be the default um for most of django um you were able to define a default but that would
only be used at the Python level.
So Django Zoram would set that explicitly
before sending it to the database to be saved.
But now we have a way of telling the database
that this is what the default is,
and whenever something's saved,
the database can put that default in for you.
This is really useful if you're doing stuff that's not Django
with the same database as the one that you are using Django with.
And so it's quite a useful feature.
I think I picked it because I was looking for a RM ticket that was wanted.
I think I was looking at the old tickets because that's always an interesting place to look.
And by the time it landed, it was the second oldest open ticket.
Fantastic. So I think you've undersold it there. I mean, DB defaults aren't just useful.
So it's all right. So the classic example is the date now, right? I need a date added now,
I need that something. But then if I go in and I happen to be editing not via Django,
if I access, you know, by pandas or I access via any other system that, that default is not
enforced. And to have it at the DB level saves me a bit of work at the, at the Python level.
That's one thing, but I think, you know, if I take my database seriously, which maybe I do,
maybe I don't, but there are lots of people who do. If I take my database seriously,
Having it at the DB level adds a whole layer of security
that's significantly better, right?
Yeah.
I'll take your word for it that I'm underselling it.
Well, I don't know.
I think it's a major feature, no?
Yeah, I agree.
Okay.
Well, and clearly you weren't scared off by the ORM
because usually that's the place that people go to last, not first.
Did you also progress through other open source Django things before that, or that was something you were dealing with for work and so decided to just jump right in?
I think the first RM feature I added was the greatest and least query expressions, and that's something that I needed for work.
and then i just kind of stuck around and was like yeah let's let's keep doing
arm things and i think the vast majority of my contributions have been in the rm at some
some somewhere or other i think there's quite a lot of value in just sticking around like i mean
like the db tickets how many how many jango consprints were you just chipping away at that
chipping away at it chipping away at it yeah um quite a few i i do do um uh conference sprints
based development i go to a conference get very motivated hack on it for a bit at the sprints and
for a few weeks afterwards and then take a break until the next conference comes around
helps balance my
against burnout and stuff
as to how many
it looks like I
assigned myself to the ticket
in 2020 though I did
CC myself earlier so maybe I was thinking
about it earlier than that
I'm pretty sure that in
Heidelberg you were working on it already then
maybe
I'm not 100% but I've got it in my head
it might be that in Heidelberg I was still working on check constraints
oh yeah okay so okay so let's talk about check constraints because
um what so django defaults um in the database in and of itself it may you know whether you
think that's a groundbreaking feature or not i think it it's part of a long line of things that
have come in the database from indexes through constraints through comments in the db through
database defaults through hopefully we're going to get cascades yeah coming up and all of those
are kind of enriching the the ORM and yeah you'll you know you you're probably as capable of anyone
who's speaking to that topic yeah um yeah check constraints is a um another one where um it's
check constraints database defaults most of the ones that you mentioned i think
were all actually unlocked by the um expressions refactor um
now when would that have been probably around 2015 2016 um expressions lookups lookups transforms
um i think everything that i've worked on since has been made possible by that
right so it's kind of like eight years of slow progression building on on that change yeah
it's i think it's probably the most um uh impactful thing that not as many people know
about as they should okay i mean so i've often thought that the ORM is really hard to get to the
the details of so you know when you first start off you can learn to filter you can learn to
um you know create you can learn to get or create you can you know do some basics and you can do an
exist but then there's kind of a whole load of other stuff that yeah what is the learning pathway
there like how do we it's kind of like there's this there's this cliff that people don't jump
off and how do we how do we help them to do that oh that's a good question i think
the thing that really
helped me was
I mean
one thing that helped me was I got in early-ish
which is a bit tricky for
other people, but the other thing
is just I went to a lot of sprints
where a lot of
experienced ORM people
were already
so I was just around them and able to talk
to them and just learn from them
Right
How to do that if you can't get to
conferences trickier um but you can always watch conference talks and stuff like that
yeah i think there's some gold absolute gold dust in there if you go through the past conferences
and find the orm talks and there's some really you know really good ones i've often wondered
if you don't need to know the sql in order to really understand how the orm is working
i uh i will say that for pretty much every database feature i've worked on i've learned
the bits of sql i needed to know while working on that ticket and then half the time i've promptly
forgotten them afterwards well that's why we abstract it into an orm exactly well carlton to
your question i think part of it might be people when are they presented with the problems either
they don't know that it's something that the orm or the database could solve or they're just
perhaps working on applications that have other needs i suspect that's part of it
or maybe i'm just being naive and at a certain scale all these things come up
in your day-to-day work well let me let me respond and then perhaps there you can say what she thinks
but the um for me it's there's it often comes up is this um sort of n plus one problem where you've
got the lazy related lookups and that and then so to be able to work your way around annotations
and then you know filtering on the annotations then doing the values to get the group by and
that stuff's not really documented but you so you spend a lot of time learning it and i just
anyway it's but everyone hits those issues right yeah i think it's a case of
you hit them you search for help maybe you post on the forum or used to post on the mailing list
or ask in discord and um maybe someone helps and then you've got something for your toolbox or
maybe it's a colleague at work i think it's a lot of this is just community knowledge that you
pick up by being around and talking to people who've been there before you so you think it's
just reps it's just you know time on the time on the exercise machine yeah just um and learning to
ask the right question or learning how to find out i mean you can also
So you can look at other people's code,
you can dig into the Django code base if you need to.
How do you learn anything programming?
Yeah, try to bang your head against the wall for weeks.
Where's the textbook?
Oh, there's no textbook.
I guess I got to create my own through conferences
online stuff yeah i mean do you know his chat cheated big sorry i think documentation is
actually quite good um it's i think the maybe the biggest problem is that there's so much
documentation that it's a bit difficult to find the right bit of it but uh search engines are
not too bad for that i think there's a bit of it where it's like okay so i've spent a last hour
reading about you know query api or something i don't know whatever and it's like well what do i
use this for i mean like window expressions are kind of quite powerful and there's quite a nice
doc on window expressions and how they work but actually you need some good examples of how to
use them and and whatnot that i kind of think are missing i think there's a there's a gap there for
that kind of um worked examples of how of these more powerful orm features i don't know
yeah um i'm open to seeing more worked examples i don't see how that could be a bad thing
well lily can i ask in terms of do you is there an area of django that you seem to focus on in
your work i mean obviously we're talking about the orm but have you like primarily apis and
back end have you done templating any front end stuff or do you have a niche um yeah so the
majority of my career has been pretty much jango back end um stuff so anything between the database
and the template layer probably um with a preference towards the database um
yeah i have dabbled with front end but it is not my comfort zone and how much of that is apis as
opposed to a monolith type approach i've done both i think um a lot of what i've worked on is
well yeah it's been a mix um there was definitely some api stuff um um and then a more recent job
but it was very much templating.
And I think there were four monoliths all talking to each other.
It was quite the legacy kind of place.
Okay, fair enough.
Do you have thoughts?
I mean, so one thing we've talked about,
and especially Carlton has mentioned,
is serialization and Django as framework.
If you could wave a wand,
how would you provide serialization to Django itself starting today?
That's a good question.
um i think from for what i've done with it rest framework has been pretty good um there's a few
bits where i'm like okay that's a not quite how i would have chosen to do it perhaps
though i can't think of any examples this is thinking back to the last time i ran into that
um but a rest framework does a pretty good job i i remember uh what was it that i used before
rest framework tasty pie i think and rest framework works so much better for me um it was a more
explicit tasty pie was a bit too magical if i remember correctly i i like the reasonably explicit
nature of rest framework i mean so one thing that's comes up when you start talking to people
is they like the the the newer um type hint um inspired um things like um pydantic or
attas or yeah yeah and they like that um the quickness of it the speed of it you know where
if you've got a very simple case you know um name um string um age you know integer like it's just
it's really quick and speedy but then you know same with attas same with um pydantic if you need
um the more complex cases where you need to add transformers or validators or you know whatever
on then you end up adding a field descriptor anyway and it doesn't end up looking too much
different than what you've already got um so it's kind of interesting as to if there's a sweet spot
for bringing in the newer sort of syntactic sugariness but you know it's no point throwing
out the whole stack for just a little bit syntactic sugar so there's a that's kind of
where i'm at mulling it over in my mind i don't know that makes sense i've not actually um really
had a chance to play with that stuff um the past few years i've been um not actually really doing
django itself that much though very much in the ecosystem because you you've been working on um
on colo yes so tell us a wee bit about colo yeah um so colo i describe it as a dynamic code analysis
tool. It was invented because Will Klopp was frustrated with traditional debuggers,
which you have to know where to set the breakpoint. You have to understand your codes a
certain amount to be able to use them well. And he was like, I want something that will just give me
a lot of that context without having to understand the code beforehand. So he started
building Colo and we met online at the Jamcon Europe 2020 online sprints, online conference for
in Porto and we got to talking and I was trying out contracting at the time so I
So we decided to give that a go, and it went really well.
It was a lot of fun working with Python's introspection features
and working out how to extract useful information from people's programs
without being too slow and yeah I eventually went full-time with colo
because it was just simpler and I was having so much fun with it and that's
also how I got into rust as well we were looking for a way to reduce the overhead
of having written in Python originally tried scython at one point but didn't
really get anywhere but yeah tried rust and was able to get that speed that we were looking for
which is really good well i remember carlton you were there too um will's talk at jango con europe
this year and it's we'll put a link to it i mean he got a standing ovation for that talk i've never
i've never seen that at you know all all the jango cons i've been to i've never seen that before i
I mean, it's quite a jaw-dropping moment to see it in action.
Give a bit of context there.
So what he did was demoed Colo's ability to generate Django tests for you.
So he made some requests.
So you have Colo running.
Is it in the VS Code debugger as it's running there?
Yeah, so Colo is currently a Python library and a VS Code extension.
they work together right so you it might just be that you have the library running and it would
capture the the um the request but it captures the request and then it's able to say right i need i
want a request for these i need i want test cases for these these requests that i've made so you're
clicking around in your application and then it does the whole um you know gets the test client
configures it with the right parameters you know does the request puts in some some dummy asserts
and then you can customise those to check the exact things
that you want to check.
But it's like, oh, yes, that's the really sort of repetitive bit
of writing tests for Django, right?
And it just went boom.
And it's not, one point he made, it's not probabilistic.
It's not generative.
Like, you know, you might get out of Copilot
where it's quite often wrong.
It's fully static, right?
It's fully deterministic.
Yeah, that's the thing I'm focused on at work at the moment
is trying to improve the reliability of the test generation
and add more features and stuff like that.
It's really good when it works,
but there's an awful lot of edge cases and stuff.
Right, yeah, I can imagine.
But yeah, we're hoping that we'll be able to get it
into a really solid place in the next few months
and it'll provide a lot of value to people.
Okay, well, looking forward to that.
Any chance of getting it as a standalone app
or is it tied to the VS Code extension?
You want it with BBR, right?
Well, exactly.
I keep nagging every time I see Will.
I'm like, come on, come on.
We have some ideas about having a web UI to it,
either an online service or something that runs locally.
We have some work-in-progress stuff around these areas,
but I can't say when they'll be launched.
Okay, well, maybe I can hold on to my glimmer of hope.
Well, if we step back a second, I'm curious.
Testing is one of those, you know, it's like testing, deployment.
Those are kind of the two big things that I always want to check in with
people and how they're doing it how how have you seen testing like how do you test django
uh projects and how has that changed over time if you could speak to that right because that's
i'm curious your example because i feel like everyone has a little their own flavor
how it's actually done yeah um i mean i have long been a um fan of test-driven development
maybe not purely strict I often bounce back between writing a bit of code and writing some
tests but I try to have it have them inform each other I think Django testing is often in the
integration test realm especially when you're doing pretty standard CRUD stuff
because the stuff that you really want that fine grained unit test stuff for
It's the custom business logic that is not so entangled with the database and so on,
which is relatively rare in my experience in Django projects.
It's all a bit entangled with the database at least.
So you end up with some sort of integration test in my experience.
It's that fat model thing, right?
Yeah.
You sort of, I've got a bit of business logic,
but I'm going to attach it to my model.
So I need my database.
Yeah.
Or even you, nowadays with a lot of the ORM features,
you can even push that logic into the database,
which means that you pretty much have to have a database
as a dependency for the test, at least.
Yeah.
I personally am a fan of the request factory
and skipping middleware
and just putting the request into the view and so on.
But for Colo's auto-generated test,
we've been relying on the test client a lot
because that matches what we recorded better.
because when you record a local request response,
that would go through the middleware,
so it makes sense to test it going through the middleware as well
when auto-generating.
I think it's probably the more common usage pattern as well.
I think testing views in isolation is kind of more advanced or more niche.
I do prefer being able to have that extra control
and reduce the overhead,
But yes, the test client is easy and often good enough.
And then PyTest, I assume, is also part of your kit?
Yes, ColoZone tests are run using PyTest.
And yeah, I like PyTest a fair amount.
I mostly like the tidier asserts,
and I use the fixtures a little.
But I wouldn't call myself a PyTest expert.
There's a lot that is in there that I just don't use.
How about coverage?
Oh, I love coverage.
Coverage is amazing.
That completeness, yeah.
Yeah.
Frustratingly, for colo, it's actually really difficult
to get 100% test coverage, for the same reason
that coverage itself really struggles to get a 100% test coverage
because the Python API that we use,
in our case, sys.setProfile,
in coverage's case, sys.setTrace,
they're similar with a few minor differences.
They can't introspect code that is running in one of those hooks.
So coverage can't introspect its own code while it's running.
I've had to work around that and it's um a bit frustrating but oh well there is the in in 3.12
the um um uh new uh is it I forget what it's called is it monitoring which
It might allow for introspecting that stuff.
It's been a while since I've looked at it, so that might have changed.
But fingers crossed we can get better coverage out of that.
And you mentioned integration testing.
Do you do anything with Playwright or any of those tools, or is that less applicable?
I don't think I've ever used Playwright.
Okay.
I mean, that's more for, like, testing JavaScript and, like, you know, did my Stripe payment go through trying to –
there were some talks at DjangoCon US about it.
I think that's a dominant tool. Andy Knight is a very big advocate of it and had a keynote, I think, one of the days on it.
Like I said, I've dabbled in front-end. It's not my comfort zone.
Yeah. I just pushed that once more. HTMX, have you at all played around with that or is that cropped up in this template-only projects?
I have not, but it looks pretty shiny from where I'm standing.
Honestly, I think if I had a reason to do some front-end,
I would look to see if I could use HTML for it.
But, I mean, my front-end is VS Code at the moment, mostly.
so it's what works in vs code which is a lot of typescript oh fun
can i ask you a question about russ can i ask you yes a couple of linked questions can i ask you
sort of what draws you to it what do you like about it what what do you find difficult etc
and then swing swinging from there just keep in mind it's like how do you how do you find it in
relation to coming back to python and then the typing efforts in python because i'll tell you
my response then you can just bang off is spend all time writing properly typed code in rust and
it's good fun it's hard and you've got the compiler and it's all this nice and then i find
typing in python to be deeply frustrating and it doesn't do it's all it's all work and no promise
no no you know or that's how it feels as i come back so with that as a as a sort of blur how do
feel about rust and you know what do you like and what lessons can we draw okay so i love rust um
it's it's high level enough in a lot of places that it wasn't too big a change coming from python
for me the thing that really helped with that as well was that i had a very concrete use case
that i understood inside and out um so i just being able to gradually port the bit the python
implementation of colo into rust it's a really smooth way to learn rust yeah you need something
concrete because otherwise the the you don't write the types and you don't you know it's a bit like
and and i was able to just okay what's the smallest thing i can do to have it still working
but more of it's running in rust and i just iterated on that so the amount that i had to
learn at each point was actually very small it's just okay what's the next little thing i need to
learn okay um uh i i have discovered that i really like um statically typed programming
um when it's got all these modern ergonomics that rust has um sometimes it's still a bit
tricky to work out what the right typing should be but once it's once you've got it it really
just works and i absolutely agree with you that the experience of optional typing in python and
typescript to the extent that i've worked with typescript it's it's just second class compared to
something that's thoroughly integrated in language i find i find myself writing django and think i'll
throw in some typing i've thrown a bit of typing because you know why not and then i get deeply
frustrated with it and just like no i'm ripping it out so i just don't want this it takes all the
fun out of writing python yeah and it's not like dislike rust i love rust but python typing ain't
it yeah uh yeah i think i haven't worked on any of the really big python code bases that want
typing but in my experience if you're on a small project typing in python isn't really worth it
well you have to say something now we'll just let that no we'll just let that stand i mean
i'll give you an example from um neapolitan trying to type um neapolitan crud view so that
the set when the model class is you sign them so it's a it's a it's like a django thing right so
it's a view and you assign a class place view and you assign a model class as the model attribute
and then it's got um at various points you might use self.object so you know on a create view at
the end you've got self.object or on a detail view you fetch the object to begin with and then you
render it to the template so self.object has got the set is an instance of the type that model is
and there's just been literally no way of typing that in python um without typing something like
class my crud view square brackets my model you know model equals my model object my model and
it's like you've typed my model 40 times in three lines it's like this is not i'm not doing it i
can't i'm not making any person write that i wouldn't write that no one should ask anyone
to write that it's just it's not good yeah yeah in in colo uh in uh we do actually still use mypy and
typing and my experience is that like 80 90 of the time it's just busy work to tell cut
uh to tell my pipe what i already know um five percent or something um it's okay
my pi is actively stopping me doing something that i know is right
and then the rest of the time it actually catches a small mistake okay yay it's
Now, maybe the benefits would be more apparent
if I was working with more people also working on the code base,
but it's me and Will, basically,
and I pretty much own all the Python and Rust code,
so it's just for myself, really,
and it doesn't really feel worth it.
Yeah, okay. Interesting.
Okay, let's move out before the lynch mob arrive at the flaming torches.
No, yeah, I don't have a dog in that fight,
but I know that's one of the things that comes up to the steering council all the time.
Yeah, anyways, but I don't have a...
So I wanted to ask you about Janganaut.space.
Oh, yes.
You were one of the navigators on the first pilot program that's just finished.
So can I ask you about your experience there?
your thoughts because yeah from the outside looks like a wonderful thing yeah i i'm i'm really glad
um i took my part um i think uh sarah boyce uh was the person who um asked me if i wanted to
be a navigator and i said yeah all right um and yeah it's um it's been good um it was i had
three mentees and they all got stuff landed in django and um i'm glad i did it was um good to
see them uh getting this stuff in and having the confidence to work with Django and so on
and could ask was it a big commitment for you as a navigator because I think there's a billion
people listening to this podcast who would be qualified to do it and we've had the organizers
on you know Sarah come on talk about it and pick it up so but you who played the navigator role
what did you have to do what if you know someone's like well maybe i could be a navigator what so
what's involved um yeah i we scheduled a once a week catch-up call with my janganauts and
that ended up lasting about 15 minutes most days um so that was fairly low commitment the other
thing that i did was i tried to keep an eye on the pull requests that they had and give initial
review um and uh i think that went fairly smoothly as well um the time commitment from my point of
wasn't wasn't too onerous so if somebody's in doubt yeah go for it you can always um drop out
from doing it again if you don't like it so will you will you do it again or are you going to step
out i i i have um said that i'm happy to do it again so okay because i think that's one of the
things that's been discussed is the idea that not having the same people every every time you know
once twice three times and then step away like a tag team sort of thing um i keep it fresh i also
said that if if they had too many people wanting to be navigators i was happy to step back so
and i haven't heard yet whether that is the case so we'll see okay well i don't know is i forget
what the deadline is but i i suspect there'll be a lot more applicants uh for this second the
but the first kind of open open round than there were the first time so i imagine they'll be
yeah we should have one of them on to me oh actually we're going to have um sarah on
uh coming up soon so we can ask her to give us a recap of it i think in yeah sarah sarah's going
to come on and talk so it's all right we had sarah b before oh yeah sorry yeah yeah two sarah
sorry sorry yeah sorry django sarah con yeah
nice one question i had for you actually i don't know uh on orms and it sounds like you
primarily work with django but have you had a chance to look at any other web orms and take
inspiration or um was that part of your process or is you've been mainly fighting with sequel and
django i it's mainly been sequel and django i looking at other other work in this space is
something that does sound valuable but it's not something i've got around to doing yeah yeah fair
enough yeah i'm just a bit too focused on okay what's the thing right in front of me or or i'm
taking a break until the next conference depending on my mood yeah well that would be it would be i
mean carlton you can probably maybe speak to this i mean sequel alchemy is certainly historically
has been spoken of as having some features that the jenga orm does not but i don't know if it's
as active as the jenga orm is i suspect not but i i can't speak to that yeah who knows um
no i'm not an i'm not a big orm depth expert so i've used sequel alchemy a few times and thought
yeah it's it's it's an orm um like i think the big thing is that like um jango's the jango orm
is slightly more um objecty if that makes sense like sequel alchemy that doesn't hide away the
sequel quite as much like aware that you're building a select query or you're aware that
you're um building whatever is django it's not quite so clear um so i don't know i don't know
yeah i think django is slowly moving more in the direction of matching the sql a bit more
explicitly i mean all the expressions are now more directly named after the equivalent sql concept and
check constraints that's named after the database name for it whereas early stuff like filter
is more our own naming so there's some value in matching up well to the database concept that
you're implementing that we've been doing in more recent years well i have one more carlton and then
i'll let you fill up the time but uh so colo obviously it's so we had david kramer from
sentry on a little while back and he was talking about how sentry developed initially as an
improved django debug toolbar and in a sense colo is also like that so my question to you is
beyond where it is to now where do you see potentially going to you know in the future
if things keep going swimmingly my personal wish list for colo is i want us to be a go-to tool for
local development um i want us to have a good story for not just django but um flask fast api
maybe even scientific python though i don't know if that's possible um that's where i'd like to go
but um i don't know if it's where we'll end up going
I'd also like to be able to
I'd like to be able to
have a way of people contributing plugins to it so that we don't have to do all the integrations
um that's something that's always simmering in the back of my mind how are we going to do that
but at the moment the test generation is our main focus i think so that's where a lot of our
thinking and um development time is going at the moment yeah because the the visualization and the
drilling down and the jumping to the code that's all in place right i mean it's you know it's quite
an impressive little tool to be honest yeah well no i mean just thinking on that like the question
is like at some point it has there has to be a business that too towards it so it's moment
colo is free um and i guess that the sort of um the big one is teams right you is to be able to
provide some kind of help at a team level where you know startup 5-10 developers they can get a
subscription yeah give it to everybody and you know yeah we have some small dabblings in that
direction but um nothing very concrete at this point um but yes i would i would love for curler
to be self-sustaining yeah that gives it the longevity no indeed well we've been not doing
nothing but asking you questions is there anything you wanted to speak of since you're on a in the
any things that are of interest or with work or the community you wanted to mention
um i know that's a big big one i just threw at you so it's fine to it's
we've mentioned a lot of what's on my mind at the moment um
uh i guess there's there's been a fair bit of um conversations on um the forum and discord
recently about uh consensus and how stuff that um a lot of um suggestions to for changes to jango
going at the issue tracker and a fair number of them just get accepted and that's great
But when they're rejected, the response is, okay, if you disagree, take that to the forum or use it to be the mailing list or whatever.
And then it feels like it can be a lot more of a draining process to try and make your case and get something in.
And I think my wish list for Django going forward is that we make that less draining on contributors somehow.
When they've got an idea and it's not immediately met with, yes, let's do that.
find a way to make that smoother and i'm hoping that we can improve that experience somewhat in
the future yeah the the default has been for many years that um a sort of change required a consensus
in favor of it yeah and so the burden of the burden is on the new feature yeah so the the
default is is no basically i mean you know to basically any change um and that's that can be
massively frustrating when that's the feature you want yeah um i think one of the things that
has kept me around in django is i've largely only picked things to work on that were already
accepted if i'd come along with a particular feature that i particularly wanted in but i was
met with resistance i might not have stuck around so easily yeah so just to the flip side of it is
of course the stability yes is the the the reason why the historical policy was you know requiring
the consensus for the change was the keeping django stable and if you i was on a the django
developers mailing list searching for some things i've came across a thread from i don't know 2015
where there was massive gripes about the massive churn
between versions and the difficulty of updating.
And looking back now at 2023 to something from 2015,
you think there's no churn.
Like you might, oh yeah, I have to tweak a setting
and I've got two and a half years to tweak that setting
before it becomes pressing.
It's really not, it's not a burden.
And most times it's pip install, that's you, Django, run your tests.
Oh, it's done.
come on the latest version took you 10 minutes that wasn't the case yeah that really wasn't
yeah i i i have some memories of upgrading back in the 1.x days i do remember it but i think
perhaps we've overshot and gone a bit too conservative now yeah possibly possibly well
one thing i've gone i say uh to what you were saying lily one thing i've taken heart with is
Paolo has this idea of Django sprints.
Oh, yes.
He just posted another article about pushing that forward because, yeah, there's no reason why it has to just be at the end of DjangoCon conferences.
And so perhaps I hope that that becomes a thing and that could be a way where someone, even if it's turned down, they can still meet up.
And, you know, there's nothing like in-person progress to or in-person to make progress or, you know, talk it out in a way you can't even on the forum.
So perhaps that's one way.
Yeah.
i i hope so um yeah there's yeah there's been a number of things recently i mean i guess
grand scheme actual raw numbers probably not that many but the it feels like a lot because
there's so they generate so much discussion and it feels like such an uphill battle
yeah it can be it can be just like long grass and it's like how do i move this feature
forward yeah it's like not sure i can or not sure i can quickly um and that first interaction is so
important when you just it takes so much effort and self-belief just to put it out there and then
you're you're hypersensitive to the response yeah and unfortunately yeah it can be crushing even
when someone who's just busy just says no yeah and they don't so there is some but you know
jango nut programs and others we can see that there are people and faces and
the community is friendly even if the interfaces aren't always as friendly actually that was one
of the points that sarah boyce was making about um she's a big fan of the discord and how that
sort of interaction more aligns with i guess modern communication and certainly is more
friendly than just an email service email listserv yeah i definitely agree um
i also think that for better and for worse django has a reputation of i mean for better it's really
stable and um uh slow moving but also for worse it's maybe really missing out on um opportunities
it could be providing to.
Is Django going to continue to be picked for new projects?
Some people I've talked to think,
no, you're only going to pick Django
if you already know it or it's a maintenance.
People have been saying that for a decade and a half.
Would they pick instead?
Is there a default though?
Probably something like fast API
or something even not in Python.
But I mean, yeah, it's as old as Django.
It's like a hacker news post.
Django still exists and it works.
Yeah, it's bad.
There's something valid there, though, right?
I mean, I mean, certainly there's just the marketing of Django.
This is one of the topics on the members forum about just the website and things which there is work being done.
So, yeah, how do we get across?
I mean, that's one of things I've been most heartened by is Sarah Boyce has really taken the lead on the upgrades to Django section on the Django News newsletter and just showing it's just it's so active.
There's I feel like it's 12 to 15 a week of changes.
And, you know, so some sort of marketing sheen on what's actually happening.
But because we're mainly volunteers, we don't have the muscle to do it or the time to do it.
I'm hopeful that there is currently a bit of an influx of energy happening to Django.
And that will lead to it continuing to flourish.
It certainly feels like it for me, right?
I mean, there was this, or being on the board during COVID, it definitely felt a little bit like end of days holding on.
But, you know, now that we have the conferences and everything and new initiatives and new people, I mean, so many people are going out for the board now that there's the new board, that there's even some discussion of perhaps we should expand the board or, you know, find a way to take advantage of people who want to contribute in a way that we're not.
I had to look at the candidates and I was like, I have no idea how to rank these.
They all look amazing.
Yeah, right.
I mean, yeah, it's a good, like, really strong position.
um carlton you had something to say i interrupted you about no no no i just totally you know i agree
i i don't i think it's i don't really buy the old jango mortal danger line i've heard i've been
hearing that for 15 years and it's no true it's more about the perception i think independently
of sure but dango's been old the old fuddy-duddy for you know for a long time now and it i i don't
buy it's um there's an existential threat i look at the changes that come in every version i think
yeah this is positive i do hear you know um what lily's saying about you know can we can we tweak
the way we um discuss the features can we think about ways of pushing forward i think you know
there's not enough there's too much of a barrier to getting to a full sort of formal depth this
this Django enhancement proposal that it's too it should be a lightweight thing it should be look
here's my here's my proposal can we discuss it can we feedback on an actual written spec because
you know if you want to make a major feature change in any project to write up a little
spec is not a big ask right that should be easy it should be we should be encouraging people to
write writing third-party packages we should be saying look look this is what I've done
how can i can i pull it in and yeah we should be open and you know let's do all of those things
that's all great i don't buy that jango's index essential threat if we don't but yes let's let's
take the new energy and let's go with it and it is wonderful to see just so many young faces like
we went to the that first conference back after the covid to two three years where we didn't have
it and then we were back and it was like yes all the old faces yes all the new faces too and it's
like oh wow yes and i said um so many times this year that i'm as excited about django and where
it's going as i've been for a long long long time i think it's really healthy place that we're in
and that's just wonderful well i do have a shout out to django con us which i don't think either
viewer at was, I think it was the, I heard many people saying it was the most diverse in all
respects, uh, attendance that they've ever had in terms of there was huge numbers of people from
Africa, people from different industries, different, I mean, just, it wasn't the largest
DjangoCon US we've ever had, but the breadth of people and backgrounds and experiences certainly
felt and seemed to be the largest yet. So that was, I took a lot of heart from that as did,
think most of the people there yeah and jangakon africa as well i right we need to have someone
come on and maybe maybe ask marish to or one of the organizers to um speak to that well i think
we're we're pretty much um out of time at this point unless there's any is there anything we
didn't cover lily or managed to throw enough questions your way i think there's always more
stuff that could be talked about but i'm hesitant to open some cans of worms so maybe another
podcast okay well we'll have links to everything we discussed especially colo for django which
everyone should check out and um is there is there any way that would you like if anyone doesn't
already know about it who's listening and tries it is there a way to provide feedback or what
you ask someone to to do who downloads it and for the first time yeah um we've got a small
discord of our own which is mainly used for people coming and asking uh questions for help um we have
some documentation if um if the documentation is unclear please let us know it's something that
um i want to be good but i'm not a technical writer so um uh we have an issue tracker as well
um and um i think you can also uh schedule time with will to um come and actively help you um
get started or work through a particular problem or something like that as well
there's lots of different options thank you for taking the time i think we've been trying
planning to do this for quite a while and so i'm very pleased that it came together
and yeah thank you for coming up really good jango chat.com links to everything and we'll
see everyone next time bye-bye bye-bye