Are you interested in contributing to Django?
There is an amazing mentorship program that helps Python and Django enthusiasts
become contributors and potentially core developers of Django.
It's called DjangoNauts, and their slogan is,
Where Contributors Launch.
On this episode, we have Sarah Boyce from the Django team
and former DjangoNaut and now DjangoNaut mentor, Tushar Gupta.
Not only is this project excellent for the Django community,
many open source communities would do well to keep an eye
on how this creative project is going.
This is Talk Python to Me, episode 451, recorded January 10th, 2024.
Welcome to Talk Python to Me, a weekly podcast on Python.
This is your host, Michael Kennedy.
Follow me on Mastodon, where I'm @mkennedy,
and follow the podcast using @talkpython, both on fosstodon.org.
Keep up with the show and listen to over seven years of past episodes at talkpython.fm.
We've started streaming most of our episodes live on YouTube.
Subscribe to our YouTube channel over at talkpython.fm/youtube
to get notified about upcoming shows and be part of that episode.
This episode is sponsored by Neo4j.
It's time to stop asking relational databases to do more than they were made for
and simplify complex data models with graphs.
Check out the sample FastAPI project and see what Neo4j, a native graph database, can do for you.
Find out more at talkpython.fm/Neo4j.
And it's brought to you by Posit Connect from the makers of Shiny.
Publish, share, and deploy all of your data projects that you're creating using Python.
Streamlit, Dash, Shiny, Bokeh, FastAPI, Flask, Quarto, Reports, Dashboards, and APIs.
Posit Connect supports all of them.
Try Posit Connect for free by going to talkpython.fm/Posit.
P-O-S-I-T.
Hello, hello.
Hey, Sarah.
Hey, Tashar.
Welcome to Talk Python to Me.
Hello.
So good to have you both on the show.
You know, when I saw the Django Knots project, I think it was Brian Okken that had found it
and started talking about it on Python Bytes initially.
I'm like, oh, that is a brilliant idea.
I definitely, definitely need to talk to the people behind it.
So, so glad to have you both here.
You both are playing multiple roles in this whole process, which is fantastic.
So excited to dive into the Django Knots.
Amazing.
I actually remember when that came up and we were all got excited and we're like,
how on earth did they find us?
So really cool.
That entire show is just about finding stuff that's interesting like that,
that maybe doesn't get a light shown on it and shining that light.
So awesome.
Glad, happy we're able to do it.
And we'll do it a little bit more today.
We'll make it the whole topic.
How's that?
Awesome.
Yeah, indeed.
Now, before we dive into all that, let's just start with your story.
And what, how do you do programming?
What do you do these days?
Sarah, let's start with you.
Okay.
Yeah.
So I am a Django developer.
That's probably not surprising.
I've been doing that pretty much my entire developer career.
It's about five years.
And about a year, two years ago, I started getting involved in open source contributions
to Django core.
And now I'm part of the review and triage team, which is a fancy name for saying like
active core Django contributor group or something like that.
And yeah, why I'm here today is now we've got the mentorship program that I co-organize.
Yeah, it's amazing.
What kind of apps do you work on?
Have you worked on in Django?
Like, are you building APIs or what are you building?
Yeah, good question.
So originally I was pretty much full stack Django experience with Django templates.
And then I changed companies and then it was with a React front end and a Django REST framework
API backend, which is perhaps quite a typical setup really.
And I've changed again.
And now I'm a developer advocate for JetBrains.
So I no longer have to maintain a web application.
So yeah, that's me.
Yeah, the dev relationship can't go down at night, right?
You're not going to get woken up on a weekend because somebody upgraded the database and now
your app doesn't work anymore.
Now, I'm a huge fan of JetBrains and what they're doing.
And that must be a fun place to work, I imagine.
Yeah, indeed.
Tushar, how about you?
Hi, everyone.
So I'm Tushar Gupta.
I'm from India.
And I have recently graduated.
I graduated in 2023.
So that was my first undergrad course.
And I currently work as a software engineer at Samagla Governance and where we deal with problems related to Indian governments.
So we work alongside the Indian government and create solutions that helps them govern better.
That's my day job.
And I've been involved with open source from my sophomore year.
That was the place like I was quite shocked seeing, wow, there are people who are there to help you for free.
And you get so high quality code reviews just for free.
So like, yeah, it was a full package for me.
And I got into some fellowships.
And one of the fellowships, I'm not sure if you've heard of it, was Major League Hacking.
They ran a fellowship.
And in there, I got introduced to Django and to Carlton as well.
And I think from there, only Django Nords got me as one of the contributors trying to get into the code.
And they reached out for the pilot program.
So, yeah, that's me.
And now I'm here.
Oh, wonderful.
So you said you just recently started working as a software developer professionally.
Is that right?
Yeah.
How are you liking it?
I think it's pretty good.
I've been always amazed with how much I can do with my laptop.
And now that you have a job, which also kind of lets you create some real impact.
I can literally see students in public schools using our apps, using our APIs to get better at their normal courses.
So, yeah, it's been a complete amazing experience.
It's definitely fun.
I think the hardest part about software development is getting your first job.
And once you have a little bit of credibility and experience, then it's, you know, then it's kind of chasing what you're interested in.
But, yeah, congratulations.
That's excellent.
Let's dive in.
Let's blast off, huh?
Let's blast off.
With the Django Nords, right?
And you really have leaned into this space and astronaut-ass angle here.
The website is django-not.space.
We have navigators and captains and Django Nords and so on.
So, yeah, very fun.
Very playful, I think.
And that's, on one hand, it's like whatever, what difference does it make.
On the other, I think it makes a difference, right?
Especially for people who are getting more into programming.
Like, it should sound fun because it is fun.
But, you know, I think it just draws people in.
It certainly did me when I heard about it, like I said.
Awesome.
Yeah.
So, Sarah, I'll let you introduce this whole program.
It's pretty neat.
Tell us about it.
There's been a need for more mentorship within the Django kind of open source community for some time.
And we have already participated in some other programs like the Major League Hacking and Google Summer of Code.
But sometimes we don't always retain people.
We have variable success.
And there are still a bunch of people who appear in our, like, help channels.
And they're always like, oh, I'm interested in mentorship.
Please help me.
How do I get started, et cetera.
And it felt like there could be more that we could be doing there.
This topic of we need a mentorship program, we need a mentorship program, came up a number of times.
And eventually we launched Django Not Space as our answer to that kind of need.
We took heavy inspiration from the Kubernetes ladder program.
So, the Kubernetes community also has their own contributor mentorship program.
And that had, like, the concept of cohorts, for example, which we've very much borrowed and things like this.
So, what we wanted to do was to design something that could be quite lightweight and sustainable.
As we want to respect everybody's time that's involved and kind of appreciate that the open source experience is a little bit in and out.
And you will.
And that's kind of normal also.
So, anyway, what we are kind of iterating on is we now have a eight-week program, which actually the next program starts on Monday.
So, we're just about getting everybody excited and together for that right now.
And in the program, we have Django Nots.
This is our term for mentees, like the participants of the program.
And they will be assigned a navigator in, like, a team.
So, there's about a team of three mentees or Django Nots with one navigator.
The navigator is a person who has open source contributor experience and some kind of background that they can use to, like, answer questions and all this kind of stuff.
Do they have to be a Django core developer or do you have to be even a contributor to Django?
Or do they, you know, if I was saying, I worked on Flask and I was really awesome at it.
But I also want to help these folks over here.
I'm really good at open source, but not so much Django contributor yet.
So, we have expanded the program.
So, in the pilot, it was originally just Django core that we were focusing on.
And now we have navigators that have a focus on other packages.
So, for example, Tim Schilling is one of the maintainers of Django Debug Toolbar.
And Mark Walker is, I think, he's the tech lead of Django CMS.
And so, we are kind of incorporating that.
We want to build a contributor base to the Django ecosystem as a whole because all of the packages really do help and support Django.
It's part of the real core value of Django as a framework is the other open source packages that are around it.
And who knows whether we will expand even further later on.
But I think really the thing that's key is having a little bit of open source experience.
And to be honest, a lot of it is transferable.
So, a little bit around etiquette for reviews.
Like, don't at people all the time and all this kind of stuff.
At channel.
I need some help.
Things like that.
We then have one other role, which is the captain.
And they add another layer of support to the program.
So, these are kind of like a supportive pastoral role.
And they have more one-to-one sessions with the Django Nuts to get to know them, check that they're okay.
And if there was anything that kind of they wanted to talk about, but they didn't feel comfortable, mention it in a larger group.
So, we do have a Discord chat.
And we also have these weekly check-ins that they have with the navigators and the team.
But the captains one-to-one, if you've got something that you, perhaps you've been really poorly, and you want to talk about that.
And anything that comes up in life that perhaps you didn't feel comfortable announcing to the world can come up with your captains.
So, they're really there to also normalize any of the anxieties or feelings that you have around working in public.
Because if this is the first time you're doing that, it's also a little bit vulnerable.
So, yeah.
Also, shout out to the captains.
Yeah, awesome.
I think that's a pretty powerful way to organize this, right?
You've got a lot of support.
The thing that strikes me about this is it feels a little bit like a boot camp, right?
Like a coding boot camp.
I'm going to just take the next three months off and dive into this.
But way more lightweight than that.
And also, I think for other people who might be thinking that, it's worth pointing out that the goal is not to teach people how to Django, right?
Yes, 100%.
Yeah.
Tishar, you want to add to that as well?
You're shaking your head there.
Yeah.
So, Django.net is not a boot camp.
I think we have been getting a lot of questions around that as well.
That whether it's a boot camp, whether someone will be taught how to Django.
But it's not like that.
It's a...
You can think of it as a program which gives you the right support, right people and right resources.
In case...
If you want to contribute to the core Django or the Django ecosystem.
So, it kind of brings in all the right people together for a short time so that you can get the needed liftoff that you want and get started with the Django.
I guess the mental model people should have is primarily the goal here is to increase the contributors to maybe Django.
Maybe as you mentioned, Sarah, a little bit broader.
Like, maybe you could contribute to Tim's project.
The Django debug toolbar.
Just don't leave it on in production.
And those types of things, right?
Like, in the broader ecosystem, bringing people in to contribute to Django more broadly.
So, it's specifically about treating people who make those contributions.
Exactly.
Rather than saying, I heard that programming is cool.
So, I'm going to quit my marketing job and do that.
Exactly.
And a thing that...
Because what is success?
It's such an interesting question because we get random commits from people all the time.
And really, it's not necessarily that there aren't going to be contributors to Django.
Django is quite a big package.
People will always come and suggest things and give some code.
It's more also around that Django has a community behind it.
And the people who stick around longer term, they feel like they're part of that community
and that they're part of something a little bit bigger than just a commit in this cold,
heartless code base that's somewhere.
And so, if we can get people to feel like, actually, there are a bunch of real, very helpful
people who are working on Django and other packages around it,
and that you could interact with these people.
And a lot of them are now my friends.
It kind of is trying to show that there's a lot more to it and there's this value you can keep getting.
And hopefully, then people will stick around.
And I think it's more the, if you can stick around and do sustainable contributions
over a longer period of time, that builds up to something really quite huge.
And I think for me, I find that really exciting.
Yeah.
To me, Django, more than almost any other sub-community of a programming world,
not Python itself, but, you know, versus, you know, Flask, Litestar, whatever.
Other web frameworks, ORMs, whatever.
It seems really to build a community around it and not just technical excellence, right?
Like, Django has a lot of technical attributes that people are attracted to.
I would, a lot of the Django people I talk to are attracted because of the community and the support,
and they just want to be part of that thing.
That's amazing.
Yeah, I think you can see that in the Django Nord program itself.
When I first got in, I thought, like, meeting all the core contributors face-to-face,
having chats with them, and seeing problems that they face managing open source,
and then their actual job, and then the Django contributions, and now there's a program.
So I can see how much they're putting in towards maintaining and building this community
and how much they care about it.
So it gives you a good, inclusive feeling as well.
And I found it really good.
Yeah.
This portion of Talk Python to Me is brought to you by Neo4j.
Do you know Neo4j?
Neo4j is a native graph database.
And if the slowest part of your data access patterns involves computing relationships,
why not use a database that stores those relationships directly in the database,
unlike your typical relational one?
A graph database lets you model the data the way it looks in the real world,
instead of forcing it into rows and columns.
It's time to stop asking a relational database to do more than they were made for and simplify
complex data models with graphs.
If you haven't used a graph database before, you might be wondering about common use cases.
You know, what's it for?
Here are just a few.
Detecting fraud.
Enhancing AI.
Managing supply chains.
Gaining a 360 degree view of your data.
And anywhere else you have highly connected data.
To use Neo4j from Python, it's a simple pip install Neo4j.
And to help you get started, their docs include a sample web app demonstrating how to use it,
both from Flask and FastAPI.
Find it in their docs or search GitHub for Neo4j movies application quick start.
Developers are solving some of the world's biggest problems with graphs.
Now it's your turn.
Visit talkpython.fm/Neo4j to get started.
That's talkpython.fm/N-E-O, the number four, and the letter J.
Thank you to Neo4j for supporting Talk Python to me.
I'm sorry if I'm leaving some community out that I just don't know.
But the only other part of Python that I feel really has it as nailed as that is the SciPy space.
It seems like the Jupyter and the scientific computing side, there's kind of a big community there.
You've got NumFocus that actually funds a lot of that specifically in that area.
But it's pretty unique.
Speaking about funding, I don't see a pricing on your page here.
Like, what's the price?
Oh, I wasn't prepared enough for this question.
Okay.
Right.
So, okay.
If we compared ourselves to Outreachy or Google Summer of Codes,
they do actually have a sponsorship where they do pay the...
It's almost like a scholarship that you're going to work on.
Like an internship almost type thing, yeah.
Exactly.
A little, yeah.
Okay.
And we don't have that money.
We have been very generously given a grant from the Django Software Foundation to help us grow this program.
And we will be using that in different places in order to do that.
But at some point, we'd like to sponsorship from companies.
So, if you're listening and that's something that you think would be a good idea, then, you know, please get in touch with the organizers.
That would be awesome.
Yeah.
Sarah, you should go on a podcast and let the companies know.
Yeah, that's a great idea.
No, well, I think that's awesome.
And it would be really...
I do want to encourage companies out there listening to have connections back to Django or just want to get in front of Django developers for whatever reason to do that.
That would be awesome.
But it doesn't cost money to participate as a...
100% no.
You're doing that, right?
No, no, no.
I mean, yeah.
Back to what Tasha said at the very start that, like, he couldn't believe that you got these amazing quality, like, PR reviews from all these experienced engineers for free.
I think open source is this incredible resource where you can get very usable, real-life programming experience.
And, yeah, generally for free.
So, no, we don't charge people to be part of this.
That's awesome.
And you can participate in very professional type of projects without having to go through and getting a job at a fame company or whatever, right?
You're just like, I'm going to be part of this GitHub project.
And it looks like they have continuous integration and code reviews and these experts and so on.
It's very cool.
It's pretty magical, open source.
Tushar, so originally you were a Django not.
And now you're coming back to pay it forward a little bit afterwards.
So, let's start by talking about your experience going through the program.
Like, what were you thinking when you signed up for it?
What was it?
And what was the day-to-day like?
And then what did you get out of it?
I think I got pretty excited when I saw this email.
So, I got an email, I think, a few months back saying that there's a program that Django, program named Django Not, that is going to be started.
It's a very small program.
We are going to be in teams of three to four.
And whether are you interested or not?
So, it was a complete yes for me that I'm totally interested.
And I reverted back to the email.
And after a few days, I got a selection email that, yeah, you are finally in.
I also shared it with some of my juniors who are also trying to contribute to Django REST frameworks, Django Stubbs, and other projects.
Here's the GitHub link of the program that is going in a pilot mode.
Just go and try out.
So, I think one of the other folks named Anwan, she also got in.
He's also now joining us as a captain.
And during my phase of the Django Not, I think the best part, the best part of this program that I've talked about a lot of times before as well,
the core difference that I saw on contributing to different projects and joining in as Django Not was you were actually meeting real people.
They were not just some GitHub usernames that you know that you just talk over technically,
but you can really talk with them where they live, how they look, and just get on with what got them started with the project and how they do stuff.
So, that gave me a kind of inclusivity, a sense of belonging in the community that I know people.
I know Sarah.
I know Sarah Boyce.
I know Rachel.
I know a lot of people now.
I know Tim.
And it got me, like, it gave me some kind of motivation to just be, keep, just be involved,
irrespective of, like, not lose my motivation and just be with the program.
So, during the Django Not phase, I contributed, I think, a few PRs.
There's one that's on the accessibility part of Django.
I think it's in a work of progress.
So, it's just getting in slowly and slowly.
There's some docs changes that I've done.
And then there's another one that is just in preview.
Another thing that I was getting out of Django Not was, I know there is a focused group that is communicating to me about my PRs and how I can get better reviews.
If the reviews are getting delayed, I was getting active response on, like, the team is currently busy or maybe there's a holiday season going on.
Maybe there's a new Django major release that's going on.
So, the team is not getting enough time to currently review it.
So, I didn't feel isolated or hosted out there.
But I knew, like, there are people who are seeing this.
And the whole experience was very good, meeting a lot of new people.
And it was just fun.
So, that's how Django Not worked for me.
Yeah, excellent.
And you're going on to become a captain for the next cohort, right?
So, you're doing the one-on-one mentorship side of things.
Yeah.
I wanted to, so I asked when the Django Not program was about to be ended, I asked Sarah.
There's another Sarah.
So, I asked her, like, is there any way I can still be around and, like, can this Discord group be continued or are we going to just shut it now as a programmer?
So, she told me that, no, we are going to have another cohort and you can come in as a Django Not captain if you want and just meet other people.
And, I mean, I was like, why not?
Yeah.
Meeting a lot of new people.
And there are a lot of people from the country that I am from.
So, that got me even more excited that there were folks out there that I didn't know of and now I know them.
So, yeah.
Yeah.
That's excellent.
Probably you're more likely to go to conferences where there's Django people meeting and just generally be more part of the community, right?
Not just this.
Yeah, I completely agree.
I think just the part Django Not nailed completely is doing one-on-ones, video calls.
It just gives you some sense of belonging.
Yeah, it's great to see people one-to-one and talk with them.
So, it's fun.
Yeah.
You always notice it that after a Django Con, so there's Django Con US and Django Con Europe happens pretty much every year.
We just had a Django Con Africa for the first time.
But we don't have a Django Con Asia or a Django Con South America.
And there are regions that don't have this opportunity of a conference each year that the community really gets together and that you meet people.
And whenever you see the conference and you see people afterwards, they're buzzing.
And everyone's so excited to have gotten together and to really reignite that kind of community feeling.
But it's not accessible to everybody.
And it's really nice for us to try and recreate a little bit.
It's not the same as a Django Con, of course, but a little bit of that Django magic.
If we can bring a little bit of that experience to a wider group of people, I think it's really special because I think, you know, that's really what Django is about for me.
Yeah.
For every person that is pretty close or pretty accessible to a local meetup or a regional conference, there are many, many people who work by themselves, live far from those places, you know, and it's these types of things are really important connection to the community that way.
All right, Sarah, what about time commitments?
What's the day to day look like?
12 hours a day.
What do you all do?
Yeah, it's constant.
Right.
So that's one of the things we really try to design.
Also, we have as a Django not it is self-managed and self-guided.
So with the amount of time commitment, we're saying it's maybe four hours a week, but it can really vary.
So if you did two hours or maybe one week, you decided that you're going to spend your whole Saturday or whatever, it can really be driven by that participant.
We're not going to be there with a whip saying, please do more or do less.
Yeah.
Actually, the do less would be a concern.
I mean, we do want to make sure that this is sustainable.
And if we saw people, I don't know, constantly working on something without ever taking a break, then that would be something that we would want the captains and the navigator to go in and check that they're OK and that they know it's not the end of the world.
And that, you know, they can take a break.
Yeah.
That happens to me when I get really just super into something, usually some new technology.
I'll just work and work and take a break.
Wow, I'm hungry.
Oh, it's because I haven't eaten for eight hours.
What's going on?
But, you know, to me, like that's a it's kind of cool to get lost that way.
But you shouldn't set it as an expectation.
Right.
You're like.
Yes, exactly.
And people work really differently.
And if and if this is sustainable and it works for you and that's completely fine.
But if it was that somebody said, oh, I will probably finish this ticket.
And they said this in their weekly meeting and they thought, oh, God, I have to finish it by the next weekly because I said I would or something like that.
That's not what we expect.
And that's completely fine.
So, yeah, maybe it's a roughly four hours a week for Djanganots.
Tasha would be a better person to ask that.
Yeah.
You've recently been there.
How was it?
When I started Django, when I started with the program, I was quite pumped.
I went through all the trash tickets on the track and made an ocean dock of tickets that I wanted to take a look at and try.
But I soon got burned out.
Then I think I had a session with Lily.
I told her that I think I'm getting a bit burned out.
So she told me that you can relax a bit.
And she told her way of contributing to Django as well.
So she told me that she has some burst of sprints where she contributes.
So it's like two PRs in a month and then another month, there's no PR.
So it kind of works like that.
But yeah, I think there's no pressure as such for Django rods to work, that they have to make a PR, that they have to make contributions regularly.
So they're part of the program.
Everyone can work at their own pace.
And you can also keep communicating with your navigators and your captains to let them know what's working for you, what's not working for you.
And I think it's a pretty chill environment out there.
So you can just figure out what works for you.
So for me, I think burst of sprints work for me.
So if I take a ticket, I make sure that I get something going on.
And then I take some break and then I come back to Django and I keep context switching between different open source projects.
So that was how I got myself through the program.
Excellent.
Yeah.
If you context switch too frequently, you kind of just never really get going.
You got to save a little focus and a little deep work on one thing.
Sarah, Tashar mentioned choosing tickets to contribute to.
One of the things that's challenging about projects like Django or any other project that's been around that long with that many people using it is it's really complicated.
And any part that you change can have really wide ranging consequences, right?
You don't want to take down Instagram just for a contribution.
So what I'm getting at is it can be hard as a beginner to find the right issues to work on.
How do you navigate that?
It is definitely a challenge.
And it's also a challenge to answer the question because it's really dependent on the individual and what are your goals.
So if you want to achieve the, I got a PR merged into Django badge, for example, that's one potential goal.
Or perhaps you're going, no, I want to be able to have my name again.
Like when I see when Django 5.1 goes out and at the top, there's like the major features and like I want to have been a part of that or something like that.
Then it's kind of like a different dynamic to it.
And so if you are one of the individuals where you don't really mind, you just want to contribute where you can and maybe start small, for example, just to get something in.
Then there are different strategies to go about that.
But the best strategy, in my opinion, is it's really common in, I would say, open source in general.
That people come along and they submit a PR that they've done a good piece of work and it gets a PR review.
And maybe there were a couple of things that needed changing.
And then this person, for whatever reason, they vanish.
And probably because of life or whatever it is.
Or they just had enough energy to do that.
And that's completely fine.
And they didn't care about it enough to do extra bits or whatever.
It could be they were trying to make Django do something and they decided, you know what, I'm going to choose some other framework.
Or even some other language.
And they just left.
And they're not going to come back and polish because you asked for reviews for better documentation.
They're like, yeah, no.
Exactly.
And for example, and you've hit the nail on the head with that.
Because for Django to accept anything, it needs tests.
It needs docs.
And so the code itself could be completely valid already.
It could be like the perfect solution for the issue you're trying to solve.
But if it was missing the tests and the docs, it wouldn't be accepted.
And so what happens is, usually what happens is after a certain period of time, the fellows might do a ping to say,
ah, do you still want to work on this or something?
And then after another period of time, they close it because it's gone quiet, basically.
And so there are a bunch of these kind of unfinished starting points that you can swoop in, take that,
and you've already got like some code.
And it gives you good context with like, because sometimes people will share a ticket and they go,
I don't even know what file I should be in to start to do this work.
Whereas if you took a PR that's got some code, you know what file, what function, you know what's going on there.
And you've got a lot more immediate stuff.
Yeah, yeah.
You're like, this basically works.
It needs some polish, maybe a little optimization and the supporting stuff.
Like that's a way smaller project.
Then imagine something you could add out of thin air, right?
Exactly.
A hundred percent.
And then you can take those and you can be that person that pushes it over the line.
And you obviously you credit the original author.
You can put them in as a co-author of the commit and thank them.
But it's a really good place to build from there because then you can slowly get more context about
what does the process of doing a PR to Django even look like?
Because you're going to go through the PR review and you will learn as you do it.
You'll learn how the documentation works.
You will learn how the tests work and all that kind of stuff.
There's quite a, the contributing docs are quite extensive and scary.
And it takes a while to absorb all that information.
And for me personally, I have to do it to like really learn it.
So I would say that's how I would suggest people get started if that was your goal.
But, and this is how I got started, but I would say it makes you like you're so scattered.
If I was trying to gain a really good, solid understanding of Django, I have a really weird
picture that's being built that I'm only getting like one pixel at a time in very random spots.
Yeah.
Maybe really deep down in the code base, you know, like pretty disconnected.
Yeah.
I suddenly understand that one thing over there that's really random, but then this other
completely unrelated thing over here.
And so I'm not gaining like a depth of a technical understanding of one section as a whole.
So if you were someone who wanted to have that star feature that you wanted to have your name
against, then really you should go and pick a section of Django.
So if you went into the ticket tracker called track, you can filter by components.
So an area of Django.
ORM or admin or something like that, right?
Exactly like this.
Exactly like that.
And then look at just the tickets for them and they will be your practical way to get that
kind of information.
But there's also sometimes there used to be a conference called Django under the hood.
And you might find that there was a talk about forms or something like this that's maybe relevant.
And you should build up your knowledge in like a much longer term perspective that you're focusing
on this area.
And there might even be like other packages that are related.
So perhaps, for example, David Smith is also a major contributor to Django and he is coming
from like a forms perspective.
And he is also a maintainer of Django Crispy Forms, which gives him a lot of extra context
with how people use forms in Django.
And so he can look at tickets and use that extra way in that knowledge and his opinions
whenever people are discussing things.
So that's a bit more of like an in-depth deep dive approach, but it might not be the quickest
way for you to get your first.
Yeah, you want to get that first early win or whatever.
I really like the idea of reviving a stale PR.
That's pretty clever.
This portion of Talk Python to Me is brought to you by Posit, the makers of Shiny, formerly
RStudio and especially Shiny for Python.
Let me ask you a question.
Are you building awesome things?
Of course you are.
You're a developer or a data scientist.
That's what we do.
And you should check out Posit Connect.
Posit Connect is a way for you to publish, share, and deploy all the data products that
you're building using Python.
People ask me the same question all the time.
Michael, I have some cool data science project or notebook that I built.
How do I share it with my users, stakeholders, teammates?
Do I need to learn FastAPI or Flask or maybe Vue or React.js?
Hold on now.
Those are cool technologies, and I'm sure you'd benefit from them, but maybe stay focused on
the data project?
Let Posit Connect handle that side of things?
With Posit Connect, you can rapidly and securely deploy the things you build in Python.
Streamlit, Dash, Shiny, Bokeh, FastAPI, Flask, Quarto, Ports, Dashboards, and APIs.
Posit Connect supports all of them.
And Posit Connect comes with all the bells and whistles to satisfy IT and other enterprise
requirements.
Make deployment the easiest step in your workflow with Posit Connect.
For a limited time, you can try Posit Connect for free for three months by going to
talkpython.fm/Posit.
That's talkpython.fm/P-O-S-I-T.
The link is in your podcast player show notes.
Thank you to the team at Posit for supporting Talk Python.
Tim, chilling out, the audience has a quick question for you, Tishar.
Did you ever run into a wall in the Django codebase?
How did you handle that?
It's very large, very old.
So I imagine parts are hard.
I know I get stumped when I try old tickets.
I think one of the tickets, one of the issues that are currently out there was an accessibility
ticket.
So basically, we want to increase the accessibility of the Django admin.
This is something that I also found it quite interesting because it was a very interesting
problem to build a CI, CD pipeline that will take care of accessibility.
Whether the Django admin is still or not.
What about accessibility?
Are you talking multilingual?
Are you talking screen reader?
What are you talking?
Django serves a very large, diverse audience.
And there could be people who are disabled.
There could be people who are colorblind.
So you have to take care of putting out a software that also caters to the needs of those people
as well.
So accessibility is, yeah.
So basically, there's a lot of thing in that.
There's a specification that's out there to define what is a good accessible software.
And you can have a CI, CD that checks your project with that software, with that specifications.
So I think that was a very open-ended ticket.
And I faced a very big wall on how to approach that.
What all is needed there?
And the thing that I did was I reached out to my navigator and captains when I was in the
program.
And they actually got me connected to the right people and the right person to ping.
So the track, they assigned the right people in the track that should have been in the
ticket.
And I think someone from the Django accessibility team came in.
They gave me weekly updates on what's the current status of this ticket.
What are we planning?
They told me that this is going to be a low-chain ticket.
It will spread out over a month because we are planning on how to do this correctly.
And I think, yeah, that's how I was able to get past that.
The ticket is still open.
There's another package that has been abandoned, but we are trying to bring it in the Django
ecosystem, I think.
So I think Mark is working on that.
That's how I basically get past the paywall, like the ball of getting the contribution.
And I think most of the time, navigators were very helpful because they have a lot of contribution.
And they also helped me in pointing to the right location.
Where should I look to?
So I think one of the times I think I reached out to Sarah to just know why this specific
ticket was closed.
And I was not able to find what went wrong so that this PR was reverted.
And she pointed out to the right, like the backtracking PR that you should take a look
at.
So this is how I generally just reach out because that's what the program is for.
It highlights a super big advantage or benefit of it, right?
Yeah.
A normal contributor can't just make all these connections or even necessarily know who was
involved in the original effort.
Why was it shut down?
Is it something the project doesn't want?
Or did people abandon it?
Or none of that is accessible from the, or less accessible from the outside.
Yes, I completely agree.
So people have been listening.
Maybe they're pretty excited to be part of it.
Do you have another cohort coming along?
When's the next one?
Okay, so we are just starting the first of the year.
That starts on the 15th of January.
So if you wanted, if this is the first time you've heard about it, unfortunately, you're
not in the, it's too late for that one, unfortunately.
And that one's pretty much left the station.
Well, I have a benefit for you with a little bit of podcasting time travel.
So this probably won't come out for six weeks.
Oh.
So on the main audio, although it's already on YouTube for folks listening there.
So it'll be a little closer to the start of the one after that, if there's going to be
a third.
Okay.
Interesting.
Thank you for that tip.
The best place to check at any point, if you wanted to check if there is, if we're accepting
applications for a session is you could go to the Janganaut Space website and then click
on sessions.
And when you click on sessions, you will see exactly right now.
You can see that the session that we have is if you scroll a bit further down on the screen,
we're sharing this session and you can see the latest information of the applications, when
it starts and all the details about that particular session.
And so whenever we agree to do a new session, that will appear on our website and there will
be this apply button essentially when applications are open.
So in six weeks time, that might be the case that we are accepting new applications.
There is also a interest form that we have.
So again, on there's, yes, if you click back on sessions at the top, there is a join us secret
button.
Yeah, exactly.
Top tip.
And here you can send us your email.
And what this just means is we will send you an email as soon as applications open for the
next session.
And then you will be the first to know.
The other thing is, is we're on social media.
We're on X and Mastodon and LinkedIn.
So followers on all of those places.
And we, you will, we will also post there for everything when, when that's.
Yeah, definitely.
And I'll put those in the podcast show notes so people can click on them and find all these
things.
It also seems you all are on YouTube.
What happens over on YouTube?
We are on YouTube.
And amazingly, we have, we gained some followers before we've even really done anything, but
this is our plan.
So also in session, we have a couple of guest speakers who come and the Django Nauts can,
they will usually talk about some topic and they've got some particular experiences that
they can share and that you have a little bit of a Q&A with them.
So in the pilot session, both Marish and Natalia, who are the two Django fellows, they had a session
with our Django Nauts and we record these sessions.
And what we want to do is we want to publish these on our YouTube to make that available
to everybody because there's quite interesting information that gets shared in these talks.
And the whole aim of open source is to, to share information really.
So that is the main plan for the YouTube channel, but we're not there yet, but maybe by the time
the podcast is published, there will be later videos.
You've got a few weeks to work on it.
That's cool.
So people can smash the subscribe and crush the bell over there.
That'll be cool.
So how many people are in the next cohort?
The 2024 first cohort?
There is 18 Django Nauts.
So we've really scaled it up since the pilot.
Yeah.
So that's six teams.
Whereas last time we had two teams.
So quite a few more.
Yeah, that's cool.
What's the cross team story, right?
Like I can imagine, say like some kind of startup accelerator where there's groups and, but sometimes
they get together and present to each other what they're building, what they're doing.
Like, is there something like that where the teams cross pollinate or whatever?
Yeah.
We have, you're in the same discord and we have channels that are available to everybody
and we are trying to achieve a community feel and that you can work with other people.
So we do have a, a life channel where people share things about, I don't know that they went
on a run.
It's a little bit more around the, the humanizing individual and all this kind of stuff.
But there are channels which are about works work, I say, but, you know, contributing specifically.
So on tickets and people can share the work that they're doing and say, Hey, I want some
input on this.
Or does anybody want to work together with me on that?
And there's nothing stopping a Django not from working with another Django not who's in a
different team.
The team is just a structure to give you a group that is manageable for, for one human to
look after.
And for you to have a meaningful discussion in a, in a smaller group.
We get too big.
It just becomes a bunch of anonymous people that happen to be in the same program.
Yeah.
William out there has an interesting question.
As you talk about adding more than before, what are your plans on scaling this?
And what do you feel are limiting factors?
That's a really awesome question, William.
So limiting factors are usually getting mentors who agree to do it at the same time.
And it's interesting as to whether we continue to organize it, that it's a session that everyone
is there at the same time, or whether we allow it to no longer be a single cohort and that somebody
could be like, right, there's two people who are available from this state to this state, and
therefore they can look after a few Django nots, for example.
That could be an option for us to prevent this larger cohort, because it means that we're trying to get
a group of, I don't know, eight volunteers who can all do this time period at the same time.
That's a challenge.
And we did struggle to, we got a reasonable amount of people.
We'll raise their hands to be mentors, but we could always do with more of them.
So if anyone wants to do that, that's, we would love to hear from you.
So that's another thing that kind of limits that scale.
And the other thing is, is we are learning the challenges as we go.
So fortunately, we haven't had any issues yet.
We have, for example, a code of conduct, and there is a way that people could report something
that we should be aware of.
And we haven't had that report yet.
Touch wood, it will never happen.
But there's some things that we, it will take a few iterations for us to really test, stress
test our processes and check that this is going to be capable of scale.
But yeah, who knows?
We're not there yet.
Well, you know what?
One positive feedback loop is people like Tushar who went through it, but now are supporting its
growth, right?
Yeah, definitely.
Yeah.
And a question for you from Sarah Shars.
I saw multiple, or at least one person out in the audience saying, hey, I'm going to be
in the next cohort.
So do you have any advice as a former Django not for new ones who are about to get started?
Yeah, I think one of the important advices would be to have a lot of fun.
You can contribute to Django, but also you make a lot of good connections.
So also like be around in the Django discord, Django, Django not discord, interact with people,
talk with each other, attend the sessions, just get to know them a lot.
Because that three weeks, the amount of time that you'll be part of the Django not program
will be, they'll focus on getting you left off, but you should plan on making this program
whole sustainable.
So just try to be around, keep talking with different people and have fun.
Good advice.
All right, let's round this out with what are the benefits for the people who are participating?
And I suppose also navigators and captains.
One thing I see here that would be really a bonus is just the edge it gives you in working
in web development and Python as a job opportunity going forward, right?
If you say, yes, I know how to do a database query with the Django ORM, please hire me.
That's one thing.
It's another to say, I added that feature that you're excited about.
Can we talk about my position, right?
Okay, everyone else is off the table, as long as you're a decent fit, right?
Like that all of a sudden just puts you in a different stratosphere, I guess, sticking
with a theme.
So maybe you all could speak a little bit to advantages beyond just, I want to contribute
to open source and have the badge or whatever it is.
Yeah, absolutely.
I think my first job was basically like no interviews just based on my open source profile.
The company or the current company that I'm part of also have some open source products.
So I was just involved with that.
And the job was just a simple, like one-on-one kinds of conversations on what other projects
are, different open source contributions.
You're like, hey, it's a chart.
It seems like you're doing this for free.
How about we pay you to do this?
Okay.
You convinced me.
Yeah.
So yeah, that's what actually happened.
I think you get a lot of, I mean, contributing to open source, you get a lot of visibility.
There are a lot of people that reach out to you.
And I think the best part of it is, as I said it before, you just grow compoundly.
There's no stopping when you get started with this stuff.
Initially, there's a barrier that you have to push before you get started.
But I think Jaguarot will do that work for you to help you push that initial barrier, get
the inertia moving.
And then it's all just a good walk down the path.
Even beyond getting your first job or getting your foot in the door, or if you're with certain
roles, you might come to a point where there's usually this learning curve, right?
Where at the start you learn loads and then it really levels off and you've become efficient
and you kind of know the processes and you've been asked to make yet another API endpoint for
something.
And it's kind of fairly, you're not learning so much as you were in the early days.
Go with me here.
What we need is we're going to need a grid of things in the database.
And I need you to be able to edit in the set.
Okay.
Like the five other ones I just built.
Got it.
Okay.
That kind of thing.
Yeah.
Okay.
I also get it that, you know, and companies don't necessarily want you to experiment too
much because experiments are risky and all this kind of stuff.
So depending on when you work, maybe you've got lots of opportunities to learn lots of new
stuff, but some people will be in a position where actually they go, oh, I've
I don't feel like I've learned anything this year or something like that.
And I think open source or contributed to Django particularly, like there's, it's so big
and there's so much there that you can really learn about if you want to.
And completely with no pressure at your own pace and with really friendly people.
And so there is, you know, if you engage in that as a practice, it can also give that you
the joy of programming again, that you can go, you know what, this is a really tough problem
and I can really think about this.
And it's not like a problem that's screaming at me that needs to be like fixed straight away
or whatever.
But you know, and I think there's lots of those opportunities in there too.
It's always a struggle as you get to work for some company.
They're like, yeah, we're not changing that.
That works.
We're not messing with that.
We're not ready for Python 2.7 yet.
We're still on 2.6.
So let's just calm down there.
Okay, sure.
I see some other people asking, is this a Discord?
This is a private Discord for the cohort.
It's not something public that others can participate in.
That's true.
There is a Django Discord that is public to everybody and I would recommend joining there.
So please do.
And a lot of people are in both.
And if you dropped into the Contributing Getting Started channel or the Contributor Discussions
channel and you were to talk about a ticket, it's very likely that I and other Django contributors
are going to engage with you directly.
So there's that.
That the Django Not Space Discord is designed for the cohort to give people a little bit
of a smaller community feel and allow them to feel comfortable sharing the pictures of their
dogs and things like that when they're very new to this.
So yeah, that's how it's working.
Excellent.
All right.
Let's wrap this up really quick with just one broader thing.
Maybe there's many other communities out there listening.
I wish we had a not, some kind of astronaut type thing for us.
What advice would you give to other open source communities that maybe want to have this type
of thing?
Give it a go.
I really try it out.
I think we're very happy for people to take, I mean, all of our documentations are on a GitHub.
It's all open source.
Please take it and make it your own.
You can use different names and keep in touch with us and tell us what works for you and
what you've changed and what's better.
And yeah, for us, we wanted to start off with something quite lightweight and basic.
And when we started, for example, we, okay, we had a name, but no one knew who we were because
we just invented it.
And for example, with Tushar, we reached out to some individuals.
So in the past, when we'd seen some people be interested, we, those were the first people
we contacted.
So you can start really small, really basic.
You don't have to have a launch where you're accepting applications because when you have
applications, you need to figure out what does an application even look like and then
how are you going to review it?
What are the criteria?
Yeah, all that.
100%.
So start small and then you can build it out in a way that works for you and see how it
goes.
All right.
Well, excellent.
I think that's probably it for all the time we have today, but I want to congratulate you
both on this really cool community you built and are building.
Final call to action.
People are excited about Django Knots.
What do you tell them?
Oh, just follow us on our social media and please do apply when we have sessions.
We really, really appreciate all the applications that we receive and mentors are always wanted
and needed.
So get in touch.
Yeah, please.
Yeah, of course.
Yeah.
Go to the session section and click join us and fill out the form if you think you might in
the future want to be part of it, right?
Indeed.
All right.
Sarah, thank you for being on the show and thanks for sharing your project.
It's very great.
Thanks, Michael.
This has been another episode of Talk Python to me.
Thank you to our sponsors.
Be sure to check out what they're offering.
It really helps support the show.
It's time to stop asking relational databases to do more than they were made for and simplify
complex data models with graphs.
Check out the sample FastAPI project and see what Neo4j, a native graph database, can do
for you.
Find out more at talkpython.fm/Neo4j.
This episode is sponsored by Posit Connect from the makers of Shiny.
Publish, share, and deploy all of your data projects that you're creating using Python.
Streamlit, Dash, Shiny, Bokeh, FastAPI, Flask, Quarto, Reports, Dashboards, and APIs.
Posit Connect supports all of them.
Try Posit Connect for free by going to talkpython.fm/Posit, P-O-S-I-T.
Want to level up your Python?
We have one of the largest catalogs of Python video courses over at Talk Python.
Our content ranges from true beginners to deeply advanced topics like memory and async.
And best of all, there's not a subscription in sight.
Check it out for yourself at training.talkpython.fm.
Be sure to subscribe to the show.
Open your favorite podcast app and search for Python.
We should be right at the top.
You can also find the iTunes feed at /itunes,
the Google Play feed at /play,
and the direct RSS feed at /rss on talkpython.fm.
We're live streaming most of our recordings these days.
If you want to be part of the show and have your comments featured on the air,
be sure to subscribe to our YouTube channel at talkpython.fm/youtube.
This is your host, Michael Kennedy.
Thanks so much for listening.
I really appreciate it.
Now get out there and write some Python code.
I'll see you next time.