Juha-Matti Santala
Community Builder. Dreamer. Adventurer.

Djangonaut Log 2: Leaving the atmosphere and first merged contributions

This blog post is a weekly update of my journey in Djangonaut Space , an 8-week mentoring program for future open source developers in the Django ecosystem.

Last week, I started making my first contributions and first two of them got merged in on Wednesday. We had a bit of outdated versions for Python and libraries in the codebase which had broken the development environment setup and pull request pipeline in GitHub so a lot of this second week was focused on discussions and contributions to fix them.

I had a couple of really good discussions with people in our team that helped me confirm my ideas of focusing on help bring the system to a working status before focusing deeply on other fixes.

A peek behind the curtain: how does Djangonaut Space work

Djangonaut Space is organised as sessions, each lasting 8 weeks. We are currently in Session 7 so there’s been a nice amount of brilliant people who have gone through the program before me. It’s been a joy to see many of them return later in different roles. To me, that’s a great sign of the good work people running the program have done.

Participants of a session are then split into teams: I’m part of Pyxis, a team focused on Django Girls+ project together with with two fellow Djangonauts Carmen and Ayka, our Navigator Anna and our Captain Jim.

Djangonauts are the mentees who are here to learn how to get started with contributing to Django ecosystem and to connect with people in the community.

Navigator is the person representing the project. A maintainer or core contributor whose job is to guide the team through technical and procedural discussions to empower us Djangonauts to get a good start over these 8 weeks that will last for a long time. Our Navigator is Anna Makarudze who is the lead maintainer of the project.

Captain (O Captain! My Captain) is a mentoring role not specific to the project at hand. Ours is Jim Anderson with whom I’ve already had multiple wonderful discussions: both about the topic at hand but also everything under the sun. We have a lot in common and share many interests and our weekly one-on-ones always feel like we could sit there for hours to discuss.

For the first weeks, our communication has settled in to a good rhythm: we chat daily in our team’s Discord channel and every Monday, we have a team call where people can bring up issues, ask questions and share their progress. Following that, I have my 1:1 call with Jim. These two calls give me a great kickoff to a new week and help me figure out my plans. When needed, we have extra sessions: I asked Anna to show around the project from the perspective of users and I had a call with Carmen going through the development environment setup. Other times, we communicate asynchronously through Discord and GitHub.

On every other Wednesday, the entire Djangonaut Space community has an Open Mic session: an opportunity to share short lightning talks or art performances. I’ve participated in two so far and delivered talks on pesky little scripts and comparing version numbers. Others have done poetry and music or showcasing projects they have worked on.

Next week, we have our first guest talk. I’ve been following these along in Youtube over the years and they are all fantastic so I’m looking forward to this one as well. First ad-hoc sessions focusing on a single topic people want to share, hosted by Djangonaut Space members have started to emerge as well. I’m looking forward to learning more about pytest from Dan next week!

Tech & contributions

This week, my first pull requests got merged, yay 🚀.

First one fixed the functionality and improved styling of the cookie banner.

Second was a smaller clean up PR removing duplicate and commented out code. (-51, +0 is the best kind of PR statistic.)

As I mentioned earlier, we’ve had some issues with the developer environment as especially the Docker build hadn’t been touched in a long time and due to old Python 3.10 lock-in, some of the pipeline actions started breaking down. Anna has been working on bringing those to more modern versions and I’ve been helping with smaller broken things like localisation errors in compilemessages step that prevented the Docker from building the projects.

Couple of other fixes I’ve been working on has to do with management commands: one to update Patreon data fetching as the API had changed and another to get more specific errors when the ingestion of blog posts come in instead of always failing at the parsing step.

Once we got a lot of the infrastructure issues out of the way, I started looking into fixing more feature level functionality that matters to our users. RSVP management in the event admin view wasn’t working so I started figuring that out. While at it, I decided it would be a good idea to add an audit log for changes so if an applicant’s status becomes something unexpected, event admins can figure out where the changes came from.

At the same time as I was working on these, I started bit by bit phasing out jQuery usage and replacing the little frontend Javascript we had with modern vanilla Javascript with the goal of eventually being able to take out jQuery. That work will take at least next week still as it’s interspersed with other work.

The beginning has been dealing a lot with getting the fundamentals down: understanding the project, helping work on making the new developer experience easier and once we get all that polished, I’m hoping to move to building bigger, desired new functionality.

On Friday, I helped a teammate with their development environment setup which helped me make good notes for an upcoming documentation update and surfaced a bug in a test. I love these kinds of working sessions with other people and solving problems to which I don’t have answers before hand. At the same time, they are great bonding sessions and you learn so much about other people when you closely work with them on problems.

I spent a good chunk of Friday and most of Saturday banging my head to the wall until it (luckily, the wall and not my head) cracked and I think I made progress with our Docker upgrade process . I’m excited of how we’re finally reaching a moment where the setup and documentation should be all in place and it should be easy for new developers to pick the project up and get up and running quickly.

I also found some rhythm in writing about my work now that it started picking up. This weekend, I shared two very different experiences of debugging broken tests: Debugging a flaky test — how I methodologically tamed an annoying bug and Assumptions are sneaky. I believe in learning in public and I think it’s important to share not only the victories and polished outcomes but the messy process and mistakes made on the way to those outcomes.

Stories from fellow Djangonauts

I’m not the only one blogging about my experience. Linda wrote about her plans for the program last week and Wasif published a post about the exploration he did for his first ticket.


If something above resonated with you, let's start a discussion about it! Email me at juhis@hamatti.org and share your thoughts . This year, I want to have more deeper discussions with people from around the world and I'd love if you'd be part of that.