← Back to Show Notes

Transcript: Django and Rust Tooling - Lily Foote

This episode is sponsored by Hacksoft, your Django development partner beyond code.

More on their services later in the show.

Hi, welcome to another episode of Django Chat, a podcast on the Django web framework. I'm Carlton

Gibson, joined as ever by Will Vincent. Hello, Will.

Hi, Carlton.

Hello, Will. Today we've got with us Lily Foote, who's joining us again. Hello, Lily. How are you

doing?

Hello again.

thanks for coming on it's been a while so the big news was that you were elected to the

the steering council yes congratulations along with you carter well yes but you know so we get

to see far too much of each other now all right all right well so let's let's assume people don't

know anything about that like what what does that what does that do and what do you all do now that

you're on it is it one is it i don't even know actually is it once a month how often do you

do meets or is it all email list we've been doing weekly recently um as we got started we were

thinking we should just have a lot of meetings so that we can start working out where we're at

we've just um started to maybe drop down to four every two weeks um but um yeah there's a lot to do

weren't a lot to get started with so so what have we been doing every week because it's not just

it's not just tea and cakes no that's true um yeah we've been um discussing um various things

uh there were a few quick wins we got out of the way first like uh confirming uh marius um

who was a previous fellow as a merger and release it is that it was it was it a merger

was it a merger was it a release oh i don't know i don't even know anymore whichever it was

he can now do that yes um and sorry just for context because once he lost his fellowship

he couldn't do that yeah so the under the depth end rules the um it used to be the case that

everybody who was on the old django core team could hit the merge button on django django and

it was like well hang on that's uh a the old core team you know people who hadn't been active for

10 years where just you know still had commit rights to Django so hang on that's not kind of

how it was and so Dept 10 defined both a merger and a releaser role and I think there's three or

four mergers the fellows and then a couple of other people and then there's I think there's

three releases or maybe even four releases so there's the fellows who do it mostly but then

Marish who's there able to do one if you know you know one was on hold and the other was ill and

marish could step in and get the release out the door and that was something that came up just as

the previous steering council was resigning so um it's not had anything happened with it until we

got going got it and i'll just uh shout out to james bennett because i was on the board when

he was doing a ton of work to kind of make all this happen so um i believe he spearheaded a lot

depth 10 yes a lot of invisible a lot of invisible work he spent on that that i saw a little bit of

it on the board but you know i just just to say like these things you know come at a cost even

though they're largely invisible to the community so it's good to highlight them and yeah i mean

and part of the issue not the issue part of the reality is that django is a big ship and it takes

an awful lot of effort to turn because and rightly so it's got 20 million downloads a month right

it's it's a there's a lot of vested interests in you know various different points and lots of

competing desires and wants and okay that normal it takes an awful lot of effort to get django to

move and depth 10 was crucial in in doing that and setting us up for the for for the next thing

what else we've been up to lady um well several has got uh elected on various things so we've

started discussing some of those i know carlton's big on uh improving the third party package

ecosystem and making that more uh understandable and so on myself i'm i was looking to make

contributor experience better and we've been having a lot of discussions about why is that

not great at the moment what are various things we could try and do to change that

but there's a lot of stakeholders and it's a very thorny problem um i mean looking over at

the linux kernel they're dealing with similar problems of um there's the rust in linux project

who are wanting to make big changes and then there's the maintainers who are wanting to make

sure that they're not left supporting stuff without um enough time and energy and so on it's

and we're facing similar problems it's it's it's a tale of as old as time i think tale as old as

time um so can is there any sort of headline sort of things that you that stand out to you

so you know it's been a couple of months we've been meeting every week we've got we talked with

the fellows we talked to you know all numbers of people what sort of things step stand out to you

it's like okay you know this is doable this isn't this this will take longer this is quicker yeah

um i'm not sure there's any really really quick wins um with the contributor experience

thing one thing that i think we've agreed will be helpful is to try and

uh get new feature ideas and discussion away from the attention of the fellows because it's a lot of

energy that it takes from them and try and replace that with a process that is more community driven

and um once we've as a community decided that actually yes we do want to pursue this idea

then it can get put into track and worked on and get the review and so on

from the fellows how exactly we manage that is still being discussed we've long

used the forum as a hey you've got a new feature idea you should discuss it here

first one of the problems we have with that is that discussions tend to fade away and no one

