← Back to Show Notes

Transcript: Kolo for Django - Lily Foote

Carlton Gibson

Hi, welcome to another episode of Django Chat, podcast on the Django Web Framework.

Carlton Gibson joined us over by Will Vincent.

Hello, Will.

Will Vincent

Hi, Carlton.

Hello, Will.

Carlton Gibson

And this week we've got with us Lilyfoot.

Thank you for joining us, Lily.

Yeah, it's a pleasure.

Carlton Gibson

Thank you for coming on.

We always ask.

Carlton Gibson

Um, so we'll get into what um everything about you and all about Django, but we always ask, we always 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 how come you're here?

Lily Foote

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 that led to me thinking, uh now that 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 uh turning that into a career.

Carlton Gibson

Okay, so the easy route then, like just bam.

Lily Foote

Yeah.

Um yeah, I uh uh had a couple of um junior level jobs and then um ended up in Oxford uh uh for a company called Incuna where there were a bunch of um other Djangoe people, um uh Mark Tamlin, who was a uh core dev for a while, um and uh uh Charlie Denton and uh George Hickman and

just being around them uh really kickstarted my involvement in open source and um as very inspiring.

Carlton Gibson

Yeah, no, I can imagine I mean Oxford's got a kind of um Django connection, right?

Because I think Torchbox uh

Lily Foote

Torchbox as well.

Um uh yeah, I um never worked with them, but I am aware that they're around.

But there was um were there meetups and things like you know, is there a scene?

Lily Foote

Um yeah, so George who I mentioned uh ran the Oxford Python um meetup for a while.

Um uh he's since moved away, so it's run by other people now.

But um I remember I uh tried running some Django girls events in Oxford.

Uh we managed to do it successfully twice, which was good.

Well that was super.

Carlton Gibson

So I I I remember meeting you in Heidelberg, I think, at uh DjangoCon Europe.

So you know, was was that your first?

Were you been before?

Had you been uh seemed to be quite well established

Lily Foote

at that point.

Yeah, so I think the first DjangoCon I went to was um Cardiff in 2015.

Okay.

Lily Foote

Um I'd been to some PyCons before that as well.

And then yeah, I've made pretty much every DjangoCon Europe since, um except the first online Porto one I didn't go to.

Will Vincent

And 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?

Lily Foote

Uh it's uh from the start it's been Python.

Um I one of my early jobs was half Django and half uh Kivi, the um Python uh mobile um framework.

In recent years I've um uh got into Rust a bit.

Will Vincent

That seems to be the natural progression crafting, huh?

Carlton Gibson

Well, it's just you know it's not hard enough.

Let's make it to more difficult.

The um so okay, so the the way I kind of got to know you mostly was you're like, oh yeah, I I'm I'm working on this this DB defaults ticket,

Lily Foote

which yes

Carlton Gibson

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?

Listen, don't know what it's what's it for, you know, and perhaps the backstore of getting it in because uh you know, spoilers that store that ticket was open forever.

Lily Foote

Yes, so um uh db default is um defining defaults for a model field so that the database knows that that should be the default.

Um for the most of Django, um you were able to define a default, but that would um only be used at the Python level.

So Django's RM would um set that explicitly before sending it to the database to be saved.

Um but now we let we have a way of telling the database that's this is what the default is, and whenever something's saved, uh the database can put that default in for you.

Um this is really useful if you're doing um stuff that's not um Django with the same database as the one that you are using Django with.

And um so it's it's quite a um useful feature.

Um I uh I think I picked it because I was looking for a um a RM ticket that was um wanted.

Um I think I was looking at the old tickets um because that's always an interesting place to look.

And um by the time it uh landed it was the second oldest open ticket.

Fantastic.

Carlton Gibson

Um I think you've undersold it there.

I mean, DB defaults aren't just useful, like they um so it's all right.

So um the classic example is the date now, right?

I need a date added now, I need that something.

Um, but then if I go in and I happen to be editing not via Django, if I access you know via pandas or I access via any other um system, that that um 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 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, it's it's um I I will take your word for it that I'm under selling it.

Well, just easy to know it's a little, yeah, I don't know.

Carlton Gibson

