Django Chat

Kolo for Django - Lily Foote

Episode Summary

Lily is a developer at Klopp Industries where she’s working on Kolo, a dynamic code analysis tool for Django. We discuss her recent PRs on the Django ORM, serialization, type hints, and being a navigator on the inaugural Djangonaut program.

Episode Notes

Support the Show

Episode Transcription

Carlton Gibson 0:06
Hi, welcome to another episode of Django chat podcast on the Django web framework. Carlton Gibson joins me by will Vincent. Hello Will.

Will Vincent 0:12
Hi, Carlton.

Carlton Gibson 0:13
Hello Will. And this week we've got with us Lily Foote. Thank you for joining us.

Lily Foote 0:17
Yeah, it's a pleasure.

Carlton Gibson 0:21
We always ask. So we're getting to everything about you and all about Django. But we always ask, we will 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 come you hear

Lily Foote 0:36
us? Yeah, so I went to university for mathematics kind of got burnt out near the end of it and decided to try learning programming. That led to me thinking now, that that led me to pick up Python. And then I was like, how do I, 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.

Carlton Gibson 1:21
Okay, so the easy way, like just

Lily Foote 1:26
Yeah. Yeah. Had a couple of junior level jobs and then ended up in Oxford for a company called in cooler weather a bunch of other January people. Mark Tomlin, who was a cold air for a while. And Charlie Denton and Josh Heckman and just being around them, really? kick started my involvement in open source. has very inspiring.

Carlton Gibson 2:11
Yeah, no, I mean, Oxford's got a kind of Django connection, right? Because I think torch boxer, yes.

Lily Foote 2:16
Torch box as well. Yeah, I never worked with them. But I am aware that they're around.

Carlton Gibson 2:28
But there was a were there meetups and things like that, you know, is a yes.

Lily Foote 2:33
Yeah. So George, who I mentioned, ran the Oxford Python meetup for a while. He's since moved away. So it's run by other people now. But I remember I tried running some Django Girls events in Oxford. We managed to do it successfully twice, which was good.

Carlton Gibson 2:57
Super. So I remember meeting you in Heidelberg. I think Django con Europe. So yes. You know, was Was that your first? Well, you've been before and you've been and to be quite well established

Lily Foote 3:08
at that point. Yeah. So I think the first Django con I went to was Cardiff in 2015. Okay. I had been to some pie cons before that as well. And then yeah, I've made pretty much every Django con Europe since except the first online portrait one.

Will Vincent 3:31
I didn't go to it. Have you been able to primarily work with then Python and Django throughout your career? Are there any detours into other languages and frameworks?

Lily Foote 3:40
It's from the start. It's been Python. I, 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.

Will Vincent 4:03
That seems to be the natural progression. Well, it's

Carlton Gibson 4:07
just you know, it's not hard enough. Let's make it to more difficult. The so. Okay, so the way I kind of got to know you mostly as you're like, oh, yeah, I'm working on this. This deep DB defaults ticket? Yes. You'd be working on that for a long time. And that's finally going in for Django 5.0. Yeah. Can you tell us a bit about it? And it says, 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 stuff. That ticket was open forever.

Lily Foote 4:37
Yes. So DVD fault is defining defaults for a model field, so that the database knows that that should be the default. For most of Django. You were able to define a default but that would and only be used at the Python level. So Jagger's RM which set that explicitly before sending it to the database to be saved. But now we let we have a way of 10, the database that this is what the default is, and whenever something saved, the debate 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,

a or M 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.

Carlton Gibson 6:08
Now that you've undersold it there, I mean, DVD files aren't just useful, like they. 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 my pandas or I access via any other system, that that default is not enforced. And the habit 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 deep database seriously, which maybe I do, maybe I don't, but lots of people who do if I take my database seriously, having at the DB level adds a whole layer of security. That's significantly better. Right?