realizes that they're actually ready to make an action on sometimes there's disagreement and it

filters out with no one agreeing or sometimes people are like yeah that seems a good idea but

no one takes the next step of moving it on as it were um so we're thinking about ways we can

maybe uh formalize uh which ideas are worth thinking about more and having a way of tracking

them better we don't need to turn this into a steering council meeting but it's helpful helpful

helpful for the rest of us to have a sense of what all is happening i think i think this i so i mean

the conclusion to draw at least from outside is that there's lots of activity and there's lots of

stuff going on it's even even if not instant um leaves visible but we've we've we have got a

project a good project board that people can go and have a look at and and all the rest we should

link that in the show notes but that just sort of shows what we're thinking about now actively and

what we know exists for you know later on when we've got a bit more capacity what's what is that

under is that under the django it's under the django org and then i think it's a mystery github

projects are an utter mystery all right i'll put it i'll find it and put it in there yeah no but

i believe it's a project an organizational level project called steering council something and

then there's also another repo with our meeting notes where we're putting on every week there's

You can go and see the meeting notes and what's been discussed and all the rest.

It's github.com and then if you click the projects tab, you'll find it.

Okay.

I, we, me and Jeff should link to that in the newsletter as well, I think.

So we'll do that.

So one thing we wanted to do was be more visible, right?

We wanted to show that.

So, you know, if we're going in the newsletter, it would be amazing.

Well, I mean, you know, yeah, now that I know about it, we'll put it in there.

But, you know, I remember, you know, being on the board, the secretary would take all

these notes and we had all these extra work to have some things were private and some

things were public, but it was just, you know, in this dark, dusty corner of the Janker Project

site.

So it's sort of, anyway, so it's doing the work and then it's like telling people about

the work.

Speaking of which, we should, we make sure that on the newsletter, we're linking to the

board notes because we were for a while but as well we could put those in the show notes because

they the board notes now go up on a you know it's a whole django app in the in the django project.com

website with a model and a list view and all sorts yeah jeff and i need you know because we we have

the django updates which various people um do which is great because it means it's in there

every time and it's a quick way to see oh yeah there's double digit you know things you know

added um every week so as much as it i think we talk about you know being stuck and slow like

there are all the all these things happening so just on that little side thing lily i just

do you have any thoughts on how we might or are we communicating well enough do we need to improve

do we have any ideas and maybe the answer no i don't have any ideas but like can i recommend

the blog the blog was good you guys did a quick blog post like that's super easy sorry to jump in

that's super easy for like the newsletter to link to for people to post on social

to me that seems like the easiest way to like link to stuff for example i think i am worried

that we're even with the communication we are doing where it's probably not enough probably

not visible enough we do have uh our steering council uh minutes posted on the forum i think

but

I

I think until we start announcing

that we're doing something

rather than just discussing what we might do

it's difficult

to be more

open about

what we're doing

talking about it on the podcast

like we were just now is one way

but

um yeah i there's a lot we're talking about and not loads of it i think is filtering out

at the moment but hopefully that will change yeah there are no quick fixes i guess is a thing

so talking talking of quick fixes this wasn't a quick fix at all you were involved in uh this

year's google summer of code project oh yes so tell us all about this because it's headline

feature of Django 5.2 coming up? Yeah. Well, so composite primary keys, the oldest at the

time open ticket in Django. I started to look at it a bit myself, but life circumstances

and so on meant I wasn't making loads of progress. And then Ben comes along, says people

wants to do it for google server of code no one else has been proposing this but he has a proposal

it seems good uh so we say yeah let's give it a go and he's just absolutely blasted through it

and it's a success right it's in yeah i mean there's still more to do there's um foreign

key support and generic foreign key support specifically but an awful lot of the work has

been done and it's as far as i can tell really solid well that that's a big thing i was just

talking to someone the other day who was who didn't know that was coming who was having to do

that their own you know their own cobbled together way for performance reasons so they were super

excited i think it's also there's a pull request which may or may not have been merged out haven't

tracked closely but that uses comprehensive primary keys somewhere in the django website

fancy would that be to do with track in some way so because yeah i was definitely talking

to baptiste at the last django con about track because he you know busy maintaining that and

he was like well i would write rewrite it as a django app but composite primary keys it's like

well you know you've got no excuse baptiste yeah i don't 100% remember which area it was but they