I think it's I think it's a major feature, no?

Lily Foote

Uh yeah, I I agree.

Okay.

Will Vincent

Well, and and clearly you weren't scared off by the ORM because usually that's the place that people go to last, not first.

Was is did you also progress through other open source Django things before that, or that was something you had you were dealing with for work and so decided to just jump right in?

Lily Foote

I think the first ORM feature I added was uh the greatest and least query expressions.

Um 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 ORM at some some more somewhere or other.

Carlton Gibson

I think there's quite a lot of value in just sticking around, right?

I mean like the DV tickets, how many how many DjangoCon sprints were you just chipping away at that, chipping away at it, chipping away at it?

Lily Foote

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 um uh against burnout and stuff.

Um as to how many it looks like I um assigned myself to the ticket in 2020, though I did CC myself earlier, so maybe I was thinking about it in earlier than that.

Carlton Gibson

I'm 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 way.

Lily Foote

It might be that in Heidelberg I was still working on check constraints.

Carlton Gibson

Oh, yeah, okay.

So okay, so let's talk about check constraints because it it 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 gonna get cascades coming up.

And all of those are kind of enriching the the ORM.

And yeah, you'll you know you you're probably as good as capable of anyone who's speaking to that topic.

Lily Foote

Yeah, um yeah, check constraints is a um another one where um it's uh 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

Carlton Gibson

right so it's kind of like eight years of slow progression building on on that change.

Lily Foote

Yeah it's I think it's probably the most um uh impactful thing that not as many people know about as they should

Carlton Gibson

okay I mean so I've often thought that the RM 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 how do we it's kind of like there's this there's this clip that people don't jump off and how do we how do we help them to do that?

Lily Foote

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 RM people were already so I was just around them and able to talk to them and just learn from them.

Right.

Lily Foote

How to do that if you can't get to conferences trickier um but you can always watch conference talks and stuff like that.

Carlton Gibson

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 this the SQL in order to really understand how the ORM is working

Lily Foote

I uh I will say that for pretty much every database feature I've worked on I've learnt the bits of SQL I needed to know while working on that ticket and then half the time I've promptly forgotten them afterwards.

Will Vincent

Well that's why we abstract it into an ORM right 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

Carlton Gibson

well let me let me respond and then perhaps Lily can say what she thinks but the um for me it's there's it often comes up is this um sort of M 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 ah anyway it's but everyone hits those issues right the

Lily Foote

yeah I think it's a case of you hit them you search for help um 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.

Carlton Gibson

So you think it's just reps it's just you know time on the time on the exercise machine.

Lily Foote

Yeah just um and learning to ask the right question or learning how to find out I mean you can also you can look at other people's code you can dig into the um Django code base if you need to it's it's how do you learn anything programming?

Carlton Gibson

Yeah yeah try bang your head against the wall for weeks

Will Vincent

where's the textbook oh there's no textbook I guess I gotta create my own through conferences and online stuff.

Yeah I mean

I think Django

Lily Foote

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 search engines are not too bad for that.

Carlton Gibson

I think there's a a bit of it where it's like okay so I've I've spent a last hour reading about you know the query API or something I don't know whatever.

And then 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 dock 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

Lily Foote

yeah um I'm open to seeing more worked examples I don't see how that could be a bad thing touché

Will Vincent

well 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?

Lily Foote

Anything between the database and the template layer probably um with a preference towards the database.

Yeah I have dabbled with front end but it is not my comfort zone.

Will Vincent

And how much of that is APIs as opposed to uh a monolith type approach?

Lily Foote

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 it was very much um templating and I think there were four monoliths all talking to each other was quite the legacy code base.

Will Vincent

Okay fair enough do you have thoughts I mean so one thing we've talked about and especially Carlton has mentioned is you know serialization and Django S framework you know if you could wave a wand how would you provide serialization to Django itself starting today?

Lily Foote

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 last time I ran into that um but 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.

Carlton Gibson

I mean so one thing that's c comes up when you start talking to people is they like the the the the newer um type hint um inspired um things like um pydantic or um atters or yeah 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 atters same with um pydantic look 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 the newer sort of syntactic sugariness but you

