Learn Python with Talk Python's 270 hours of courses

#451: Djangonauts, Ready for Blast-Off Transcript

Recorded on Wednesday, Jan 10, 2024.

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.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon