Getting Started Contributing to Django
Django is a massive code base, and it’s been around for a very long time. There are some hurdles to contribute, but don’t be discouraged. People want to help you and as long as you’re making an effort to learn, people will support you.
First, please go read the advice for new contributors(6min read).
Next, if you’d like, you can read the entire the contributor documentation(2h, 15m read). There is a lot of it! Yes, it’s intimidating. Yes, it’s hard to keep it all in your head. I recommend looking over all the topics and picking one or two that interest you right now. Leave the rest for another time. When you have a question in the future, please come back and see if it’s in the documentation first, though.
Contributor experiences
My guess is that you’re looking for something a bit smaller. There are some good options here as well. Here are personal stories of how people contributed to Django. They should help you set some reasonable expectations for your experience.
- “My step-by-step guide to becoming a Django core contributor” by Eli Rosselli at DjangoCon Europe 2024 (18m watch)
- Eli provides a good overview of how to get started as a contributor, the challenges she faced and what her experience was.
- She also discusses Djangonaut Space, an 8-week contributor mentorship program.
- “Contributing to Django or how I learned to stop worrying and just try to fix an ORM” by Ryan Cheley at DjangoCon US 2023 (37m watch)
- Ryan provides a detailed account of his experience fixing an ORM bug. It’s an excellent account of what you may experience when attempting to contribute to Django.
- “How I made my first contribution to Django” by Zach Liu (6m read)
- A quick account of Zach’s experience contributing a fix back in 2016.
- 8 part series on contributing to the open source project Django by Deep “TheLearnGeek” (1hr watch)
- I haven’t watched all of this, but the videos were logically broken up. This may work better for some folks.
- Videos links:
- 1. Why Django?
- 2. How do you find a bug or task to work on?
- 3. How do you start with Django?
- 4. Developer setup for Django project
- 5. Running Django source code tests locally
- 6. Building Django documentation locally
- 7. Running Django’s tests in Django docker box
- 8. Make code changes and create pull request
- “A Djangonaut’s First Ticket to Pull Request” by Sarah Sanger (3m read)
- A quick journey through Sarah’s experience creating a ticket and fixing it within Django’s processes. It covers some of the gotchas that can be found within Django’s processes and is worth your time.
Finding tickets
A big challenge to contributing to Django is finding a ticket to work on. There are several resources to help you with that.
- Vulture Method - Tip to pick a Django ticket! by Sarah Boyce (40s watch)
- Sarah Boyce shares a helpful method to find tickets to work on.
- “How to find a ticket on Django’s trac” by David Smith (4m read)
- David shares tips on how to use Trac to find a ticket to work on.
- Sarah has a pair of messages on the Django Discord that are a great overview on finding tickets
- Message one (1m read)
- Message two (1m read)
Getting motivated
Carlton Gibson has several motivational talks on contributing specifically to Django.
- “Your web framework needs you!” at DjangoCon US 2018 (14m watch)
- “Feeding the Pony: Contributing back to Django & How to make that work for you” at DjangoCon Europe 2019 (40m watch)
- “Your Web Framework Needs You: An Update” at DjangoCon US 2019 (10m watch)
Specific topics
If you’re here to learn or do something specific, there are several resources on detailed topics will be helpful:
- “A simple approach to running Django Core locally” by Marijke Luttekes (5m read)
- This article will provide you with a way to run Django locally which is necessary when contributing code.
- django-docker-box
- A repository to help you run the Django test suite across all supported databases and Python versions.
- “Django core demystified” by Sarah Boyce to Djangonaut Space Session 2 (44m watch)
- An explanation of how Django core is developed, the processes and roles involved, and how to get started contributing.
- “Demystifying the Django ORM” by Simon Charette to Djangonaut Space Session 3 (44m watch)
- A fantastic dive into how the ORM works. If you’re curious about contributing to the ORM, start here.
- “State of the Object-Relational Mapping (ORM)” by Simon Charette at DjangoCon US 2022 (40m watch)
- A walk through of ongoing development and the state of the ORM with pointers on how you can contribute to it.
- “A Pony On The Move: How Migrations Work In Django 🐎” by Markus Holtermann at DjangoCon Europe 2022 (24m watch)
- This descriptive talk about the various components of the migration framework in Django. If you’re curious about migrations or want to better understand its architecture, watch this talk!
- Django Under the Hood talks from 2014
- Django ORM by Anssi Kääriäinen (59m watch)
- Django migrations by Andrew Godwin (57m watch)
- Meta API by Daniel Pyrathon (58m watch)
- Python templating by Armin Ronacher (53m watch)
- Django Rest Framework by Tom Christie (54m watch)
- Internationalization by Jannis Leidel (48m watch)
Get to know the community
As you contribute, you’ll integrate more into the Django community. The Django Chat podcast is an excellent resource for getting introductions to people, but two specifically are relevant for contributing.
- Sarah Boyce’s episode, Contributing to Django (54m listen)
- Natalia Bidart’s episode, Becoming a Django Fellow (1h, 3m listen)
Google Summer of Code and Djangonaut Space
Perhaps you’re here to get a head start on Google Summer of Code, Outreachy or Djangonaut Space. The community has put together a few resources to help you:
- Google’s Summer of Code 2024 wiki page
- “Google Summer of Code 2023 with Django Software Foundation” by Bhuvnesh Sharma (7m read)
- Bhuvnesh provides an overview of his experience with Google Summer of Code with Django and how to make the most of it.
- “Djangonaut Selection Process” by Djangonaut Space (6m read)
- An overview of how Djangonaut Space selects the mentees for the contributor mentorship program.
Community Resources
Lastly, I want to mention other community resources.
- djangocon-sprints from Carlton Gibson
- A repo containing notes for running “Getting started contributing to Django” sprints workshops.
- “How to: Conference Proposals” by Lacey Henschel (2m read)
- Lacey provides a how-to guide on submitting conference talk proposals. As you engage more with the community, you may discover a desire to present at a DjangoCon!
- “What makes a good DjangoCon US Keynote” by Drew Winstel (5m read)
Have a resource?
If you have a resource that you’d like to add to this list, please let me know! You can find me on the Fediverse, Django Discord server, or reach me via email.