know it's no point throwing out the whole stack for just a little bit of syntactic sugar so there's a that's kind of where I'm at mulling it over in my mind.

I don't know.

Lily Foote

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.

Carlton Gibson

Because you've you've been working on um on colour yes right um so so tell us a wee bit about colour.

Lily Foote

Yeah.

Um so colo I describe it as a dynamic code analysis tool.

Um it was um invented because Will um Klopp was frustrated with traditional debuggers, um, which you have to know where to set the breakpoint, you um you have to understand your codes a certain amount to be able to use them well.

And he was like, I want something that'll just give me a lot of that context without having to understand the code beforehand.

So he started building colour and we um met online at the um Junk on Europe 2020 uh online sprints uh online conference for um uh in Porto, and um we got to talking and I was trying out contracting at the time, so I um uh so we decided to give that a go and it went really

well.

Um it was a lot of fun um uh working with Python's introspection um features and uh working out how to um extract in useful information from people's programs without being too slow and um yeah uh I eventually went full-time with uh colo because it was just simpler and

I was having so much fun with it.

I um and that's also how I got into Rust as well.

Um we were looking for a way to reduce the overhead of um having written it in Python originally, um, 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.

Will Vincent

Well, I remember Carlton, you were there too.

Um Will's talk at DjangoCon 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 Django Cons I've been to, I've never seen that before.

I mean it's quite a jaw-dropping like moment to see it in action.

Carlton Gibson

Give a bit of context there.

That was um because so what he did was demoed Colo's ability to generate um tests, Django tests for you.

So um made some requests.

So you have Colo running.

Um, you know, is it in the VS Code debugger as it's running there?

Lily Foote

Yeah, so Colo is currently a a Python library and a um VS Code extension, and they work together.

Carlton Gibson

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 to 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 clo the test client, configures it with the right parameters, you know, does the request, puts in some some dummy asserts, and then you can customize those to check the exact things that you 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's just went boom.

And it's not um one point he made it's not um it's not probabilistic, it's not generative, like um, you know, you might get out of Copilot where it's quite often wrong, it's fully static, right?

It's fully deterministic.

Lily Foote

It's yeah, that's um uh the thing I'm focused on at uh work at the moment is trying to um improve the reliability of the test generation and add more features and stuff like that.

It's it's really good when it works, but there's an awful lot of edge cases and stuff, so right.

Carlton Gibson

Okay, yeah, I can imagine.

Lily Foote

Um but um yeah, we're we're hoping that it will um that we'll be able to get it into a um really solid uh place in the next few months and that it'll provide a lot of value to people.

Carlton Gibson

Okay, well looking forward to that.

Any chance of getting it as a standalone app or is it tied

to the VS Code except for the same thing?

Do you want it with BB every

well exactly?

Carlton Gibson

I keep nagging it every time I see Will.

I'm like, come on, come on.

Lily Foote

Um we have some ideas about um having a web UI to it, um either an um online service or something that runs locally.

Um we have some work in progress stuff around these areas, but I can't say uh when they'll be launched.

Carlton Gibson

Okay, but maybe, maybe I can hold on to my glimmer.

Will Vincent

Well, if we uh 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 on 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 if you could speak to that, right?

Because that's I'm I'm curious your example because I feel like everyone has a little their own flavor of how it's actually done.

Lily Foote

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 um realm, especially when you're doing pretty standard CRUD stuff.

Um because the stuff that you really want that fine-grained uh unit test um stuff for is the um custom business logic that is um not so um entangled with um 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.

Carlton Gibson

Um I've got a bit of business logic, but I'm gonna attach it to my model, so I need my database.

So yeah.

Lily Foote

Or or even you uh nowadays with a lot of the RM features, you can even push that logic into the database, which means to that you pretty much have to have a database as a dependency for the test at least.

Um yeah.

I personally am a fan of um the request factory and um uh skipping middleware and just putting the request into the view and so on.

Um but for Colo's auto-generated test, we've been relying on the test client a lot um because that matches what the what we recorded better.

Um because when you record a um 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.

Carlton Gibson

I think it's probably in the more common usage pattern as well.

I think people testing views in isolation is kind of more advanced or more niche.

Lily Foote

I I I do prefer being able to have that extra control and reduce the overhead, but yes, um the test client is easy and often good enough.

Will Vincent

And then PyTest, I assume, is also part of your kit.

Lily Foote

Uh yes, I um Colo's own tests are run using PyTest.

And yeah, I I like PyTester fair amount.

Um I mostly like the tiger 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.

Will Vincent

How about um coverage?

Lily Foote

Oh, I love coverage.

Coverage is amazing.

Will Vincent

That complete completeness, yeah.

Lily Foote

Yeah.

Um frustratingly, um for Colo, we it's actually really difficult to get um 100% uh test coverage for the same reason that coverage itself really struggles to get 100% test coverage, because the um Python API that we use, uh in our case it's .set profile in coverage's case is .set trace.

They're similar, but with a few minor differences.

Um 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 312 the um um uh new uh is it I forget what it's called, is it monitoring, which might allow for introspecting that stuff?

Uh 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.

Will Vincent

And you mentioned integration testing.

Do you do you do anything with Playwright or any of those tools, or is that less applicable?

Lily Foote

Uh I don't think I've ever used Playwright.

Will Vincent

Okay.

I mean that's more for like testing JavaScript and uh like you know, did my Stripe payment go through trying to uh there were some talks at DjangoCon US about it.

Gotcha.

I think that's the dominant tool.

I um uh pa Andy Knight um is is very big advocate of it and had a keynote, I think, one of the days on it.

Lily Foote

I like I said, I've dabbled in front end, it's not my comfort zone.

Will Vincent

Yeah.

Have you have you uh I just uh push that once more, HTMX, have you at all played around with that or is that cropped up in this template only project?

Lily Foote

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 HTMX 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.

Carlton Gibson

So can I ask you a question about Rust?

Can I ask you a couple of linked questions?

Can I ask you

Carlton Gibson

sort of what draws you to it, what do you like about it, what 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 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 that you've got the compiler and it's all this nice.

And then I find typing in Python to be deeply frustrating in that it doesn't do it's all it's all work and no promise.

That's a comeback.

So with that as a as a sort of blur, how do you feel about Rust?

And you know, what do you like?

And what lessons can we draw?

Lily Foote

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 was just being able to gradually port the bit the Python implementation of Colo into Rust.

It's a really smooth way to learn Rust.

Carlton Gibson

Yeah, you need something concrete because otherwise the the the you don't write the types and you don't, you know, and it's a bit like well.

Lily Foote

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 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.

Carlton Gibson

I find I find myself writing Django and thinking, oh, I'll throw in some typing, I'll throw in 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 because I just don't want this.

It it takes all the fun out of writing Python for me.

And it's not that I dislike Rust, I love Rust, but Python typing ain't it.

Lily Foote

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.

Carlton Gibson

Well, you have to say something now.

Will Vincent

We'll just let that no, we'll just let that stand.

I mean

Carlton Gibson

I'll give you an example from um Neapolitan trying to type um Neapolitan CRUDView so that the the set when the model class is you assign 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-based 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 uh create view at the end, you've got self.object, or on a detailed view, you you fetch the object to begin with, and then you render it to the template.

So self.object has got the set is a 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.

Lily Foote

Yeah.

In in Kalo uh in uh we do actually still use my pie 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 pi what I already know.

Um five percent or something, um, it's okay.

My pie 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 uh now maybe I 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.

Um, and I pretty much own all the Python and Rust code, so it's

Carlton Gibson

yeah, so

Lily Foote

it's just for myself, really, and it's not really doesn't really feel worth it.

Carlton Gibson

Yeah, okay.

Interesting.

Okay, let's move out before the before the lynch model arrives with

the flaming.

Will Vincent

Yeah, I don't I don't have a dog in that fight, but I know that's one of that's you know that's one of the things that comes up to the steering council all the time.

And uh yeah, anyways, but I don't have a

Carlton Gibson

so I wanted to ask you about um jjang and not dot space.

Oh yes, you uh one of the navigators on the on the on the first pilot program that's just finished.

So can I ask you about your your experience there and you know your thoughts?

Because from the outside looks like a wonderful thing.

Lily Foote

Yeah, I I'm I'm really glad um I took it apart.

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, alright.

Um and yeah, it's um it's been good.

Um it was I had uh three mentees and they all got stuff landed in Django, and um I I'm glad I did it.

It was um good to see them uh getting this stuff in and having the confidence to work with Django and so on.

Yeah.

Carlton Gibson

Um 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 and talk about it and pick it up.

So, but you who played the navigator role, what did you have to do?

Well, if you know someone's like, Well, maybe I could be a navigator.

What so what's involved?

Lily Foote

Um, yeah, I we scheduled a once-a-week catch-up call with uh my jungle naughts, 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 an initial review, um, and uh I think that went fairly smoothly as well.

Um the time commitment from my point of view wasn't wasn't too onerous.

Carlton Gibson

So if somebody's in doubt, you Yeah.

Lily Foote

Go for it.

You can always um drop out from doing it again if you don't like it.

Carlton Gibson

So will you will you do it again or are you gonna step out this time?

Lily Foote

I have um said that I'm happy to do it again.

Carlton Gibson

So I think that one of the things that's been discussed is the idea that not keep having the same people every every time, you know, one once, twice, three times, and then step away like a tag team sort of thing.

Lily Foote

Um I also 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.

Will Vincent

What it 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 there'll be uh yeah, we should have one of them on to mail.

Well, actually, we're gonna have 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 gonna come on and talk.

So I should have Sarah B before.

Oh yeah, sorry, yeah.

Will Vincent

Yeah, two Sarah.

Two Sarah.

So many Sarah's gonna have Sarah.

Will Vincent

Sorry, sorry, yeah, sorry.

Carlton Gibson

Django Sarah con Yeah.

Nice.

Will Vincent

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 are you been mainly fighting with SQL and Django?

Lily Foote

It's mainly been SQL 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.

Will Vincent

Yeah, yeah, fair enough.

Lily Foote

Yeah, I 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 on my mood.

Will Vincent

Yeah.

Well that would be it would be.

I mean, Carlton, you can probably maybe speak to this.

I mean, SQL Alchemy is certainly historically has been spoken of as having some features that the Django ORM does not, but I don't know if it's as active as the Django ORM is.

I suspect not, but I I can't speak to that.

Carlton Gibson

Yeah, who knows?

Um, I'm not an I'm not a big ORM depth expert, so I've used SQL 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 Django's the Django RM is slightly more um object-y, if that makes sense.

Like SQL Alchemy that doesn't hide away the SQL quite as much.

Like you're aware

Carlton Gibson

that you're building a select query, or you're aware that you're um building whatever, whereas Django, it's not quite so clear.

Um so I don't know.

I don't uh yeah.

Lily Foote

I think Django's 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 um 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.

Will Vincent

Well, I have one more Carlton and then I'll let you uh fill up the time.

But uh so Colo, uh obviously it's uh 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?

Lily Foote

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.

Um 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 gonna 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.

Carlton Gibson

Yeah, because the the the the visualization and the 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 the question is like at some point it has there has to be a business towards it.

So it's moment colo is free.

Um, and I guess that the the sort of um the big one is teams, right?

You it's uh is to be able to provide some kind of you know help at a team level where you know start up five, ten developers, they can get a subscription, give it to everybody.

Um you know I you know

Lily Foote

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 Curlow to be self-sustaining.

Carlton Gibson

Yeah, well that gives it the the longevity, no.

Will Vincent

Indeed.

Well, we've been not doing nothing but asking you questions.

Is there anything you wanted to speak of since you're on?

Any in the anything 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 it.

Lily Foote

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 Django go in at the issue tracker and a fair number of them just get it accepted and that's great.

But when but when they're rejected the response is okay, if you don't disagree, take that to the forum or used to be the mailing list or whatever.

And then it feels like it's a much it can be a lot more of a draining process to um try and make your case and um get something in.

And I think my wish list for Django going forward is that we make we make that uh less draining on contributors somehow.

Um when they've 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.

Carlton Gibson

Yeah.

The the default has been for many years that um a sort of change required a consensus in favour of it.

Yeah.

Carlton Gibson

And so the burden of the burden is on the new feature.

Yeah.

Carlton Gibson

It's 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 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.

Lily Foote

If I'd come along with a particular feature that I particularly wanted in, but I was met with resistance, uh I might not have stuck around so easily.

Yeah, yeah.

Carlton Gibson

So just to the flip side of it is of course the stability, yes.

Is the the the the the reason why the historical policy was you know uh requiring the consensus for the change was uh the keeping Django stable.

And if you I was on a the Django developers mailing list searching for some things, and I've came across a thread from I don't know 2015 where there was massive gripes about the 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 you know it becomes pressing.

It's really not uh it's not a burning, and most times it's pip, you know, pip install dash u Django, run your tests.

Oh, it's done.

Look, I'm on the latest version, took me 10 minutes.

That wasn't the case.

Lily Foote

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 got a bit too conservative now.

Yeah, possibly, possibly.

Will Vincent

Well, one thing I've cool.

I'll just say uh uh to what you were saying, Lily, one thing I've taken heart with is um Paolo has this idea of Django sprints.

Oh yes,

which he's

Will Vincent

just posted another article about pushing that forward because yeah, there's no reason why it has to just be at the end of Django Con 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 you can't even on the forum.

So perhaps that's one way.

Lily Foote

Yeah, I 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.

Carlton Gibson

Yeah, it can be.

It can be just the like long grass, and it's like, how do I move this feature forward?

Yeah.

It's not not sure I can, or not sure I can quickly.

Will Vincent

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.

Will Vincent

And it 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, jjango not 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 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-less serve.

Lily Foote

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 missing out on um opportunities it could um it could be provid

ing to um is Django going to continue to be picked for new projects?

Some people I've talked to think no, you're only gonna pick Django if you already know it or it's a maintenance.

Carlton Gibson

People have been saying that a decade.

Will Vincent

What do they pick instead?

Is there a d default though?

Lily Foote

Uh probably something like Fast API or um uh or something even not in Python.

But I mean Yeah.

Will Vincent

You know, like it's like a hacker news post.

Django still exists and it works.

Yeah.

Will Vincent

It's val 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 the members' forum about just the website and things, which there is work being done.

Um uh so yeah, how do we get across?

I mean, that's one of things I've been most heartened by is um 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.

Lily Foote

I I'm 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.

Will Vincent

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, and so I mean, so many people are going out for the board now that there's uh 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.

Lily Foote

I had to look at um the candidates and I was like, I have no idea how to rank these, they all look amazing.

Will Vincent

Yeah, right?

I mean it's a good like really strong position to be in.

Um Carlton, you had something to say.

I I interrupted you about

Carlton Gibson

No, no, no.

I just I totally, you know, I agree.

I I don't I think it's I don't really buy the old Django uh mortal danger line.

I've heard I've been hearing that for 15 years and it it's no true.

Lily Foote

It's more about the perception, I think.

Carlton Gibson

Independently of sure, but Bjango's been old and sort of old the old fuddy duddy for you know for a long time now.

And it I 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 the way we um discuss the features?

Can we think about ways of pushing forward?

I think you know um 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's 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 Django'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 two, 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.

Carlton Gibson

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, long time.

I think it's a really healthy place that we're in, and that's just wonderful.

Will Vincent

Well, I do have a shout-out to DjangoCon US, which I don't think either of you are 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 the largest yet.

So that was I took a lot of heart from that, as did I think most of the people there.

Lily Foote

Yeah, and DjangoCon Africa as well.

I Right.

Will Vincent

We need to have someone come on and maybe maybe we can ask Marish to or 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?

Lily Foote

I mean there's always more stuff that could be talked about, but I'm hesitant to open some cans of worms, so maybe another podcast.

Will Vincent

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 would you ask someone to to do who downloads it and for the first time?

Lily Foote

Yeah, um we've got a small Discord of our own, which is main 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 uh get started or

work through a particular problem or something like that as well.

There's lots of different options.

Will Vincent

Thank you for taking the time think we've been trying to planning to do this for quite a while and so I'm very pleased that it came together.

And yeah thank you for coming on really good

Will Vincent

DjangoChat com links to everything and we'll see everyone next time.

Bye bye bye bye