had something that was basically a composite primary key and they the pr was to make it

actually a composite primary key my um i don't you'll tell me this if this my sort of understanding

is that it's going to be most useful for people integrating django with a legacy database in the

first pass right so you've got an existing schema that uses composite primary keys and then you'll

be able to attach a django model to it much more easily yeah i think that's a very solid use case

for it there's also potential use cases in multi-tenancy um oh right i think the

motivating use case for ben who's working on it um but yeah there's various use cases for it and

especially once foreign key supports in it should be very solid yeah and it's going to be another

one of those exciting periods where the patterns the usage patterns immerse merge over the next

couple of releases right yeah and how was mentoring like you just sat back and yeah

yeah we had i think we had weekly meetings and i reviewed the code as it came in and

there wasn't much more to it than that he had a very clear idea of what he was

trying to do so it was just about okay uh helping him understand the code base

and um making suggestions on how to do things a bit more jango-y but it was actually quite hands

off okay super and now you have to remind us i know you've you've with jango not you've been

a navigator and i believe you i was a navigator on the pilot session jango not space and then

life and google summer of code got in the way and i haven't done it again i would like to but

time constraints yeah yeah yeah well but just the fact that it's you know it's django knots

who are often doing the update the django the updates on django itself and the as i think we

probably discussed a year ago the whole point is it shouldn't be the same people dipped into every

time it's like you know when you have the bandwidth contribute and um so it's great that there's an

organization and structure around it to facilitate that so it's not the case that yeah i think it's

one of the biggest wins of the past few years, more than any of the technical contributions,

even though Composite Primer Keys is amazing. I think Jackknock Space is even better still.

I would agree. So there's a couple of things we want to talk about, but I feel like coming

from these highs of Steering Council, Google Summer of Code, so you're willing to share with

us that at the moment you're in between jobs because you were made redundant of all people

are you willing to expand upon that because so many people have trouble getting a job

or keeping a job and then for someone like you to lose their job yeah is um i think it's helpful

for people to hear about that because it seems quite shocking but it happens yeah so um i started

at um back in november and i was getting settled in working on understanding the code base

doing a bit of support for other people in the team that sort of thing and at the

and then in january as i was expecting to pass probation which my manager had told me he was

expecting me to do. I discovered that the company had overhired and were having to do a redundancy

round. And I believe a lot of my team went with that as well as just me. But yeah, job hunting

again it's not the not the most fun experience well but it's you know companies there's a lot

of cost to companies doing that right obviously they're not trying to but just just from a

for them to hire a team and let go of a team clearly they didn't want that obviously you

didn't want that indeed but um it happens so well and then um so where are you at now right

Cause I know when we spoke to you last, you, you worked on, um, colo for quite a while

and you're doing a lot of rust.

Are you, how much, what would you say the split is between rust versus Python Django

these days for you or in terms of your, um, you know, dive in right now?

Well, given I'm unemployed, it's all side projects at the moment.

Yeah.

So, um, do you have a preference?

I guess I would say, right.

Because you know, we often, we often lose people to rust and they don't come back.

i mean at the moment i'm trying to do both it's um rust is exciting i love a lot of the power it

gives me and the performance but i also really love janga for its flexibility and um just ability

to get something working that is very easy to get to production quality um it's battle tested

and stuff like that well let me let me ask you because so i'm a little late to the party but i've

and i'll probably attach it to this i hopefully i have a tutorial finally on uv and django um

so uv is written in rust it's the package manager it's taking over the world you must have some

thoughts on on that and how they did that right because they sort of they did it from scratch

as opposed to cobbling together other existing pieces the way most of the other tools out there

had had done yeah it wants to be it wants to be the cargo for python yes exactly double aspect yeah

yeah the rest the rest package manager it's very impressive uh there was a keynote at a rust

conference uh by uh uh the founder of astral charlie marsh yes that's the name um about uh

a lot of the stuff that they were doing with uv and from a rust perspective and

that's great watch i highly recommend it um i've not actually used uv much myself

um but uh yeah it seems really solid and it's taking over a lot of the python mindshare at

the moment i should go watch that one because i was just i think i'll link to it he gave he's

given a number of talks he's quite good at it there was one too i think it was a jane street

which is like a quantitative trader. So it was a little more hand wavy, but he was, and this was,

I think four months ago, but he was saying how, you know, it launched in February. And so four