Lily Foote 6:54
Yeah. It's, it's, I will take your word for it that and understanding it.

Carlton Gibson 7:02
Well, would you say is all words? Yeah, I don't know. I think it's, I think it's a major feature. Yeah,

Lily Foote 7:08
I agree. Okay.

Will Vincent 7:12
Well, and clearly, you weren't scared off by the ORM. Because usually, that's the place that people go to last not first was, did you also progress through other open source Django things before that, or that was something you had, you're dealing with for work, and so decided to just jump right in? I

Lily Foote 7:29
think the first around 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 on things. And I think the vast majority of my contributions have been in the RM at some, some somewhere or other think

Carlton Gibson 8:00
that's quite low value and just sticking around. I mean, like the DVD tickets, how many how many Django con Sprint's, were you just chipping away at that chipping away that chipping away that?

Lily Foote 8:09
Yeah, quite a few I, I do do. Conference sprint space 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 that I did see see myself earlier. So maybe I was thinking about it. earlier than that.

Carlton Gibson 8:47
I'm I'm pretty sure that in Heidelberg, you were working on it already. Maybe. But I've got it in my mind. It might be that in Heidelberg

Lily Foote 8:55
are still working on check constraints.

Carlton Gibson 8:58
Yeah, okay. So, okay, so let's talk about check constraints because it what the Django default in the database in and of itself, it may, you know, whether you think that's a groundbreaking feature or not, I think it's part of a long line of things that have come in the database from indexes through to constraints through comments in the DB through database defaults through hopefully within the get cascades coming up. And all of those are kind of enriching the DRM and yeah, you you you probably is capable of anyone who's speaking to that topic.

Lily Foote 9:37
Yeah. Yeah, check them strengths is a another one where it's checked on strengths, database defaults, and most of the ones that you mentioned, I think we're all actually unlocked by the expressions refactor. Now, when would that have In probably around 2015 2016 expressions look at lookups transforms. I think everything that I've worked on sentences been made possible by that. Right?

Carlton Gibson 10:17
So it's kind of like eight years of slow progression. Building on. On that change? Yeah. It's,

Lily Foote 10:24
I think it's probably the most impactful thing that not as many people know, about as they should, okay,

Carlton Gibson 10:35
I mean, so I've often thought that the ORM is really hard to get to the details of so you know, when you first start off, you can learn to filter you can learn to, you know, create, you can learn to get or create, you can, you know, do some basics, and you can do an existing, 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? How do we help to do that?

Lily Foote 11:05
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 are and 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. But you can always watch conference talks and stuff like that.

Carlton Gibson 11:44
Yeah, I think there's some gold, absolute gold dust in there. If you go through the past conferences and find the RM talks and some really, 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.

Lily Foote 12:02
I, 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 have promptly forgotten them afterwards.

Will Vincent 12:18
That's why we abstracted into an ORM. Well, it crowds into 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 12:45
That will limit Let me respond and then perhaps lady can say what she thinks. But the, for me, it's theirs that often comes up is this 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 and 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? The

Lily Foote 13:17
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 asking discord, and 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 think

Carlton Gibson 13:54
he's just reps just time all the time on the exercise machine? Yeah,

Lily Foote 14:00
just 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 Django code base if you need to. It's it's how do you learn anything programming?

Carlton Gibson 14:24
Yeah, try to bang your head against the wall for weeks.

Will Vincent 14:29
Where's the textbook? Oh, there's no textbook. I guess I gotta create my own through conferences and online stuff. Yeah.

Lily Foote 14:36
I mean, do it.

Carlton Gibson 14:38
Always check GDP? So I

Lily Foote 14:40
think documentation is actually quite good. It's, I think the maybe the biggest problem is that there's so much documentation that's a bit difficult to find the right bit of it, but search engines are not too bad for that.

Carlton Gibson 14:57
I think there's a bit of it where it's like Okay, so I've spent the last hour reading about in a 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 worked examples of how have these more powerful lower end features? I don't know.

