Transcript: Becoming a Django Fellow - Natalia Bidart
Hi, this is Will.
Before this week's episode, a quick note from our friends at Django Knot Space.
Hey all, it's your friends Don Wages, Sarah Boyce, Tim Schilling, Sarah Abderaman, and Rachel Calhoun calling in from Mission Control to invite you to join Django Knot Space, a Django contributor mentorship program designed to help Django engineers who are passionate about open code and community contribute back to the framework.
Together in an eight-week program, we explore open issues, strategize on execution, learn about ways to get involved outside of code, share and celebrate our wins, make friends and invest sustainably in what hopefully will be a long career contributing as an open source leader.
So when programming, we often agree that it's better to be explicit than implicit.
Mentoring new open source contributors allows us to be explicit and saying, you are welcome, you are valued, and you can do this.
We lift people up and share out the opportunities we're privileged with, and ultimately this strengthens our community and Django itself.
Because at Django, we're a community of key givers, not gatekeepers.
If you run into a problem where we don't know the solution, we know who does, we'll connect you with them.
When an opportunity arises in other circles, we'll put your name forward.
We want to see you grow and lead the next group.
Django is for everyone, and everyone can belong at Django.
Let's talk to dates.
Best place to learn about them is our website, DjangoNot.space.
Since I have your ears, I'll tell you that the 2024 session one program will begin on January 15th.
It will run for eight weeks and end on March 11th.
Applications will only be accepted until November 15th of this year, 2023.
Now that date will be here before you know it, so start working on them now.
We'll be sending invitations to the accepted folks starting on December 1st, and we promise to notify each individual about the status of their application.
Best of luck, and we're looking forward to some very difficult choices.
We expect people to have experience with Python, Django, and Git.
They should be able to commit five hours a week.
Although everyone can apply, we prioritize folks who come from backgrounds that are excluded, overlooked, or have been excluded in the past.
This is to help increase the diversity of Django contributors as it's a framework for everyone created by everyone.
If you recognize yourself in this description, don't hesitate to apply.
We are also recruiting navigators and captains if you would like to be part of the program and help future contributors to grow.
A key skill you will need is the ability to listen for things going unsaid.
For example, you may have to help them through some shyness or embarrassment.
You should be empathic and comfortable asking open-handed questions to let them talk.
Finally, you will need to support and celebrate Django Notes, providing connection as needed.
So have we convinced you yet?
You can learn more at DjangoNat.space and click on sessions to apply for the next cohort.
Want to sponsor, volunteer, or apply, but have more questions?
Email us at contact at DjangoNat.space.
Hi, welcome to another episode of Django Chat, a podcast on the Django Web Framework.
I'm Carlton Gibson, joined us every by Will Vincent.
Hello, Will.
Hi, Carlton.
Hello, Will.
And this week we've got with this N Natalia Bidat, who's the new Django fellow.
Hi Natalia, thank you for coming on.
Hi, thank you very much for having me.
No, we're we're very excited.
We're very excited.
So look, we always, always, always, always start with a backstory.
And you're the you know, as a new fellow, you're like, who is this person?
We tell us all about you.
How did you how did you find your way into Django and where you are now?
But like on start from the back.
What's the origin?
Okay, how much time do I have?
Because we've got an hour, so go, you know, we're to sit back.
I mean, so um I started with computers at I will say at a very late age.
I was in my 20s.
Um there is you know a sort of like a cultural and the social environment that I was in, you know, it wasn't that common for females to be involved with computers at an early age.
Uh the males that were my same age, they used to play games, but um, you know, in family games and commodore computers, but it wasn't that common for females.
And because of, I will say, lack of encouragement and lack of self-uh uh interest in that, I didn't get involved in computers.
And what I did like uh during high school was everything that was related to math, accounting, and economy.
And I was really, really uh convinced that I was going to be an accountant.
In fact, I really like the numbers.
So at one point I said, I'm going to be an accountant.
But then I realized that I also really liked organizing things and having procedures for things.
So I decided, no, what I want to really study is uh system engineering.
And I started talking with the department of my aunt, and he was at the moment studying computer science in a school in Córdoba, Argentina, which is um uh sorry, a faculty very uh is known for uh for being very uh demanding of students.
It's the faculty where you also study mathematics, physics, and astronomy.
They were recently, as of 10 years ago at that time, uh in and started the computer science um career in there.
So he was studying that, and he was like, No, you want to study computer science, no system engineering.
And I'm like, why?
And he explained, and I was like, okay, but I need to study a lot.
I mean, I need to put a lot of hours, and I'm I'm not built for this.
And he was like, no, yes, you should try it.
So I started a career, I started computer science when I was um 19.
And the first years during the career, you all we barely touch a computer.
We had all the theory about you know uh paradigm logic and mathematics, discrete mathematics and all that.
And during my second year, uh we started having a little more of computers, and we have this uh subject subject, which was um organization of a computer, you know, a little bit more about the the different components and the electronic components and things that you can do with that.
And it was really funny because one one one professor said uh he was talking about a computer bus, you know, and a bus this and a bus that.
And I was like, what is a bus?
And he was like, you know, when you opened your computer and you saw these little gold uh strips that you have in there, and I'm like, I've never opened a computer, I have no idea what you're talking about.
So uh anyway, he was an amazing, he's sorry, an amazing professor.
He explained other things and I graduated and I came to love uh computer science.
I was a student assistant while I was still studying.
I was then a teacher assistant when I graduated, and um I was for for many years.
And uh sort of in parallel close to when I was close to graduate.
Uh I was living for two months in France, in Paris, doing an internship at the INRIA Institute.
It's the the institute of research, uh of informatic research, I believe it is.
And when I came back, uh well, I did my my final work, which is called a thesis in in Córdoba, but this is uh um a work after a five-year degree um that you studied computer science.
And before graduation, I got um um asked uh from uh I got offered a job from a local startup in Córdoba, which was called Accept, just like you know, the try accept clause, it was accept.
So they started working with Python, and at the time, this is 2005, they worked with the SOAP and a little bit of Plum because Plum was just you know a new thing.
So I already knew some Python, very new, I was very new.
So I started working with them and I started learning soap and a tiny bit of Plum.
And then you know they were like startups and they were sort of like a consultant.
They were selling, you know, uh developer hours.
And they were working with people from the US.
So the other project that I was involved with was um building um media management system for church, some part of the church of the United States where there will be presentations that they will uh stream during the um mass.
I'm not sure if mass is the right term for for, but I think it is.
And um this um media management system was built in EFEL, you know the programming language.
Uh do you know what that is?
Uh Eiffel, EFEL, I'm not sure how you pronounce it.
Eifel.
I've not seen it.
Like the tower, you know, AFEL?
Yeah, but I've not seen that one.
Anyway, carry on.
Ah, but it's an amazing, it's uh it's uh uh object-oriented programming language, imperative, and it's uh all the nice theory about programming languages, it's like putting that uh language, but it's not very common, it's not very popular as you can see.
Um so well, I I also worked on on that programming language, and then Django was out, it was like 0.9 release, and these startups started using Django for all the projects, so I started using it as well with them.
And well, from then it was you know a learning process, and we started using Django a lot.
And then the startup had to close because you know it wasn't working um economically, financially.
And um at that time in 2009, I joined Canonical.
And at Canonical I joined um the Ubuntu One team.
Ubuntu One, right now it's just the SSO, the single sign-on service from Canonical.
But at the time, Ubuntu One was the service that will provide initially file sync capabilities, and then it will also provide music sync sync, sorry, music streaming, content, contact sync, and some other uh features.
So I joined the team that was called the Foundations team.
We will build the file sync server, which was Python and Twisted, the web framework that will run on the server, and on Canonical's cloud.
And then uh we'll have the demon that will run on all the desktop that will be pure Python.
Well, sorry, Python and Twisted as well, and that will run on all the systems.
So we will be in charge of the team on and the server.
It was uh I learned a lot.
The people working uh in the team were senior or super senior, so I was sort of like a junior developer still.
I learned a lot, and I basically grew from junior to semi-senior to senior working with them.
Uh it was a very fun experience and I enjoyed a lot.
I was then moved to the one-to-one desktop team, where we built a desktop UI for the demon, initially in GTK, which was called the control panel, and then we used PyQt to build that.
So I also did a little bit of that, PyGTK and PyQt.
That was also fun and very interesting.
I learned a lot as well.
And then I um I enjoy a little bit more doing server side, not that much desktop stuff.
So I was moved back to what was called at the time the online services team.
So it was a team that will deal with everything online regarding backend services, and it was all Python, and perhaps some Twisted, some Django, and um we were in charge of the Ubuntu single sign-on service, which was well, Ubuntu Payments at the time, which um uh it was skilled afterwards, and uh still be uh in charge of the uh Ubuntu One server services.
At some point in 2014, Ubuntu One as a product was shut down.
Uh, the single sign-on remained and still is being used by Canonical.
And I was uh moved to the team behind the package store.
Canonical has had many package stores uh during the years, initially, one that will allow you to upload dev packages, Debian packages, but not via the usual archives, via this custom store provided by Canonical, where it will be easier to get your dev package uh available to users and not needing to go all through all the Debian process.
And so I was involved in that, and then that package store started morphing, uh, and I believe that's the right pronunciation, that's the right word.
I'm not sure if I'm pronouncing pronunciated properly.
It morphed into uh support, I mean Canolica started developing new form new uh package formats to you know share software.
So after the devs, it was the click packages, and then soon after it was the snap packages, which had an initial version which was very similar to clicks, and then a second version which was completely different to clicks, but what's still called snap, which is uh what currently Canonical offers as a package format.
So they really like you to use.
You really like you.
No, they really like you to use it.
They're like please do it.
Yeah, I I will try to stay away from making judgments about that.
I I will try to keep uh to be you know objective, about as objective as I can about the topic.
So um, yeah, I was involved in in all this morphing.
The the original Django service was was providing the dev package store, morphed into supporting clicks and then into supporting snaps, and it was a mess, a monster of if everywhere, still Django.
So at some point it was decided that uh we're going to try to deprecate this Django monster and and uh spin-off was spin-off of many microservices which weren't that micro, sort of like a medium services built in Python's flask.
So I believe um, well, I I left Canonical uh one uh one year and a half ago, and I think that they're still uh using a little bit of everything, a little bit of the monster, a little bit of the the monster's child or derivatives.
And um, but yeah, I I decided um well during during my time as uh in in the package uh store, I became a technical leader and a technical architect of the store.
And well, I left uh a year and a half ago.
And was overall was a great experience.
I learned a lot, a lot, a lot of a lot of things, a lot of regarding technical stuff, developing features from scratch, and then a lot regarding communicating with people, being in charge of the technical aspect of things, and and in charge of you know teams and and how to push a feature forward.
And uh I dealt with with customers, with good commercial customers uh that will use the Snap Store for um AoT things, and I think that's a fair summary.
That's amazing.
That's amazing.
In just
the best summary we've had in doing all our episodes were just like we'll just wind you up and go.
What I also like though, as well, in that that massive long summary that you've you've you've you've touched literally every major Python web framework.
You've got Plone, you've got Soph, you've got Twisted, you've got Django,
you've got VAS.
I never used Tornado, for example.
I have no idea.
Or Pyramid, I believe it's another one.
I have no idea either.
Uh but yeah, I love twisted.
Now it would be fast.
Well, yeah, I have a try it in pet projects.
I haven't used it in anything, you know, serious in terms of um stressing it.
Um but yeah, I really like it as well.
So can I ask then what attracted you to being a Django fellow then, or being a fellow in that role?
Uh that's a good question.
So as as I mentioned, I you know, I have um I naturally tend to try to organize things, organize people, organize work, organize features.
Um, and uh at the same time, uh, when I left Canonical, I was extremely, extremely burnt out.
I was like, I don't want to work ever again.
Uh work is not
for me.
I was in a privileged position in that I could say that and I could decide to do that.
My partner was uh is still working, and and and you know, I was able to say, okay, I don't want to work for a year, for two years, or for five years.
So that was one thing that helped me be in a position that I could choose.
No, I could wait.
And I could also uh decide from the point of view of what I really wanted to do.
I always loved Thiango, and I wanted to keep involved in the angle.
At the time, I didn't I didn't it didn't occur to me to start contributing to the Angle.
That is something that on retrospective I would have loved to do.
Um and I will explain why in in a minute.
But I started working uh like six months after I quit uh with uh Repsys Revolution System,
the the
you know, um the consultancy, uh uh the consultancy um for the Yangle services, and I realized how much I loved working with Yango.
And then in February, almost a year after I resigned, I saw the opening for Yango Failure and I read the description, and I was like, you need to try it back.
You need to, you know, keep the order of things, you know, you have to keep the bugs in in shape and the PRs in shape, and you have to deal with security issues.
I I also did that while while in Canonical.
I was part of a response team when we got uh reports of malicious apps and and stuff.
So I well, I I I can do this, and this is Django, and I will be contributing to Django, and I will get paid to contribute to Django.
And I was like really Win, win, win, no?
Yes, I mean, I I I couldn't see a reason why I wouldn't, you know, send my application to that.
And I was super excited, and I started gathering um recommendation letters from people.
Uh, and I put together uh I put together my application and I send it and I got the position and I was extremely happy.
I felt and I feel so lucky, so fortunate to to have this opportunity.
And then when when I started actually you know the fellowship, uh I I didn't feel so useful, but that's not the question that you ask, so I wouldn't get into that yet.
This is why I I I I I I I uh this is a lot of people.
Okay, but that's you, I'm not gonna let that one just hang.
So it's like it's it's it's quite a difficult role, right?
There's a lot to it, and it's not so.
How do you find starting?
How is it like you know, coming fresh to it and being like, oh wow, because I I remember that I remember when I started.
I was working on Rest Framework, but I wasn't working on Django, and I was working on some other packages, but I wasn't working on Django, and Django is a much different beast from you know maintaining a third-party package.
And so I had Tim giving me help, I had Maris maybe give me nice little comments from the you know from on the side.
I had a lot of people helping me, but I needed that help too, and it was important to me.
So how you know it took a while to find my feet.
How you know.
Well, um, for me, I mean I'm when when people I know, people I care about ask me about how are you feeling, I am, and and I'm saying I I I feel useless.
I feel like I'm wasting the DSF money.
Why?
They say, I mean, you're you're like ideal for this role.
And I am like, uh I use this analogy.
Uh I I usually use analogies to explain things, and I have this one for for this particular situation.
I've I feel like uh using Django is, for example, like driving a car or driving, you know.
You might know how to drive a stick, you might know how to drive an automatic car, you might know how to drive different models, a bigger car, a smaller car, a truck, or perhaps a motorcycle.
You know how to drive.
And you might have, you know, the longer that you have been driving, you might have more experience, you know how to drive uh in a in a in a freeway or how to drive, you know, in a small road or uh a road without any any pavement.
Is that the right word?
I think pavement, yeah,
yeah, yeah.
So if you're an experienced driver, you know how to do these things.
But all of a sudden, I feel like I need to fix a car engine.
I'm like, I don't know how to do that.
I mean, it's like I get a report, the yellow cable is it should be tied to the red cable and it's not.
And I'm like, what does the yellow cable do?
What does the red cable do?
I don't know.
I know how to drive this thing very nicely, but I don't know how to fix it.
So all the so all all of a sudden, I am, you know, opening the the the the car.
Um it's not a trunk.
Hood, yes, thank you.
And I'm looking at the engine and I'm like, okay, I I I know that this is, you know, the refrigerant liquid, and I know that this is the radiator, and I know this is the engine, but I don't know anything else.
It's like I can see if a cable is not connected, but I don't know how to reattach it.
So uh that's how useless I feel at the beginning.
I I feel like someone with a previous record of contributing to the angle might have been uh more efficient from the beginning, more um useful from the beginning, and in doing these things.
I felt like I uh at the beginning, I felt like I was doing everything wrong, you know, comment messages, format of things, format of doctrine, format of, I don't know, tips, replies, uh drop choices that I that I chose on drop-downs, everything.
And while I understand it's a learning process, while I have you know conversations with you, Carlton, for the other people, and you were all super encouraging.
And and I have learned a lot, and Marius was super helpful, and other people were super helpful.
And the community is great.
They will never tell me uh you're wasting the DSS money.
I'm only telling that myself, you know.
Uh, but yeah, that's basically the uh the situation.
Yeah, I mean I remember when I started exactly at the because I wasn't contribute, I wasn't, you know, I d a patch in Django or two patches in Django, but that was it.
I wasn't a contribute, I wasn't maintaining Django when I started as a fellow.
I got the role because of my work in the other packages.
And then, you know, first day, ORM ticket.
Ah, okay, let's dig into the ORM, let's find out.
I don't know.
And the code, you know, we we got black these days, but it was rap, you know, wrap this, full stop here, right?
You know, the the code, the formatting.
I did a PR this week in Maris says, please wrap the comment to 79 cars.
This is years later.
Like, uh yeah, it's just like that.
It's just like that.
I know, I know, but still, um I I was coming from a leadership position, a technical leadership position.
I was coming from a position where I was very comfortable and I was very sure of the decisions that I was making, of the things that I was making.
When someone came to me saying, How should I do this?
I always had the answer, and I was very confident, you know.
So all of a sudden I find myself in a very uncomfortable position where I feel I don't know anything.
So that's also a personal challenge, you know.
That is some things that I need to work on and that I need to adapt to.
And again, all the people surrounding me has been nothing but sportive.
So um, yeah, it's it's more of a personal learning, actually.
And it's I I embrace it.
It's it's great.
Yeah, super.
And just from the outside, it you know, from why I'm watch what you do, and I'm just like, yeah, knocking out the park every week.
So super.
Let's talk about like a security bug fix release.
What was, you know, because that would be one of the early things you would do.
What was that like?
So like how do you do it, right?
My first security release is going to be tomorrow.
So that'll be uh yes, I saw your I saw your announcements.
So that um we're that this will come out a little bit after, but yeah, that'll be October 4th when it comes out.
Yeah, yeah, yeah.
So, well, right, sorry.
Uh it will be October 4th, which is tomorrow for me.
Um so the second release that happened since I started being a fellow uh was a security release, and that was already the assignment because we have one month each fellow.
So one month me and one month Maryus.
So in May, uh it was um Maryus' turn, and there was a security release, so he said, okay, we should uh you know screen share and I will uh walk you through the process.
So he did all the things, I took all the notes that I could, but imagine that at the time I I didn't even make a regular release myself.
So uh I took a lot of notes of things that I had no idea what were they, and what was part of a security release and what wasn't part of a security release, and is everything uh uh super relevant?
Where can I mess up this process?
And and I didn't have that view yet.
Anyway, I took a lot of notes, and then it was sort of like a faith thing that I didn't have a security release during my turn.
It was like all the month I was like finger crossed, finger
crossed, this was
a security issue.
We were coming up, we were having security, you know, uh reports.
So we will investigate, we will agree, as uh uh um the whole security team will agree on a path forward.
And what the decision was this is not a security issue.
I was like, yay, because next next my turn.
But last month, uh last month during September, we had this report, and and and actually I say, I mean, so for different reasons that I cannot uh discuss yet, uh, this needs to be a security uh issue.
So I decided, okay, this is going to be the month that I'm going to the security release, and and we'll see how that goes.
But um I'm not sure if you want to uh propose another question um or or if I can just build on top of what you you
yeah, build, build.
Okay.
So I I think that you said um uh how how is it like you know all the releases, the minor releases, the main releases.
And this is a little bit of a follow-up of what I said about how I feel being a fellow.
I still feel so since uh during the first two months as a fellow, I felt extremely frustrated for the things that I already shared.
And I was working actively towards reverting that.
You know, I I talked to people, uh, I I tried to focus uh on things that I felt I was adding value to, you know, and that helped a lot.
Um but um since then and still I sort of have this feeling like I'm I'm always a little bit behind on things.
You know, some sometimes Marius makes Mario Schmidt comment like, yeah, right now we're in this part of the process, and I'm like, oh, are we?
Really?
Okay.
So um yeah, I try, you know, I'm like running the trail from behind, and and I I I always barely catch it.
I think I'm still catching it, but um um and for the alpha release, uh I will be super honest, and this is I think the why of what I'm going to say is is uh is a mix of different factors and and and things I wasn't quite uh I didn't quite understand what was to be a release manager at the time, and I wasn't quite um I I
didn't have a clarity on what I I I had to be doing uh prior to the alpha release.
And in retrospective, I I it's hard for me to forgive me myself, you know, forgive myself for not having that clarity.
In that, I mean I know it's I know it went well, I know that uh um it's a learning process, but now you know, with with with with the information that I have right now, I felt like I should have been taking care of new features a little bit more actively than I did prior to the R5 release.
I didn't have that clarity.
Um now I know, and I I mean when when Marius mentioned this allow, I was like, of well, of course, that is obvious.
What I didn't think of is this sooner.
So, you know, I started putting all my energy towards that.
Um but yeah, I'm my overall feeling, the answer is I'm always a little bit behind of things, and I'm just catching up all the time.
And I try to do my best.
Uh regards.
I was following, I was following for five years, and I always felt like that.
Like it's just how it is.
And an alpha release is just the hardest thing in the world.
Like it's there's so many moving parts, so much to do, so many bits that aren't automated and difficult to work out exactly what you have to do from the checklist and where are the things, and you just have to do it several times.
It's a learning process, and I just think you did wonderfully.
Like you just, you know, everything everything about it just went really smoothly, and you know, you could for because you're in Argentina, like your time zone's well behind, but like you know, you put the release out, and I didn't know whether it was gonna go out that day or the next day.
But you know, when I woke up in the morning, it was like you've got you got obviously got it out in your later afternoon, and it's like oh, it's just super and glitchless.
So I just anyway, I keep saying the same thing.
You're doing a great job, and it's just lovely to hear your experience because it's just mirrors mine exactly.
It's like it's just you've got that feeling.
I never ever ever got away from that feeling.
Like an alpha at least, just you
know okay.
So now I'm a little bit worried.
Am I going to feel like behind all the children?
No, but you're you're a much more solid professional than I am.
You'll be you'll have it all down in no time at all.
Well, thank you.
I think we're both very solid professionals and maybe in different ways, but uh okay.
Well, welcome to the love.
So I I've heard Carlton mention, but for you, um, are there any particular features or new things in 5.0 that you're excited about or that were challenging?
Like, you know, being on the inside, what was that?
What was, you know, what's your perspective?
I got I have like a mixed feelings toward that, uh the answer to that question, because I have like two things.
One thing is the one that I was the most involved with, so I started to grow, you know, some some I was very fond to the thing that I that I invested on.
This is uh something that uh Nick and Tom started, which is you know supporting dictionaries for choices in in in in model field uh choices, because we already had well, sorry, I'm mixing some things.
So support and dictionaries as as or any mapping for defining choices, that is something that is new, and there was a lot of work put in that, and I and I push it to the final line, and uh, and that feeling of you know uh completing something and having that merge was was amazing.
So I have this you know special place in my heart for that feature.
And Gordon, I just want to say that that was a great finish off because that PR was sat there for a year and a half or two years while it was sort of just bumbling away of oh, this is really hard to finish, and you picked it up and took it well over the lot.
So yeah, well, and and then with uh Nick's work, um he took the normalization of choices to the next level in his PR.
So with that work, uh groundwork in place, it was super easy to provide uh support for callables for model field choices.
So you can now define your callable for that, and that is something that I, as a user, as a driver, of course, uh I have wanted for a long time because I have concrete use cases for for that.
So um that that's one thing that that I that I really appreciate about the release.
And then the other thing is, yes.
Of course, I just wanted to ask on that.
Did did you result how did that work out with migrations?
Because one of my sort of bugbears, I know we had a half conversation, but I didn't follow off quite how it finished.
But one of my bugwares is you change the choices and then you get a migration.
It's like, do I really want a migration for this?
I don't know.
How did that wrap up?
So um are you familiar?
I just got familiar with it.
Are you familiar with how the the callable default is defined in migrations for a model field?
You know, you can have a callable for the default.
So basically
it's the callable path, it's the whole import path for the Yes.
So basically, yeah, so I I mirror that.
Uh, when you define a callable for a default, what you will get in the migration is the actual import path of the function or method that you're defining for that uh default argument.
So the migration serializer already had all the machinery in place for saying, okay, so this is a function, I will do all the magic necessary in order to serialize this into something that works.
The only thing that I needed is uh on one hand to uh to say on the model end that when you have choices uh uh in the deconstruct method of a field, it was really important, you know, to be sure that the choices was returned in the deconstruction result as the function itself, because for supporting dictionaries and the normalization of choices, Nick uh started using a wrapper around
functions for very specific reasons.
So we needed to unwrap that and to provide the function in the deconstruct module.
And then the other point, which was a little bit um uh a parallel thing, but it was uh a nice thing to have.
Um one of the use cases for having callables for choices will be to have you know computations that might be potentially expensive, either CPU bound or EO bound, uh, to be cache.
So you might use the uh cache decorators from the Python standard library.
So if you if you use those, uh the serializer for migrations will fail because it will not see the function as a function, it will see the specific type that is returned by the cache decorators of Python.
So we added support for that.
Well, actually, Nick added support for that, and that just worked.
Does that answer your question?
It does, because I think I can change the implementation of my function without generating a um migration.
Yes, yes, brilliant.
That's what I want.
Yes, and then that's what I want as well.
Brilliant.
Sorry, that's a deep dive there.
Um so what was the second thing?
The second one, yes.
Uh the other one that I really, really like, I wasn't involved nor in discussion of the feature, not in discussion of the design, not in any of the reviews.
So I might get a small detail wrong, but you know, having the compound fields where you you're able to uh I I love that.
Uh I mean I have many projects that define the user full name as a property where you combine the first name and the last name, and you know how all this logic, whether one of the two is empty and you will not have uh space in between or the order or whatever.
And and being able to define that as a as a field, I I mean, I think that's amazing.
That's just what I'm saying.
Yeah, I was I was thinking about it today that ties in with the um with the lookups.
Um so I had a I was looking at an enumeration, and I've got a property which picks it, is it is it one of one, two, or three from the enumeration?
And to have a you know a generated field that had that, all you know, the other option is to have a lookup which encapsulates that logic just makes your your code a lot cleaner, you know.
Yeah, yeah, yeah, yeah.
Yeah, absolutely.
Um well, in the past I have tried to to to work around this, the lack of of this feature which is now available, uh, by having either annotations on the overriding the default
query set
and and having annotations in there, but that will not provide the same attribute name at the instance level.
So if you just do a get, you will not get uh you know the the the the same attribute, uh calculated attribute on the instance.
So you will need a property, but the property cannot be named with the same string that you use for the annotation.
So um I love that feature.
Yeah.
And of course, I mean the the um DB defaults, uh, I think that's great.
I haven't had that specific need myself.
Well, actually, I think I have.
I haven't given enough thoughts on how the feature could could solve uh very challenges that we have had have had at the professional level, you know, with my when adding uh columns to big tables.
So I'm pretty sure that there is a benefit there, but I haven't you know put any time to thinking about that, but I'm sure that um well I know that's that's an amazing and great feature.
And it was an enormous effort from the people involved into getting that in.
So I think that's um that's also amazing.
Yeah, I mean both of those tickets have m were open more than a decade, right?
Yeah, you know, so not non-negligible.
Can just step back that, can I ask sort of have you got a take?
Have you got uh thoughts on like dis despite the fact that Django is really old, that these massive new features are coming in?
Sorry, what's the question?
I missed Well
the question is do you do you have a take on like you know, despite the age of Django, that these massive new features
are coming in?
I suspect it's around how do we communicate this to other people?
Like, right on the inside you see it and you work with it, but people on the outside don't know how active and vibrant Django is as opposed to other frameworks that are 20 years old and pretty much dead.
Yeah, okay, that's a good question.
And my answer might be a little bit wider than the question, but uh um there are some things that I think that are relevant for for that.
For example, I have this um colleague from Cordova that that we were just visiting Cordova during September, during spring break, uh, because it's spring in this part of the world.
And you know, I I got together with some people uh from from the university uh years and friends.
And I said, like, I'm super happy, I just released Alpha One for Django 5.0.
Oh, okay.
So they they they asked questions that I didn't quite understand, but then I realized they were asking what's the feature that drove the release of 5.0.
Like uh instead of knowing that there is a release cadence that and the releases are going to happen with whatever features that are made it in, they thought that the decision of we're releasing uh a big new major version is based on, okay, we have this set of things that we want to accomplish, and only when we get this ready, uh, for example, let's say, so we want to provide async across the whole stack, so
we're going to work towards async, and that will be Django 6.
So some people think that when there is a major release, it's because there is a specific feature that was planned, developed, and completed in order to, I will say justify, but I don't think that's a fair term, justify that release.
And I mentioned, no, no, no, no, this is something that is planned, and everything that gets in, it's it's there.
So I mentioned, you know, are many of the things.
But I think that there was that confusion.
And I sensed, but this also might be unfair, a feeling of disappointment in that response, in that, you know, like, but then why would I go to Django 5 if there is nothing like concrete or specific that I can say, I'm running now Django 5 and has this thing.
And I was like, but you have all these other things.
Yeah, but if I don't need them, it's like, well, but I don't it's so it was like an awkward conversation in in those terms.
I mean, very
friendly, of course, but I I felt like perhaps communication in that front is something that could um pay off, you know.
Um I'm not sure how, and I've been thinking about this thing about communication from the Django community, the Django project as a whole.
And I'm stuck a little bit in in things that are not working.
I could list things that are not working, but I don't have a counter proposal to make that criticism constructive.
I only have criticism right now, and I don't think that's fair, more so in my position.
Um I mean this is this is something we always ask guests, you know, if you could be you know be in charge and wave a wand, what would you change?
I mean, for me, especially as a con as a content creator, dealing, you know, I'm uh beholden to the release schedule of the you know, dot oh, dot one, dot two, and then the next thing.
Um I think it's I would love to revisit that decision.
Because I I often hear people don't assume that there's some major thing.
And it's just nope, it's whatever made it in on time and we have an LTS policy, but people assume rightly that 5.0 is like this huge, huge thing versus 4.2, and it's not always the c it's often not the case.
So, you know, for example, like what Python does, Python's on 3.12 just came out today.
That would be a lot clearer and it'd make people feel like they're not so far behind and it would clear up a lot of this confusion.
Um but I think so anyways, if I could wave a wand, my in my top five is changing the version numbers for sure.
Yeah, I mean I agree.
I I I think if this would be, I don't know, uh 4.6, it will be way clearer.
Uh uh when compared to 5.0.
Okay, good.
File an agreement all around.
So yes.
And then regarding your question about the magic wand.
Um yeah, please, yeah.
I'm thinking myself, you know, a hole here.
No, no, no,
come on.
But this is, you know, this this is what we're not gonna cut this.
You know, this is one of the the things about the Django community is that you know it's there's online chatter and then there's Django cons if people can go, but there is it's not often that people can just have a conversation about it.
And you know, I think others might feel the same way.
Before you say your magic, well, I think the communication point you've made, I think you know, we can just acknowledge that.
We've I think historically we've not done the best job in communicating.
And that's that's okay.
We're you know, we've done other things really well, and you can't necessarily do everything perfectly every time.
But so the um this thing that bugs me is that I during the I was almost 13 years at Canonical and we used Django.
And while we kept an eye on releases and security releases, because you know we were running servers, running Django, so we needed to be very mindful of that.
I mean, again, this is like a shared uh responsibility, but we didn't have any visibility of news on Django, and we maybe didn't follow Django on the right channels, I mean perhaps Twitter or the thing or a news feed.
But it's like I I never got this, I don't know, trigger that will prompt me to think, am I following Django in the right channels?
So with other things that I it's not that I don't care about, with other things that are less important to me, it's like I I I guess the I get these, you know, um reminders that are there, and I get to decide whether I want to know more about these things or not.
With Django, it's like now that I am super involved, I see a lot of things happening, but I have this feeling, and it's like absolutely subjective uh measure that I'm going to provide.
I don't know, only 10% of the people using Django get access to this stream of information.
And I will say 5%.
I don't know.
I feel like from the whole uh users of Django, a very small subset is getting to know all the things that are going on.
Yeah, I think that's absolutely right.
With issues, with features, with releases, with the help needed, with uh, I don't know, how to contribute, how easy it is, or how not easy it is, how they can you know come and help.
I mean, it's fair that uh anything that you do actively requires you know time investment, and not everyone has it, and and and and I can't speak uh for for myself uh regarding that.
But then there is also you know lack of lack of uh lack of information.
And I really am not sure what to suggest to do differently because I don't know, is it like buying Twitter spots to to to I don't know to advertise Django?
No, is it I don't know having you know YouTube pay time to advertise Django?
No, I I don't know, I don't know what it is.
I I don't think those are I'm
just giving examples of things
that I um uh but I I I would like to see more prominent Django things happening in in in in the tech flow, uh tech world sorry, uh of information and and and and I don't see that.
Haim has talked about Haime's the DSF president has talked about it's one of the sort of four things that the DSF is meant to do is to promote the usage of Django and perhaps that's the one that's been left historically you know no no blame to anybody but there's just what have been left this is Heim's point from he made in um Porto his DjangoCon Europe to talk there was that you know there's one thing that the DSF could do maybe not you know the current board the current structure it would need some thought as to how that would happen but be to actually promote Django more you
know try and shout from the rooftops that actually it's really cool and there's lots of progress and you know there's new features and well
yeah well there was a panel at DjangoCon Europe on this uh this this year that that um Heim was at um and the problem is that it's work.
The problem is that peop you know and and we've we've made this point before but the DSF is kind of the only body place that people think can decide things, but it already has its hands full and it's it's just seven members, ostensibly one hour a month.
So you know working groups um I mean the point I made in that disc in that panel and it's part of why I'm I stepped away from the board after three years because I don't want to um I want people with new energy to come in is that we we need, you know, we we probab I think we need an executive director or someone in a paid position to do all these things and maybe decide because people have lots of ideas but we're all busy and it's hard, you know, a lot of these things are real work.
So part of the um Django news newsletter which I do with Jeff Triplett from Refsys is to fill that need and because being on the board I could see that um there wasn't anyone really to do a newsletter and then even if we did like so say I started an official Django newsletter, well I wasn't going to be on the board indefinitely then that becomes part of the basket of Django things that have to be done, right?
Just like new code features as a fellow like you're putting the onus on future people.
So much the way we have third party packages, that's sort of to me how I think of the Django news newsletter, how I think of this Django chat podcast.
But it's I can attest both of those are real work and um I think you know Django like for example do you think Django could benefit from a third fellow with that you know would that speed speed up development you know like it
absolutely yes Django benefit from a third fellow.
But more so and this is something that I keep thinking and and and it was a it's a recurrent thinking and and it was something that bugged me at the beginning.
I wasn't sure I mean uh how to prioritize things there is so much to do how do you prioritize things when when I was working now in a conversion environment uh it was easy I had a manager and we had a very clear you know goals so it was very easy for me to prioritize things and get to the different things in in a in an order that I felt added value to to the ultimate goal and and I I could lead I could lead people
in order to you know follow those priorities and and add value.
I could I don't make suggestion or change a few things but that is all like this ultimate goal.
Being a fellow I sometimes you know uh think okay I should change the release uh documentation so you know all these things that you said uh Carlton about what are the pre the the alpha release tags which are security tags I will do a complete refactor of that and having you know even check boxes or or a template that you can copy and paste and have somewhere else and you can you click on the things that you did automate things.
We can automate like a lot more of what's already automated.
And then I okay but there are a lot of tickets not three tickets to try it a lot of open PRs giving feedback to community members contributing I think is super important because if you have someone putting in time to provide to try to contribute and you are not acknowledging that and and and get and providing feedback that is uh um not only waste not wasted time but the time that the other person put there is not being um valued in the sense of uh of having val
ue from that but also you know perhaps that the that contributor discourages uh get discouraged about continuing contributing because you know they feel like they are not getting you know enough attention so there are many things that can be done uh I don't know and perhaps you know thinking about a proposal and how to communicate better um writing more blog posts i i I could write things and try to publish in the different channels or I don't know seek more opinions about how to communicate where would you like to see communic and news about Django but
then as a fellow and I'm also uh part-time as you work on what do I do first where is put the the the most value in I mean uh how do I decide and I don't have a manager I mean there there are good reasons for that I don't have a manager or someone you know to to brainstorm well I discuss for knowledge of course but uh it's unclear uh where the money is best spent I don't have that answer and I would love to have it with a third fellow maybe there could be
maybe this is just me uh uh like I don't know rotation about uh writing content where content is not you know content like the the marketing word but more like going through documentation fixing examples automating things uh fixing docs specifically for for for developing Django for releasing Django and the other two might you know uh devote to try engine tickets and and reviewing PRs and you know making that a a run-robin th
ing if or or maybe someone enjoys doing something more than others or feel that they have more value maybe go in that direction I don't know I think that's something to evaluate if if possible at all at all.
But I think I think one thing to tweak out of everything you've said is is that there's just more work than the fellows can do.
And so you know one thing that it if quite said oh well the fellows could do it the fellows could do it the fellows could do it.
No they couldn't they they literally can't take on more work than they've already got any more than the board can.
So if we want these things to change it needs to be people from the community coming forward and and and helping to offer that that that work and even if that needs a bit of input from the board or input from the fellows it can't be like oh you know we've got these this this structure and that takes care of an infinite amount of work.
No it barely copes with the work that it's already got it does a very good job and it keeps going and Django is super stable and has all these wonderful monthly releases and all the rest of it but there is a limit to what's doable with the resources we have in hand now.
Yeah.
Well then that's why having fellows with different backgrounds is so important because you bring different decisions you know really the fellows I think have a much bigger role than most people realize right I mean it's you and Marius are contracted for time and it's like here is this pile of work and uh you know go for it right like you you can get individual feedback but there is no manager.
It's it's really on you to decide those things and um yeah it's a bigger role than it seems from the outside for most people.
Yeah I would love to have someone say and I mean guiding towards priorities but I understand I mean I understand the the the structure so far I have been focusing on enabling the community to do things.
I've been trying to do this you know seeing that the machinery works trying you know to put oil on the on the on the gears that are not working properly and I've been trying to focus on that because I feel that that as but adds value even if I don't know the internals of the RM and I cannot do clever things with the ORM um yeah I think that but but yeah um I think fairlo would surely help I'm not sure if that's feasible though.
If you if you needed um if we what really wanted input you could ask reach out to the steering council or the fairship committee or you know other people and you know that that there there are people who would opine I think on that.
It's hurting cats a little bit though yes it is
thank you yes I mean in a way I feel I'm not imposing in the bad way but a little bit you know the trying to find answers that perhaps are not there and and having people think of things that
ask for forgiveness not permission right
yes so I I've been going with that uh motto and and yeah I
I've been trying you know to to from my point of view what is the most value uh whether I do this or that and and I've been trying to follow that that that guy and
and for for me one of the great rewarding things of doing the filler role was that it it was very autonomous and very you know you got to choose and you got to make those judgments and you were trusted to do so.
And you know obviously you have to you have to repay that trust by you know good faith.
But that you know over time that was like yeah okay it you know it really it I found that really rewarding.
I don't know.
I think well I know several members of the steering council for example feel I mean of course most of the people there are in lots of other roles in within Django but that specific body is not doesn't do much.
That body for example isn't doing a ton.
But yeah but it all comes down to a community thing.
That's one of the the challenges how do you make things happen but it's also just do you know again that Django has a third party package system.
I I think I in marketing, you know with the newsletter, with the podcast, like we can adopt that mindset and no one's gonna stop you from doing the work and then over time either it's put into Django or it's not but it can still be useful.
I mean it's pr one of the things I think about Django that's astounding is that our conferences are volunteer run.
Like that like no one does that that I'm aware of like especially tech conferences which often are a a lot a lot a lot a lot a lot of work and a lot of money you have to deal with and that's something the DSF deals with trying to help DjangoCon US Europe now Africa but it's it's almost an astounding thing like what you have a conference of hundreds of people in a different location and it's just like people in the community do it like out of the goodness of their heart because that's you know speaking of real work that's crazy real
work to to do to do one let alone um so yeah but it's communication there's so many things like that within Django translation teams all this stuff that just people aren't aware of um and yeah how do we communicate that I don't know
am I going to see you in Django Kong US?
Yes are you gonna be there?
Yes yes I think Carlton's staying home no I can't
I can't make it this year I've had um something of a year and uh I'm gonna take the autumn off but you know hopefully next time you coming you can we get to Django Kong Europe next spring
I will I mean I'm currently planning around that around that in that positively is that okay I mean planning towards that
well if you make it there I'll definitely be there so if not the next we'll go
they want to go with the with the family we love Spain and
uh if we can we're going to go with the family.
So yeah if not I I would try to be there.
I was just gonna say one thing at the DjangoCon is and I know we're uh pretty close to time is that there are these sprints at the end and one of the proposals that has been coming around is is there a way to have sprints outside of the Django Cons you
know either
online or you know dedicated weekends and uh that seems like things like things moment momentum is building around that as something that would really help the community and um yeah just say that as a a positive thing.
We've we've listed some maybe negative things but that's a very positive thing and I I expect there'll be more conversations at ShangoCon US around actualizing that idea.
That's good.
In fact um the I have participated of Django Sprints many years ago more than 10 years ago in all in all the occasions it was a Django Sprint in the context of another uh event for example in Argentina there are these Pi camps which are really camps with around Python and we got together in very nice places which are not without tents but with you know with uh with with housing and
we do coding for three years and many times having you know like a group of people interested in Django we have done Django sprints and then um the first PyCon US that I went to which is in Atlanta in 2010 I went to the Django Sprint that was organized within the Python sprint.
So I think that's also something to consider you know organizing Django Sprints in the context of a bigger thing because it may help.
Yes.
Yeah yeah exactly and it's a it's a thing that happens in other frameworks and languages so it's not us inventing reinventing you know inventing the wheel it's reinvent whatever you know I mean it's some doing something that is already been done.
Yeah yeah okay yeah
okay I think we're I think we're up to time no so um Natalia is there any well we've got you and you've got the you've got the mic is there anything else we didn't call out anything you want to say or you know
uh no well we had in our agenda to discuss inclusion which is a topic that I'm very passionate about.
Actually I'm I'm giving a talk in DjangoCon uh US about that topic and I will love to discuss that uh in in this in this uh space uh perhaps in in the future uh but that will be that will be great I think it's it's important to discuss and and and and reflect and and and and and keep bringing it up
okay well have we got time to do it now or not
well I well I think we're just ti
red yeah okay
okay okay you're waiting though
maybe maybe after it after it comes out we can have you back on and have a link to it in the
right I mean I I think that would be great because uh after the talk if all goes well I hope um we will have you know perhaps more concrete um material that we can grow and discuss because I have I have I'm I'm preparing the the talk and I have already you know living a lot of things uh out of the talk or or compressed topics that we can you know uh dig de
eper so so yeah maybe after
let let's have you back on after Django Con and we can talk about that that would be amazing
yeah okay great thank you very much for the invitation I have really enjoyed talking to you
yeah no really good talking to you really good
and looking forward to see you in Django Kong
I know yeah that'll be exciting that'll be so exciting
and I will see you next year in Europe Carton some way or another
yeah one way or
the other yeah
one way or another yeah
well we are at DjangoChat comes that's where to find us new episodes coming every two weeks and we'll see everyone next time bye bye take care bye