months ago is what, like November, it was already 10% of all PyPI downloads were using UV. And,

you know, it is, it almost seems too good to be true, right? That it, on the one hand has like a

single, you know, lock file for everything. It also can do your Python and it's not, and it's

fast but it's so fast that you can do things like move things out of ci into pre-commit like so fast

that it can change the way we work so that in some ways is the most interesting thing to me because

that was one example but i'm sure there's others if you just don't even have to think about

any of this stuff you know that sounds great and i sorry that's kind of what i'm super excited about

Yeah, I think as long as you are willing to learn the new workflows, it's probably a really solid choice these days.

My problem is that I have my own workflows that I really like and I haven't just felt like investing the time to adapt to UV.

Well, sure. Right.

And I think it, you know, to the, you mentioned the sort of battle-testedness of Django, you know, it's, I believe it's VC-funded.

They still aren't at a 1.0 commercial release.

Everything looks positive so far, but that is an additional risk, right?

Yes.

Who knows?

At some point, they're going to have to do something, right?

They have ROUGH.

They have UV.

Yes.

Monetizing in the DevTools space is tricky.

I mean, Docker managed it, I guess, right?

so i'm sure that's an obvious uh but you know it's yeah it's also interesting you know docker

is in on teams right if you all just use uv and it's all in a toml file like does that remove the

need for docker in some situations like i'm i'm still a little bit ignorant on it but it seems

like it would in some cases maybe i tend to avoid docker unless i have to use it for work reasons

anyway so like docker for local development it's just like sticking needles in your eyes for no

reason like yeah yeah carlton's carlton's carlton's yeah i i've i i hopped on all you can bootstrap my

local environment then you know well yeah that's an interesting proposition well in the whole python

thing like the the pyenv um you know you don't need pyenv if you can just put it in uv uh yes

That's such a huge thing just for beginners, right? Because, gosh, it's a minefield. I mean, and a shout out to my employer, PyCharm has UV support now, which is cool. Now, there's a question of levels of support. So we're going to have even more integration.

But, yeah, it's pretty wild that something that's a dev tool that's foundational can be so popular so fast.

Because this is not a space, like, there's an XKCD on it that I saw Charlie put in one of his talks.

Like, this doesn't usually happen around standards.

I think there's been a lot of frustration with the legacy tools in this space, which is one reason.

and it's achieved such good adoption,

they've got a lot of the UX right with it,

as far as I can tell, especially with the performance.

But as well, the single tool, right?

It's the single tool that does it, that does it right.

it shows how, you know, a decent amount of money goes an awful long way, right?

So they've managed to fund a team and actually put them on it full time.

And all of a sudden, all these problems that were insoluble for a decade or more

are resolved in the space of a year.

Money is the fixer for of all evils.

Well, and it's the combination of the rest bit.

But then just even if they just rewrote it all in Python from scratch with the money,

there would be some improvements you know not maybe not as much but there would still be

no one yeah no one had the desire or the time to to do all that that's kind of why i'm curious i

want to watch that rust talk because i've read a little bit about it but i want to understand a

little bit more what actually they all did from scratch yeah i think there's a lot of

clever people who've worked on it and therefore a lot of clever ideas in

how to really optimize things.

Hacksoft is your development partner beyond code.

From custom software development to consulting,

team augmentation, or opening an office in Bulgaria,

they're ready to take your project to the next level.

And Carlton, so are you a UVer or whatever the phrase is?

No, I'm not. I'm not a UVer.

You know me.

Well, that's why you sounded like you were on board with it.

No, I'm interested. I'm looking at it.

i'm investigating it i've i'm not using it in battle like i i mate it takes an awful long time

to get me to change tooling like an awful long time well all of us again this speaks to i mean

i haven't done anything real with it other than toy projects because it's kind of like well if

i'm not facing speed problems and my team isn't crazy frustrated like yeah no why would i but

that it doesn't all of the problems it solves i think brilliant none of them are problems that i

have um and so i'm in i'm happy to watch it i'm i'm probably in the position where if somebody

said should i use uv i'd be like probably it doesn't the fact that i'm not using it doesn't

mean you shouldn't um i'm old man herding goats on the mountain that's me and you don't need to

copy what i'm doing at all i'm slightly skeptical about the vc funding position i have to admit um

i'm slightly more concerned about that than other people you know other people are happy to say oh