Lily Foote 15:31
Yeah. I'm open to seeing more worked examples. I don't see how that could be a bad thing.

Will Vincent 15:41
Well, Lily, can I ask in terms of je, 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 API's and back end, have you done templating? Any front end stuff? Or do you have a niche?

Lily Foote 15:59
Yeah, so the majority of my career has been pretty much Django back end stuff. So anything between the database and the template layer, probably, with a preference towards the database? Yeah, I have dabbled with front end, but it is not my conference.

Will Vincent 16:21
And then how much of that is API's as opposed to a monolith type of approach?

Lily Foote 16:26
I've done both, I think, a lot of what I've worked on as well. Yeah, it's been a mix. There was definitely some API stuff. And then, a more recent job, it was very much templating. And I think there were four monoliths all talking to each other's quite the legacy codebase.

Will Vincent 16:51
Okay, fair enough. Do you have thoughts? I mean, so one thing we've talked about, especially Carlton has mentioned is, you know, serialization and Django rest framework. You know, if you could wave a wand, how would you provide serialization to Django itself? Starting today?

Lily Foote 17:07
That's a good question. I think from for what I've done with it, restaurant work has been pretty good. There's a few bits where I'm like, okay, that's 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. But a restaurant which does a pretty good job, I remember. What was it that I used before restaurant with tasty pie, I think and restaurant would work so much better, for me is a more explicit tasty bite was a bit too magical. If I remember correctly, I like the reasonably explicit nature of restaurant work.

Carlton Gibson 17:54
I mean, to one thing that's comes up when you start talking to people is they like the the newer type hint, inspired things like pedantic or attars. Or, yeah, and they like that. The quickness of it, the speed of it, you know, if you've got a very simple case, you know, name, string, age, integer, it's just, it's really quick and speedy. But then, you know, same with attars. Same with, pedantic if you need the more complex cases, cases where you need to add Transformers or validators, or you know, whatever. And 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. So it's kind of interesting. As to if there's a sweet spot for bringing in the newer sort of syntactic sugar, you notice that? It's no point throwing out the whole stack for just a little bit syntactic sugar. So there's, that's kind of where I'm at in mulling it over in my mind. I don't know.

Lily Foote 19:04
That makes sense. I've not actually really had a chance to play with that stuff. The past few years, I've been not actually really doing Django itself that much, though very much in the ecosystem.

Carlton Gibson 19:19
Because you've you've been working on on Kohler. Yes. So tell us a wee bit about code Island. Yeah.

Lily Foote 19:27
So khelo I describe it as a dynamic code analysis tool. It was invented because will clop was frustrated with traditional debuggers. Which you have to know where to set the breakpoint you 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 Gen Con Europe 2020. Online Sprint's online conference for import 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 pythons 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 code, 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're looking for a way to reduce the overhead of having written in Python originally tried scythe and 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 21:35
Well, I remember Carlton, you were there to wills talk at Django 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 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 21:55
Give a bit of context. So that was some because so what he did was demoed Carlos ability to generate test Django tests for you. So made some requests. So you have code running? You know, is it in the vs. Code? Debugger? It's running there. Right? Yes. So

Lily Foote 22:12
Kylo is currently a Python library and a VS code extension. And they work together.

Carlton Gibson 22:22
Right? So you might just be that you had the library running, and it would capture the, the, the requests, but it captures the requests, and then it's able to say, right, I need I want to request for these, I want test cases for these these requests that I've made to clicking around in your application. And then it does the whole, you know, gets the the test client configures it with the right parameters, you know, does the request puts in some some dummy certs. And then you can customize those to check the exact things that you want to check. But it's like, oh, yes, that's a really sort of repetitive bit of writing tests for Django. And it just went boom. And it's not one point he made. It's not. It's not probabilistic. It's not generative. Like, you might get out of copilot words quite often wrong. It's fully static. It's fully deterministic. It's,

