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 Dawn Wages, Sarah Boyce, Tim Schilling, Sarah Abderraman, 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 in 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, but 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 dates. The best place to learn about them is our website, djangonaut.space.
But since I have your ears, I'll tell you that the 2024 Session 1 program will begin on January 15th.
It will run for 8 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 it 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.
Everyone who would like to contribute to Django or third-party projects can apply.
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 DjangoNauts, providing connection as needed.
So, have we convinced you yet?
You can learn more at djangonaat.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 djangonaat.space
Hi, welcome to another episode of Django Chats, a podcast on the Django Web Framework.
I'm Carlton Gibson, joined as ever by Will Vincent. Hello, Will.
Hi, Carlton.
Hello, Will. And this week we've got with us 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 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?
tell us all about you how did you how did you find your way into Django and where you are now
but like go 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 just sit back so um I started with computers uh 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 and the
social environment that I was in you know it wasn't that common for female to 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 in in you know family games and commodore computers but it wasn't that common
for female and because of I will say lack of encouragement and lack of self uh interest in
that. I didn't get involved in computers. And what I did like during high school was everything that
was related to math, accounting, and economy. And I was really, really convinced that I was going
to be an accountant. In fact, I really liked the numbers. So at one point, I said, I'm going to be
an accountant. But then I realized that I also really liked, you know, organizing things and
and having procedures for things.
So I decided, no, what I want to really study
is system engineering.
And I started talking with the partner of my aunt,
and he was at the moment studying computer science
in a school in Cordoba, Argentina,
which is, sorry, a faculty,
very, it's known for being very 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, started the computer science career there.
So he was studying that.
And he was like, no, you want to study computer science, no system engineer.
And I'm like, why?
And he explained.
And I was like, OK, but I need to study a lot.
I mean, I need to put a lot of hours.
And I'm not built for this.
And he was like, no, yes, you should try it.
So I started that career.
I started computer science when I was 19.
And the first years during the career, you barely touch a computer.
We had all the theory about, you know, paradigms and logic and mathematics,
discrete mathematics and all that.
And during my second year, we started having a little more of computers.
And we have this subject, which was organization of a computer.
you know a little bit more about the different components
and the electronic components and things that you can do with that.
And it was really funny because one professor said
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 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 anyway, he was an amazing, he's, sorry, an amazing professor.
He explained all the things, and I graduated, and I came to love computer science.
I was a student assistant while I was still studying.
I was then a teacher assistant when I graduated, and I was for many years, and sort of in parallel
close to when I was close to graduate. I was living for two months in France, in
Paris, doing an internship at the INRIA Institute. It's the Institute of
Research, of Informatic Research, I believe it is. And when I came back, well, I did
my final work, which is called a thesis in Cordoba, but it's a work after a
a five-year degree that you study computer science and before graduation i got um um asked uh from a
i got offered a job from a local startup in cordoba which was called except just like you
know the tri-except clause it was except so they started working with python and at the time this
Since 2005, they work with SOAP and a little bit of Plum because Plum was just, you know, a new thing.
So I already knew some Python, very new.
It 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 startup and they were sort of like a consulting.
They were selling, you know, developer hours.
They were working with people from the U.S.
So the other project that I was involved with was building media management system for church,
some part of the church of the United States where there will be presentations.
They will stream during the mass.
I'm not sure if mass is the right term, but I think it is.
And this media management system was built in Eiffel.
You know the programming language?
Do you know what that is?
Eiffel?
Eiffel?
I'm not sure how you pronounce it.
Eiffel?
I've not seen it.
Like the tower, you know?
Eiffel?
Yeah, yeah.
I've not seen that one.
Anyway, carry on.
Ah, it's amazing.
It's an object-oriented programming language, imperative,
And it's all the nice theory about programming languages,
it's like put in that language.
But it's not very common.
It's not very popular, as you can see.
So, well, I also worked 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 economically, financially.
And at that time, in 2009, I joined Canonical.
And at Canonical, I joined 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 1 was the service that would provide, initially, file sync capabilities.
And then it would also provide music streaming, contact sync, and some other 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 one framework that would run on the server.
And on Canonical's cloud.
And then I will have the daemon 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'll be in charge of the daemon and the server.
It was, I learned a lot.
The people working 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 senior to senior, working with them.
It was a very fun experience, and I enjoyed it a lot.
I was then moved to the Ubuntu 1 desktop team, where we built a desktop UI for the daemon,
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 PyGTK and PyQt.
That was also fun and very interesting. I learned a lot as well. And then I
enjoyed 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 back-end services, and it was all Python and perhaps some Twisted, some Django, and
And we were in charge of the Ubuntu single sign-on service, which was Ubuntu Payments at the time, which it was skilled afterwards, and still be in charge of the Ubuntu 1 server services.
At some point in 2014, Ubuntu 1 as a product was shut down.
The single sign-on remained and still is being used by Canonical.
And I was moved to the team behind the package store.
Canonical has had many package stores 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
available to users and not needing, you know,
to go through all the Debian process.
And so I was involved in that, and then that package store started morphing, and I believe
that's the right pronunciation, that's the right word, I'm not sure if I'm pronouncing
it properly, it morphed into support, I mean, Canonica started developing new package formats
to, you know, share software.
So after the devs, it was the Qlik packages.
And then soon after, it was the Snap packages,
which had an initial version, which was very similar to Qliks,
and then a second version, which was completely different to Qliks,
but still called Snap,
which is what currently Canonical offers as a package format.
And they really like you to use.
You really like to use?
No, they really like you to use it.
I will try to stay away from making judgments about that.
I will try to keep to be objective, as objective as I can about the topic.
So, yeah, I was involved in all this morphing.
The original Django service was providing the package store morph 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 we were going to try
to deprecate this Django monster and do a spin-off
of many microservices, which weren't that micro,
sort of like a medium services built in Python and Flask.
So I believe, well, I left Canonical one year and a half ago,
And I think that they are still using a little bit of everything,
a little bit of the monster,
a little bit of the monster's child or derivatives.
And, but yeah, I decided, well, during my time in the package store,
I became a technical leader and a technical architect of the store.
And well, I left a year and a half ago.
And it was, overall, it was a great experience.
I learned a lot, a lot, a lot.
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 in charge of, you know, teams and how to push a feature forward.
And I dealt with customers, with commercial customers that will use the Snap Store for
IoT things.
And I think that's a fair summary.
That's amazing.
That's amazing.
Just the best summary we've had in doing all our episodes.
We're 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 Soap, you've got Twisted, you've got Django.
I never used Tornado, for example.
I have no idea.
Or Pyramid, I believe it's another one.
I have no idea either.
But yeah, I love Twisted.
That's super.
Now it would be FastAPI would be the one now, right?
Well, yeah, I haven't tried it in pet projects.
I haven't used it in anything, you know, serious in terms of stressing it.
But yeah, I really like it as well.
So can I ask then what attracted you to being a Django fellow then
or being the fellow when that role came up?
That's a good question.
So as I mentioned, I naturally tend to try to organize things,
organize people, organize work, organize features.
And at the same time, when I left Canonical,
I was extremely, extremely burnt out.
I was like, I don't want to work ever again.
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 is still working.
And I was able to say, OK, 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.
I could wait.
And I could also decide from the point of view of what I really wanted to do.
I always loved Tiango.
And I wanted to keep involved with Tiango.
At the time, it didn't occur to me to start, you know, contributing to the angle.
That is something that, or retrospective, I would have loved to do.
And I will explain why in a minute.
But I started working like six months after I quit with RevSys, Revolution System,
the, you know, the consultancy for the angle services.
And I realized how much I loved working with Django.
And then in February, almost a year after I resigned,
I saw the opening for Django 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 shape and the PRs in shape,
and you have to deal with security issues.
I also did that while in Canonical.
I was part of a response team when we got reports of malicious apps and stuff.
So, well, I can do this.
And this is Django.
And I will be contributing to Django.
And I will get paid to contribute to Django.
It's win-win-win, no?
Yes.
I mean, 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 recommendation letters from people.
And I put together my application, and I sent it, and I got the position, and I was extremely happy.
I felt and I feel so lucky, so fortunate to have this opportunity.
And then when I started, actually, you know, the fellowship, I didn't feel so useful.
But that's not the question that you asked, so I wouldn't get into that yet.
this is why i i i i i i this no no no 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
was 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 and 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 you know
it took a while to find my feet how you know well um for me and when people I know people I care
ask me about how are you feeling I am and I'm saying 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 I use this
analogy I usually use analogies to explain things and I have this one for for this particular
situation I feel like 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 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 in a in a in a freeway or how to drive you know in a small road or
a road without any any pavement is that the right word i think 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 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 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 sudden I am you know opening the the the car um it's not the trunk hood yes thank you and I'm
looking at the engine and I'm like okay 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 at the beginning I felt like I was doing everything
wrong you know coming messages format of things format of doctrine format of of I don't know
tips replies uh choices that I that I chose on drop downs everything and while I understand
it's a learning process where 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 Mariusz was super
helpful and other people were super helpful and the community is great they will never tell me
uh you're wasting the dsfs money I'm only telling that myself you know uh but yeah that's basically
the situation yeah I mean I remember when I said I had exactly because I wasn't
i wasn't you know i don't a patch in django or two patches in django that was it i wasn't a
contributor 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 coat you know we got black these days but it was wrap
you know wrap this full stop here you know the the formatting i did a pr this week in marriage
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
leaders 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
come to me saying, how should I do this? I always had the answer and I was very confident, you know.
All of a sudden, I find myself in a very uncomfortable position where I feel like I don't
know anything. So that's also a personal challenge, you know, there are 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 supportive so um yeah it's more of a personal learning actually and i embrace it 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
like how do you do it right my first security release going to be tomorrow
so so that'll be uh yes i saw your i saw your announcement so that um we're this will come out
a little bit after but yeah that'll be october 4th when it comes out yeah so well right sorry uh it
will be october 4 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 the assignment because we have
one month each fellow so one month me and one month Marius so in May it was Marius' turn
and there was a security release so he said okay we should you know screen share and I will
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 didn't even make a regular release myself so 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 super relevant?
Where can I mess up, you know, this process?
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 term.
It was like all the month I was like,
Finger crossed, finger crossed, it's not a security issue.
We were having security reports, so we will investigate,
we will agree, 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 is my turn.
But last month, last month, during September, we had this report.
And actually, I said, I mean, so for different reasons that I cannot discuss yet, this needs to be a security issue.
So I said, OK, this is going to be the month that I'm going to the security release and we'll see how that goes.
But I'm not sure if you want to propose another question or if I can just build on top of what you do.
Yeah, build, build.
Okay, so I think that you said, 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 say about how I feel being a fellow.
I still feel, so since 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 talk to people, I try to focus on things that I felt I was adding value to, you know, and that helped a lot.
But since then, and still, I sort of have this feeling like I'm always a little bit behind of things.
You know, sometimes Mario makes a comment like, yeah, right now we're in this part of the process.
And I'm like, oh, are we? Really? Okay.
So, yeah, I try, you know, I'm like running the train from behind and I always barely
catch it.
I think I'm still catching it, but, and for the alpha release, I will be super honest
and this is, I think the why of what I'm going to say is a mix of different factors and things.
I wasn't quite
I didn't quite understand
what was to be a release manager at the time
and I wasn't quite
I didn't have a clarity on what
I had to be doing
prior to the alpha release
and in retrospective
it's hard for me to forgive myself
for not having that clarity
in that, I mean, I know it went well.
I know that it's a learning process.
But now, you know, with 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 RFID release.
I didn't have that clarity.
And now I know.
I mean, when Mariusz mentioned this allow,
I was like, 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.
But yeah, 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.
I was fellowing 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, 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 going to go out that day or
the next day, but you know, when I woke up in the morning,
it was like, you got, you got, obviously got it out
in your later afternoon and it's like, oh, 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.
Cause 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 release, just, you know.
Okay, so now I'm a little bit worried.
Am I going to feel like behind all the time?
But you're a much more solid professional than I am.
You'll have it all down in no time at all.
Well, thank you.
I think we're both very solid professionals, maybe in different ways, but okay.
Well, welcome to the love.
So I've heard Carlton mention, but for you, 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, you know, what's your perspective?
I have like a mixed feelings toward that, 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, I was very fond to the thing that I invested in.
This is something that Nick and Tom started, which is, you know, supporting dictionaries for choices in model field choices.
Because we already had, well, sorry, I'm mixing some things.
So supporting dictionaries 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 line so yeah well and and
Then with Nick's work, he took the normalization of choices to the next level in his PR.
So with that work, groundwork in place, it was super easy to provide 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, I have wanted for a long time.
because I have concrete use cases for that.
So that's one thing that I really appreciate about the release.
And then the other thing is, yes.
Of course, I just wanted to ask on that.
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 bugbears 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 are you familiar?
I just got familiar with it.
Are you familiar with how the callable default
is defined in migrations for a model field?
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 mirror that.
When you define a callable for a default,
what you will get in migration
is the actual import path of the function
or method that you're defining for that 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, on one hand,
to say on the model end that when you have choices
in the deconstruct method of a field,
It was really important, you know, to be sure that the choices was returned in this deconstruction result as the function itself.
Because for supporting dictionaries and the normalization of choices, Nick 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
a parallel thing, but it was a nice thing to have.
One of the use cases for having callables for choices
would be to have, you know, computations
that might be potentially expensive,
either CPU bound or IO bound, to be cached.
So you might use the cache decorators
from the Python standard library.
So if you use those, 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,
the correctness of Python.
So we add a support for that.
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 migration.
Yes.
Brilliant.
Because that's what I want.
Yes, that's what I want as well.
Brilliant.
Sorry, that's a deep dive there.
So what was the second thing?
The second one, yes.
The other one that I really, really like,
I wasn't involved nor in discussion of the feature,
nor in discussion of the design,
nor in any of the reviews.
So I might get a small detail wrong,
but, you know, having the compound fields
where you're able to, I love that.
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 where one of the two is empty and you will not have a space in between or the order or whatever.
And being able to define that as a field, I mean, I think that's amazing.
Yeah, I was thinking about it today that ties in with the lookups.
So I was looking at enumeration, and I've got a property which picks,
is it one of one, two, or three from the enumeration?
And to have a generated field that had that,
or the other options to have a lookup which encapsulates that logic,
just makes your code a lot cleaner.
Yeah, absolutely.
Well, in the past I have tried to work around this,
the lack of this feature which is now available,
by having either annotations
on the overriding the default query set
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, you know,
the same 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 I love that feature, yeah.
And, of course, I mean, the DB default, 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 solve the challenges that we have had at the professional level, you know, when adding 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, well, I know 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 also amazing.
Yeah, I mean, both of those tickets were open more than a decade, right?
Yeah.
So non-negligible.
Just step back there.
Can I ask, sort of, have you got a take?
Have you got thoughts on, like, despite the fact that Django is really old, that these massive new features are coming in?
Sorry, what's the question?
Well, the question is, 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 there are some things that I think are relevant for that.
For example, I have this colleague from Cordoba.
We were just visiting Cordoba during September, during spring break,
because it's spring in this part of the world.
And, you know, I got together with some people
from the university years and friends.
And I said, like, I'm super happy.
I just released Alpha, Alpha 1 for Django 5.0.
Okay, so 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, instead of knowing that there is a release cadence
and the releases are going to happen
with whatever features that made it in,
they thought that the decision of where releasing
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, for example, say,
so we want to provide async across the whole stack
so we're going to work towards async
and that will be the angle 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 would say justify
but I don't think that's a fair term
justify that release
and I mentioned no no no
this is something that is planned
and everything that gets in
it's there
so I mentioned you know
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 then why would i go to the angle five if there is nothing like
concrete or specific that i can say i'm running now the angle five 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
And so it was like an awkward conversation in those terms.
I mean, very friendly, of course.
But I felt like perhaps communication in that front is something that could pay off, you know?
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 things that are not working.
I could list things that are not working, but I don't have a counterproposal to make that criticism constructive.
I only have criticism right now.
And I don't think that's fair, more so in my position.
I mean, this is something we always ask guests, you know, if you could be in charge and wave a wand, what would you change?
I mean, for me, especially as a content creator dealing, you know, I'm beholden to the release schedule of the, you know, dot O, dot one, dot two, and then the next thing.
I think it's, I would love to revisit that decision because 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 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.
But I think, so anyways, if I could wave a wand, in my top five is changing the version numbers for sure.
Yeah, I mean, I agree.
I think if this will be, I don't know, 4.6, it will be way clearer when compared to 5.0.
Okay, good.
File an agreement all around.
Yes.
And then regarding your question about the magic wand.
Oh, yeah, please.
Yeah.
I'm digging myself, you know, a hole here.
No, no, no.
Come on.
But this is, you know, this is what we're just talking about.
We're not going to cut this.
You know, this is one of the things about the Django community is that, you know, there's online chatter and then there's Django cons if people can go.
But 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 word, I think the communication point you've made, I think, you know, we can just acknowledge that.
I think historically we've not done the best job in communicating.
And that's OK.
we've done other things really well
and you can't necessarily do everything
perfectly every time
so the
this thing that bugs
me is that
during the 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 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 a news feed.
But it's like 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 guess I get these, you know, 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 an absolutely subjective 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 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 help needed,
with, 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 anything that you do actively requires, you know,
time investment and not everyone has it.
And I can speak for myself regarding that.
But then there is also, you know, 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, I don't know, to advertise Tiango?
No.
Is it, I don't know, having, you know,
YouTube pay time to advertise Tiango?
I don't know.
I don't know what it is.
I don't think those are...
I'm just giving an example of things that I, but I would like to see more prominent young
Django things happening in the tech flow,
tech world, sorry, of information.
And I don't see that.
Haim has talked about, Haim, who's the DSF president,
has talked about this.
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 blame to anybody, but there's just been left.
This is Haim's point he made in Porto, his DjangoCon Europe.
talk there was that you know there's one thing that 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 and well yeah well there
was a panel at django con europe on this uh this this year that um haim was at um and
And the problem is that it's work. The problem is that, and 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 just seven members, ostensibly one hour a month.
So, you know, working groups. I mean, the point I made in that panel, and it's part of why I stepped away from the board after three years, because I don't want to, I want people with new energy to come in, is that we need, you know, we probably, 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 Django News newsletter, which I do
with Jeff Triplett from RevSys, is to fill that need. And because being on the board, I could see
that 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, 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 I can attest both of those are real work. For example, do you think
Django could benefit from a third fellow with that you know with that speed speed up development
you know like it absolutely yes but more so and this is something that I keep thinking and and
and it was a it's a recurring thinking and and it was something that bugged me at the beginning
I wasn't sure I mean how to prioritize things there is so much to do how do you prioritize
things when when I was working on a commercial environment it was easy I had a manager and we
had very clear you know goals so it was very easy for me to prioritize things and get to
the different things in in in an order that I felt added value to to the ultimate goal and and I could
lead people in order to
follow those priorities
and add value. I could
make suggestions or change a few things, but
it's always like this ultimate goal.
Being a fellow, I
sometimes think, okay,
I should change the release
documentation. So all these things
that you said, Carlton, about
what are the
alpha release tags, which are security
tags, I will do a complete
refactor of that and having
you know even check boxes or a template that you can copy and paste and have somewhere else and you
can click all 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 three tickets to try 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 providing feedback, that is not only waste, not wasting time, but time that the
other person put, there is not being valued in the sense of having value from that, but
also, you know, perhaps that contributor gets 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.
I don't know, and perhaps, you know, thinking about a proposal
and how to communicate better, writing more blog posts.
I could write things and try to publish in the different channels
or, you know, seek more opinions about how to communicate.
Where would you like to see news about Django?
But then as a fellow, and I'm also part-time as you work,
what do I do first?
Where is the most value in?
I mean, how do I decide?
And I don't have a manager.
I mean, there are good reasons for that.
I don't have a manager or someone, you know, to brainstorm.
Well, I discuss for marriage, of course,
but it's unclear what 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,
like, I don't know, rotation about writing content,
where content is, not content like the marketing world,
but more like going through the documentation,
fixing examples, automating things,
fixing docs specifically for developing Django,
for releasing Django.
And the other two might devote to try engine tickets
and reviewing PRs and making that a round-robin thing
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 possible at all.
But I think one thing to take out of everything you've said
is that there's just more work than the fellows can do.
And so, you know, one thing that you've quite said,
oh, well, the fellows could do it, the fellows could do it,
the fellows could do it.
No, they couldn't, 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 helping to offer that that that work and even if that needs a bit of input from the board
or input from the first 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's already got
and 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 but 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, you know, go for it, right?
Like you can get individual feedback,
but there is no manager.
It's really on you to decide those things.
And yeah, it's a bigger role than it seems
from the outside for most people.
I would love to have someone say and, I mean, guiding towards priorities.
But I understand.
I mean, I understand 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 gears that are not working properly.
And I've been trying to focus on that because I feel that that adds value,
even if I don't know the internals of the ORN,
and I cannot do clever things with the ORM.
Yeah, I think that.
But yeah, I think furlough would surely help.
I'm not sure if that's feasible, though.
If you needed, if you really wanted input,
you could reach out to the steering council,
the fairship committee, or other people.
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, trying to find answers that perhaps are not there and having people think of things that...
Ask for forgiveness, not permission, right?
Yes. So I've been going with that motto and yeah, I've been trying, you know, to do, from my point of view, what is the most value, whether I do this or that, and I've been trying to follow that, that guy.
For me, one of the great rewarding things of doing the fellow role was that it was very autonomous and very, you know, you've got to choose and you've 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. You know, it really, 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 within Django, but that specific body is not, doesn't do much.
You know, I've, maybe I can talk offline with you.
You know, I think there's, they're sort of like, well, we had these elections and here we are.
And, you know, it's kind of like, unless there's this like really antagonistic thing, that body, for example, isn't doing a ton.
Um, but yeah, but it all comes down to a community thing.
That's one of the challenges.
How do you make things happen?
But it's also just, you know, again, that Django has a third party package system.
I, I think I, in marketing, you know, the newsletter with the podcast, like we can adopt
that mindset and no one's going to 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 one of the things I thinking 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 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 jingo con us europe
now africa but it's it's almost an astounding thing like wait 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
goodness of their heart because that's you know speaking of real work that's crazy real work
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 con us yes are you going to be
there yes yes i think carlton's staying home no 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 hopefully next time you come in you can we
get to jangok on europe next spring i will i mean i'm currently planning around that around that in
that positively is that okay i mean yeah yeah towards that well if you make it there i'll
definitely be there so if not the next one we'll get there i want to go with 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 will try to be there
i was just going to say one thing at the django con 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 dead you
know dedicated weekends and uh that seems like things like things momentum is building around
that as something that would really help the community and um yeah just say that as a positive
thing we've listed some maybe negative things but that's a very positive thing and i i expect
there'll be more conversations at changokon us around actualizing that idea that's good in fact
I have participated
of Django Sprints many years
ago, more than 10 years ago
and in all the occasions
it was a Django Sprint
in the context of another
event. For example
in Argentina there are these
PyCamps which are really
camps around
Python and we got
together in very nice places which are not
with tents but with
housing and
video coding for three years
and many times I have been
you know like a group of people interested
in Django we have done Django
sprints and then
the first Pycom
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 what i mean it's some doing something that has already been done yeah yeah okay yeah
okay i think we're i think we're up to time now 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 no well we had in our agenda to discuss inclusion which is a topic
that i'm very passionate about actually i'm giving a talk in django con us about that topic
and i would love to discuss that uh in this in this uh space uh perhaps in in the future
but that would be great
I think it's
it's important to discuss
and reflect
and keep bringing it up
Okay, well
have we got time to do it now or not?
Well, I
Well, I think she's tired
Okay, okay, you're fine
Maybe after it comes out
we can have you back on and have a link to it
Right, I mean, I think that would be great
because after the talk
if all goes well, I hope
we will have you know perhaps more concrete material that we can grow and discuss because
have i have i'm preparing the talk and i have already you know leaving a lot of things uh out
of the talk or compressed topics that we can you know uh dig deeper so so yeah maybe after
let's have you back on after jango 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 com
i know yeah that'll be exciting that'll be so exciting and i will see you next year in europe
cartoon some way or another yeah one way or the other yeah one way or another yeah
Well, we are at DjangoChat.com.
That's where to find us.
New episodes coming every two weeks.
And we'll see everyone next time.
Bye-bye.
Take care. Bye-bye.