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