Lily Foote 23:09
yeah, that's the thing I'm focused on it. Work at the moment is trying to 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. Right. Okay. Yeah.

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

Carlton Gibson 23:47
Okay, well, looking forward to that. Any chance of getting it as a standalone app? Or is it tied tied to the VS code? Well, exactly. I keep nagging every time I see Well, I'm like, come on.

Lily Foote 24:02
We have some ideas about having a web UI to it. Either a 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.

Carlton Gibson 24:26
Okay, well, maybe maybe I can hold on to my glimmer.

Will Vincent 24:30
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 on how they're doing it. How How have you seen testing? Like, how do you test Django 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.

Lily Foote 24:59
I mean, I I have long been a 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 is 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,

Carlton Gibson 26:01
that fat model thing, right, yeah. And sort of, I've gotten a bit of business logic, I'm gonna attach it to my model, so I need my database. So yeah,

Lily Foote 26:11
or even you. Nowadays, with a lot of DRM 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. 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 Carlos autogenerated test, we've been relying on the test client a lot. Because that matches what the, 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 autogenerated

Carlton Gibson 27:09
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.

Lily Foote 27:19
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.

Will Vincent 27:31
And then pi test, I assume is also part of your kit.

Lily Foote 27:35
Yes, I. Carlos own tests are run using PI test. And yeah, I like pi test a fair amount. I mostly like the tidier assert, and I use the fixtures a little, but I wouldn't call myself a PI test expert. There's a lot that is in there that I just don't use.

Will Vincent 28:02
How about coverage? Oh, I

Lily Foote 28:05
love coverage. Coverage is

Will Vincent 28:06
completeness. Yeah, yeah.

Lily Foote 28:10
Frustratingly, for colo, we, it's actually really difficult to get 100% test coverage, for the same reason that coverage itself really struggles to get 100% test coverage, because the Python API that we use, in our case, system profile in coverage is case set trace that 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 a bit frustrating, but Well, there is the in in 312, the new I forget what it's called as monitoring, which might allow for introspecting that stuff. It's been a while since I've looked at it. So that might have changed. Fingers crossed, we can get better coverage of that.

Will Vincent 29:18
And you mentioned integration testing. Do you? Do you do any anything with playwright or any of those tools? Or is that less applicable?

Lily Foote 29:25
I don't think I've ever used playwrights. Okay, that's

Will Vincent 29:29
more for like testing JavaScript. And like, you know, did my stripe payment go through trying to? There's some talks at GenCon us about it. Gotcha. I think that's a dominant tool. Candy Knight is very big advocate of it. Had a keynote, I think one of the days on it.

Lily Foote 29:50
I like I said, I've dabbled in frontend it's not my conference.

Will Vincent 29:56
Yeah, have you I just push that once more. It HTML have you at all played around with that? Or is that cropped up in this template only? Projects?

Lily Foote 30:04
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. 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.

Carlton Gibson 30:34
Oh, fun. gonna ask you a question about Raskin, I'll ask you a couple of links. Questions. Can I ask you sort of what draws you to it? What do you like about it? What would 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, and you can just bang off, is spend some time writing properly typed code in rust, and it's good fun, it's hard, and you've got the compiler, and it's always nice. And then I find Python typing in Python to be deeply frustrating. It doesn't do it's all it's all work and no promise i No, no, no, you know, that's how it feels. 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 31:27
Okay, so I love rust. 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 the inside and out. So just being able to gradually port, the Python implementation of colo interest, it's a really smooth way to learn rust.

Carlton Gibson 32:06
Yeah, you need something concrete, because otherwise that you don't write the types and you don't, you know, like, Well,

Lily Foote 32:13
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.

I have discovered that I really like statically typed programming. When it's got all these modern ergonomics that Rust has. 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 33:27
I find I found myself writing Django and thing I'll throw in some typing during 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 just don't want this. It takes all the fun out of writing Python. And it's not like this, like Ross. I love Ross, but Python type in, ain't it? Yeah. Yeah,