let's not worry about it a bit of money is all good but money is all good that's super i'm

personally interested in making sure that that what that i know what the state of play in the

community tools are so that you know if it all does go horribly wrong i don't feel like oh god

we're now trapped in a you know vc hellhole now that's just you know that's very unlikely to ever

come to pass and it's you know the astral team are all great and they have no intentions to all that

but you know just as a matter of you know diversity within the community i'm happy to hang

out with my crusty tooling for a little while longer i i feel very similar to carlton on this

except i wrote my own tooling right yeah well you would you would

well for a long time i wouldn't but recently i i have yeah well i'm quite sure i'll be doing a

pycon us demo of uv with pycharm amongst other demos so i'm uh as much as i would love to hang

out in a cave and herd goats i'm uh forced to i think i absolutely have no problem with other

people doing but i've been using the same salute i've been using virtual and wrapper for 15 years

plus and i have no intention of changing any time but i think it's it's it's this interesting to me

some of these tools or things like this barbell shape we're on the one hand like power users or

speed matters boom like yeah they'll flip over and then and then the beginner thing right and

this is the like three of us are a little removed from being pure beginners but god like you know

you tell someone oh yeah just install python okay like yeah exactly exactly right like there's so

many tools so many ways to mess it up and then if you can so i'm in some ways i'm almost most

you know just from the teaching angle i'm most excited by that because i have seen how

ridiculous that is and um yeah i think that's for me that's the most exciting thing as well i think

an easy reliable it works here's how you bootstrap your python environment which isn't going to

confuse beginners i think that for me is the is the speed is a bit like speech meat you know like

and it's the same thing that everyone else is on everyone's on exactly the same one

you know that's yeah yeah i mean and even i think this is a little bit maybe hidden to some to some

of us but like just installing python has really improved in the last five years i mean python.org

installer is great microsoft with the windows support i mean you know even five years ago it

was like i had you know every time i got a new computer i was like oh this is gonna blow some

time and now it's i don't want to say trivial but if you know the steps it's not so bad so i have i

have robbed one bit from uv is that i've started using the standalone builds on servers because i

was using pyenv and it just i feel no need to compile python i would really really love if

python.org would ship recompiled um i think standalone stuff is amazing um and that was

actually created before

Astral, and Astral have adopted

it since.

They're using it.

Release the maintenance burden.

I'm not actually using downlit UV

to fetch the standalone builds.

There's a sort of, you know, nominal

flag in the ground for no reason

to any point.

Well, if I can

switch...

The templates, Jenga Rusty templates,

right? Yeah, all your side projects

built in rust we're rewriting django in rust yeah tell us about this um but i mean after i left

colo i was uh looking for some way to continue using rust and

templating is one of the more performance sensitive areas of django i think

yeah absolutely from a cpu side of things rather than an ioth so i thought but also

just to give context here any sorry to butt in but any request any request it's going to go

what's where's your time go i went database templates by one and two so anyway carry on

yeah so i was thinking well i love django i'm really enjoying rust what's the best way to put

those together and templates was the answer I came up with so since autumn

last year I've been trying to build a parallel implementation of Django's

templating language using Rust and I'm aiming for 100% compatibility of

rendering so it can really just drop into an existing Django code base and get all the

potential benefits of having been rewritten in Rust. I'm not at a stage to do any benchmarking

so I don't know if I've succeeded yet on the performance side of things but once it's complete

um for a given version of django i can then start looking into benchmarking and

performance improvements and all that sort of stuff okay so that sounds really really really

exciting can i ask you a question if i've got a custom template tag yes how would that work

because that would be written in python yes this is an unsolved problem right now

it's it's been on my radar as the thing that i am going to need to solve at some point but i

haven't got around to it yet okay okay fair enough it's good to strike that away though

i have some ideas but i haven't looked deeply and really grappled with that one yet i'm just

try and get the core stuff working uh the other thing i'm uh really trying to do with it is give

better error messages than django gives because if you get an error in django templates you get

this horrible trace back of django templates internals and it's not really very easy to

understand what's gone wrong often now we could fix that though couldn't we aren't isn't there a

way of marking frames as to be excluded from tracebacks somehow possibly i was reading a

rich that i was reading the rich docs yesterday because i was doing it and they've got a traceback

thing where you can say skip these frames skip that frames and i was like ah we could do with