Lily Foote 33:49
I think I haven't worked on any of the really big python code bases that wants typing. But in my experience, if you're on a small project, typing in Python, isn't really worth it. Well, you

Carlton Gibson 34:09
have to say something now,

Will Vincent 34:10
we'll just we'll just let that stand. I mean,

Carlton Gibson 34:15
give you an example from Neapolitan going to type Neapolitan crowd view so that the set went the model class is you sign up. So 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 various points, you might use self dot object. So you know, on CREATE VIEW, at the end, you've got self dot object or on a detail view, you fetch the object to begin with, and then you've render it to the template. So self dot 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. Without typing something like class microd view square brackets. My my model, you know, model equals my model object, my model insight, you've parked 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.

Lily Foote 35:20
In colo, in, we do actually still use my PI and typing. And my experience is that, like, 80 90% of the time, it's just busy work to tell, to tell my pay what I already know. 5% or something? It's okay. My pies 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, 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 well, basically. And I pretty much own all the Python and rust code. So it's, it's just for myself, really? It's not really doesn't really feel worth it. Yeah, okay. Interesting.

Carlton Gibson 36:35
Okay, let's move out before the before the lynch mob. At the flowing.

Will Vincent 36:40
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 you yeah, anyways, but I don't have.

Carlton Gibson 36:52
So I want to ask you about Jagga note dot space. Oh, you were one of the navigators on the on the on the first pilot program that's just finished. They can ask you about your experience there. And you know, your thoughts? Because, yeah, and the outside looks like a wonderful thing.

Lily Foote 37:06
Yeah, I'm really glad I took my part. I think Sarah Boyce was the person who asked me if I wanted to be a navigator. And I said, Yeah, all right. And yeah, it's, it's been good. It's I had three mentees, and they all got stuff landed in Django. And I'm glad I did. It was good to see them. Getting this stuff in and having the confidence to work with Django and so on.

Carlton Gibson 37:44
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. Sarah, come on, talk about it and pick it up. So but you who played the navigator role? What did you have to do? If you know, someone's like, well, maybe I could be a navigator. So it's involved?

Lily Foote 38:07
Yeah, I we scheduled a once a week, catch up call with my juggernauts. And that ended up lasting about 15 minutes most days. 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.

And think that went fairly smoothly as well. The time commitment, from my point of view wasn't, wasn't too onerous.

Carlton Gibson 38:49
So if somebody's in doubt, yeah.

Lily Foote 38:52
Go for it. You can always drop out from doing it again, if you don't like it.

Carlton Gibson 39:00
So will you do it again? Are you going to step out?

Lily Foote 39:04
I have sat down, happy to do it again.

Carlton Gibson 39:07
So okay, because I think that's one of the things that's been discussed is the idea that not key having the same people every, every time, no one wants to twice, three times and then step away, like a tag team sort of thing.

Lily Foote 39:20
I only refresh. I also said that if if they had too many people wanting to be navigators, I was happy to step back. So I haven't heard yet whether that is the case. So we'll see.

Will Vincent 39:34
What uh, I don't know is I forget what the deadline is, but I suspect there'll be a lot more applicants for this. Second, the first kind of open open round than they were the first time so I imagine there'll be Yeah, we should have one of them on to me. Oh, actually, we're gonna have Sarah on. Coming up soon. So we can ask her to give us a recap of it, I think and Sarah, Sarah is going to come on and talk so

Carlton Gibson 40:00
All right, clear terribIe before

Will Vincent 40:02
Oh, yeah, sorry. Yeah. Yeah. Sorry, sorry. Yeah, sorry. Django

Carlton Gibson 40:08
sera con?

Will Vincent 40:09
Yeah. Nice. One question I had for you actually, I don't know. On Oh, RMS. And it sounds like you primarily work with Django. But have you had a chance to look at any other web RMS and take inspiration? Or was that part of your process? Or is you've been mainly fighting with SQL and Django?

Lily Foote 40:31
I mainly been SQL and Django I looking at so the other work in this space is something that does sound valuable, but it's not something I've got around to doing.

Will Vincent 40:41
Yeah, yeah. Fair enough.

Lily Foote 40:43
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?

Will Vincent 40:57
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. Yeah. Who knows?

Carlton Gibson 41:18
No, I'm not. I'm not a big our depths expert. So I've used SQL alchemy a few times and thought, yeah, it's, it's, it's an ORM. Like, I think the big thing is that like, Django is the Django ORM is slightly more object tea, if that makes sense. Like SQL alchemy, that doesn't hide away the SQL quite as much like aware that you're building a SELECT query, or you're aware that you're building whatever was Django it's not quite so clear. So I don't know. I don't,

Lily Foote 41:52
yeah, I think Django is slowly moving more in the direction of matching the SQL a bit more explicitly, I mean, all the expressions, and now mourn, directly named after the Equivalent SQL concepts 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.

Will Vincent 42:34
I have one more Carlton, and then I'll let you fill up the time. But 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, cola was also like that. So my question to you is, beyond where it is. Now? Where do you see potentially going to, in the future, if things keep going swimmingly? My personal

Lily Foote 43:02
wish list for colo is I want us to be a go to tool for local development. I want us to have a good story for not just Django, but flask fast API, maybe even scientific Python. I don't know if that is possible.

That's where I'd like to go. But 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. 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 development time is going at the moment. Yeah.

Carlton Gibson 44:10
Because the visualization and the drilling down and the jumping to the code. That's all in place, right? I mean, yes. It's quite an impressive little tool, to be honest.

Will Vincent 44:20
Currently. Yeah, well, no, I

Carlton Gibson 44:23
mean, just thinking on that, like, the question is, like, at some point it has, that has to be a business. So it's moment cola was free. And I guess the sort of the big one is teams, right, is to be able to provide some kind of help at the team level where, you know, startup 510, developers, they can get a subscription. Give it to everybody. You know, yeah,

Lily Foote 44:50
we have some small dabblings in that direction, but nothing very concrete at this point. But yes, I would, I would Love for Keller to be self sustaining.

Carlton Gibson 45:02
That gives it the longevity? Indeed, well,

Will Vincent 45:06
we've been not doing nothing but asking you questions. Is there anything you want to speak of? Since you're on a, in the 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 out you. So it's fine to it's

Lily Foote 45:24
we've mentioned a lot of what's on my mind at the moment. I guess there's, there's been a fair bit of conversations on the forum and discord recently about consensus and how stuff that a lot of suggestions to for changes to Django go in at the issue tracker, and a number of them just get accepted. And that's great. But when, but when they're rejected the responses, 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 try and make your case and get something in. And I think my wish list for Jango going forward is that we make we make that less draining on contributors somehow. 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 46:58
Yeah, the default has been for many years, that sort of change requires a consensus in favor of it. And so the burden of the burden is on the new feature. Yeah, it's the default is, is no, basically, I mean, you know, to basically any change. And that's, that can be massively frustrating when that's the feature you want? Yeah.

Lily Foote 47:23
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.

Carlton Gibson 47:50
So just to the flip side of it as it goes to the stability, yes. Is 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 the Django, developers mailing lists, searching person, things I've came across a thread from 2015, where there was massive gripes about the massive churn between versions and the difficulty of updating and looking back now 2023 to something from 2015. You think there's no churn like you might have? 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. It's not a burden. And most times it's Pip. pip install dash you Django. run your tests. Oh, it's done. Like I'm on the latest version took 10 minutes. That wasn't the case. Yeah,