in django because who wants 30 frames of template internals like what's the uh yeah instrumented

render 48 times as you go down the node list yeah i definitely encourage any um anyone looking for a

fun issue to try and tackle that we should create a ticket in tracks so that someone could do that

because i think that that'd be a useful thing to have and it's probably not too difficult

maybe i love it i love it i love it can i ask your take on um because i love the django template

language and i one thing i love in particular is just not defining a particular um variable

deliberately not defining a particular variable and then so having the whole block just vanish

away because you know the if defaults to empty and it it knows what to do and it doesn't raise an

error but lots of people don't like that they're like no no no i i really want i really want this

to be much more strict with me do you think there's any way we can sort of be have a template

say look this is what i'm after and you could lint it maybe the the context you passed actually did

have the variables that the template was looking for or something i don't know what's your thought

in that space i think there's some room for exploration there um it would be nice if django

could um be more strict for the people who want it to be more strict the trouble with that is i

don't think it can be a global setting like most of django's template settings are because existing

stuff like the admin and third party stuff might very much rely on that feature so i think what

would be necessary is a way to limit it to templates that have been written by the developers

of the project and then they can opt into being strict on their own templates but fall back to

not strict when interacting with these upstream templates the idea an idea come half comes like

this is just me making stuff up to go along now but idea half comes to mind of like having a

template tag that sort of defines what the expected context is and then takes the context and sort of

lints whether those are true or not but we'll have to we'll have to brainstorm this at jango

Yeah, there's yeah, there's a lot of I think there's a lot of stuff in templating that actually could be

explored and improved and it hasn't really had loads of attention for a while

with the popularity of apis over templating but i think especially with hdmx templating is

coming back into vogue in django so yeah i think it's absolutely happened

but so have you seen all these exciting component libraries are django components

django bird dj angles like these various slippers i've i've seen some of that from a distance i've

not dug deep you haven't got one which is waving the flag no i mean um

well i haven't really worked on a django project for a while

um because with colo i was writing tooling for programmers not writing a website really

um so i'm really kind of rusty on some of this stuff but also you're more of a back-end you're

more of an orm expert right i mean yeah uh anything back end has always drawn my interest

front end has always been complicated and scary well can i ask what do you feel the pull at all to

you know given your skills uh are you still happy in web land or do you feel that the data science

pull at all um i don't know about data science but well i guess everything else right that's

the problem with data science is it encompasses just like everything else with programming

languages that isn't web certainly dev tools is interesting to me um rust is known primarily as

a systems language so getting into doing more systems type stuff could be really interesting

I know that the embedded world is really cool, but I've done basically nothing to know how to work with that.

But there's a lot of areas of programming that I would actually quite like to explore more.

But there's only so much time you have.

It's a question of how much do you lean into your existing skill set and how much do you try and do something new?

And, yeah, I'm really trying to find that balance, both in my open source life, like building Jack O'Rossi templates, and in my work life, whatever turns out to be next for me.

Well, one more question, then I'm out of questions for both of you, actually.

So in the Rust world, which I know, Carlton, you've spent some time there as well.

So taking Cargo, taking Package Manager, and then applying it to Python,

are there any other obvious things that Rust does that Python, with a bit of money and brains,

could or should adopt, do you think?

I haven't thought of anything obvious yet.

Carlton, any ideas while I continue to think?

The thing I'd like to see more, I was going to ask you a little bit about this,

is that if we could improve the story around the Rust to Python integration,

so there's Maturin, it makes it very easy to package up,

but it's still a bit, you know, if I'm just,

if I'm quote-unquote just a Python developer,

and then I see this, oh, I could go and build something,

this Py03 thing, what's going on?

Ah, it's still, you know, you still want to dedicate two, three days

to sit down and plow through it, and oh, yeah,

now I've got my hello world from Rust.

That was quite a lot of...

Go on.

I think the Python Rust interoperability story

is actually really solid.

It is, but still...

I mean, if you compare it to what you had to do

to get an extension module before this came along,

C, C+, Cython, it's all way more painful,

at least my impression from the outside.

than i ever found the experience with rust i think i think the maturin uh developer and

team have done an amazing job of just taking advantage of the python packaging back-end

evolution over the past uh years that and built something really solid and

And PyO3 is a really solid piece of technology, too.

I've actually joined the maintenance team of that.

Oh, have you?

There you are.

There you are, folks.

If you're looking for a Django ORM expert that also does Rust on the maintenance team of the Rust Python integration framework.

I think you need to think bigger.

You need to go raise some VC funds and do something.

I mean, you have the background, right?

You have the perfect background of Python, Rust, DevTools.

I don't know what specifically that thing is,

but, you know, that's all you need to do is say,

yeah, I can do it, and, you know, Astral's doing it.

So, you know, VCs are trying to spend the money that they have.

Anyways.

I wonder if there's one thing we could pick up

from the Rust ecosystem, which is additions.

So particularly in Django,

we have very strong backwards compatibility constraints,

correctly so because we've got those 20 million downloads a month that we have to keep thinking

about but additions in rust allow you know you to step forward and say no we're going to drop

compatibility here and we're going to step forward and now you have to be using this addition if you

want to be using this um well it's a bit more nuanced than that with rust um because they

have extremely strong backwards

compatibility

I think

you can

use a new edition

in your own code but depend on code

that's written in an older edition

and

they've defined these editions

in such a way that

the compatibility

between those is

still there

they're sort of forward compatible

so you can opt into

the better behavior but in a way that still integrates well with what's gone before which

does mean that you can't make some backwards incompatible changes that you would like to

because you can't keep that cross edition compatibility but

i would like a

i i think django has some rough edges and bad defaults and stuff like that

that there's a quite a bit of resistance to changing and improving

i would like us to find a better way to handle that and something like additions like something

I mean, maybe, I mean, what's the difference between an edition and an LTS?

Maybe we could do something where we improve defaults every LTS cycle or something.

Okay, well, we'll have to see how that rolls out.

One thing I wanted to ask you is about, we've talked about UV and we've talked about Rust,

And one thing that Rust does very well is CLIs.

And, you know, we've talked about the dev, the DX developer experience of UV and how they've nailed it.

And there's some, you know, wouldn't it be nice if we could, you know, improve the DX of Django somehow?

Yeah, well, there are some really nice libraries for command line stuff in Python as well.

I really like Qlik.

There's a terminal user interface.

Is it textual in Python?

I can never remember.

Yeah, textual.

Yeah.

And I suspect there's a third-party library out there somewhere

that integrates those with Django's management commands.

Oh, there is.

If there isn't, there should be.

Yeah, there is one as well.

And there was a release of this typer as well,

which sits around Qlik and makes it type-inted.

Yeah.

And there was a release of Django Typer as well, quite recently.

Yeah, so, yeah, I think it might be nice

to start depending on Qlik in Django

so that we don't have to deal with ArgPass

because ArgPass is kind of crufty.

It's not tight enough for you, you know?

You like it?

I mean, it works, but it's verbose.

I think it's been demonstrated that the third-party ecosystem has done better,

and it would be nice if Django opted into that, I think.

I've got one sort of half idea.

It's that we should build all these things just around Django

rather than necessarily trying to force the Play-Doh into the shape

it doesn't want to go in.

Sure.

then the problem becomes discoverability rather than backwards compatibility trade-offs yeah

anyway we'll start well we're covered a bit of time is there any are there any things that

you wanted to mention or we should have asked you about while you have a microphone

literally and figuratively nope nothing's coming out of mind okay so i've got to ask you run the

steering council you've got all the power you've got a magic wand to wave what's the thing you're

going to fix in jane well it can be community it doesn't have to be framework yes i mean i ran for

election on this it's got to be trying to make the contributor experience work better for everyone

involved than it has been before okay fair enough well we've yeah yeah we've we've we've covered all

the things so this episode will come out in three weeks so if your linkedin profile says you're

still looking for work people should reach out to you um but again i think it's it's just i've just

got to say one more time nearly contributed to the orm rust being on the pi 03 maintenance team

And, you know, there isn't much more you could ask for if you're looking for someone, you

know, with some chops.

Yeah, but I appreciate you being willing to talk about publicly because this is a thing

that happens and it's not just newcomers who have this issue.

And so thank you for agreeing to that.

Hey, my pleasure.

So we're going to have links to a whole lot of stuff, including Lily's packages and check

them all out.

And we are DjangoChat.com.

We'll see everyone next episode.

Bye-bye.

Bye-bye.

This episode was sponsored by Hacksoft, your Django development partner beyond code.

Learn more about their services in the link in the description.