Lily Foote 48:48
that really wasn't. Yeah, I, I have some memories of upgrading back in the one point X days. I do remember it. But I think perhaps we've overshot and got a bit too conservative now. Yeah. Awesome. Awesome.

Will Vincent 49:06
Well, one thing I've gone, I'd say to what you were saying really, one thing I've taken heart with as Paulo has this idea of Django, Sprint's Oh, yes, she's really 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 so and even if it's turned down, they can still meet up. And, you know, it'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. Yeah.

Lily Foote 49:42
I hope so. 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 odds because the so they generate so much discussion and it feels like such an uphill battle

Carlton Gibson 50:07
can be that can be just like long grass and it's like how do I move this feature forward and start not sure I can or not sure I can quickly.

Will Vincent 50:18
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 hypersensitive to the response. Unfortunate, yeah, it can be crushing even with someone who's just busy just says no. And they don't. So there isn't, but you know, Django net 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. 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.

Lily Foote 51:01
Yeah, I definitely agree. I also think that for better and for worse, Django has a reputation of, for better, it's really stable and slow moving. But also for worse, it's maybe really stuck on opportunities it could be 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 all. It's a maintenance Ruby's

Carlton Gibson 51:47
a decade

Will Vincent 51:48
instead, is there a default, though?

Lily Foote 51:52
Probably something like fast API off. Or something even not in Python. But I mean,

Will Vincent 51:59

Carlton Gibson 52:00
It's always as old as Django.

Will Vincent 52:04
Like, it's like a hacker news. Post Django still exist, and it works. Yeah, it's that there's something valid there, though, right. I mean, yeah. I mean, certainly, there's just a 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. So yeah, how do we get across? I mean, that's one things I've been most heartened by, as Sarah voice 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 52:50
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 53:09
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.

Lily Foote 53:36
I had to look at the candidates and I was like, I have no idea how to rank these. They all look amazing.

Will Vincent 53:43
Yeah, right. I mean, yeah, it's a good, like, really strong position to be. Carlton, you had something to say I interrupted you about? No,

Carlton Gibson 53:52
no, no, I just totally. You know, I agree. I think it's, I don't really buy the old gang. 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 independently of Sure, but Django has been old, the old fuddy duddy for, you know, for a long time now. And I don't buy it. 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, what they're really saying about you know, Can we can we tweak the way we 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 to it should be a lightweight thing it should be 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 specs, 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, 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 is an existential 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 to 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 do. Oh, wow. Yes. And I said, 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 really healthy place that we're in. And that's just wonderful.

Will Vincent 55:52
Well, I do have a shout out to Django con us, which I don't think either of you were at was, I think it was the I heard many people say it was the most diverse in all respects, 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 Django con 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 a took a lot of heart from that, as did I think most of the people there.

Lily Foote 56:23
Yeah. And Genghis Khan Africa, as well, I write

Will Vincent 56:26
we need to have someone come on and maybe ask Moorish to, or, or one of the organizers to speak to that? Well, I think we're we're pretty much 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 56:46
There's always more stuff that could be talked about, but I'm hesitant to open some cans of worms, so maybe not this podcast?

Will Vincent 56:54
Okay, well, we'll have links to everything we discussed, especially color for Django, which everyone should check out. And is there any 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 do? Who downloads it? And for the first time,

Lily Foote 57:13
yeah, we've got a small discord of our own, which is main, mainly used for people coming in asking questions for help. We have some documentation, if, if the documentation is unclear, please let us know. It's something that I want to be good. But I'm not a technical writer. So we have an issue tracker as well. And I think you can also schedule time with will to come and actively help you get started or work through a particular problem or something like that as well. There's lots of different options. Thank

Will Vincent 58:01
you for taking the time think we've been trying to plan into this for quite a while. And so I'm very pleased that it came together. And yeah, thank you for Django Links to everything and we'll see everyone next time. Bye bye.

Carlton Gibson 58:16
Bye bye.