Hey I’m new to open source and i really want to start contributing because i find it very interesting. The problem is that I’m not quite sure where to get started. I’ve read https://docs.djangoproject.com/en/dev/internals/contributing/ and looked at some issues at the issue tracker and I was really overwhelmed . I could understand some of the issues but then I’m really having trouble familiarizing myself with the codebase and don’t understand where to look for what. It would really be helpful if someone could mentor me and get me started. Any help would be appreciated thank you .
Hey @chinmoy12c, what exactly it is that you are looking for guidance about?
I am a new contributor to Django project and have about a couple of years experience working with Django as a web developer. I just created my first Pull Request to django project. Here are the things that helped me.
- Is it in terms of understanding Django codebase?
– If so, my approach has been to jump into what I need to work on, i.e. pick a ticket from easy tickets. And if you don’t find anything unassigned, choose something that someone else is working on but try to fix it by yourself without looking at their code changes. This will give you the much needed initial exposure to code base and the initial confidence bump
- Is it to set up your local dev environment?
– I found the Django contributing guide (link you shared your post) and these instructions by Carlton Gibson dcus2019sprints very helpful
Hope this helps.
Hey @ProProgrammer thank you so much for your help. I would implement this approach as well, one problem is that i find difficulty in pin pointing the exact code for a particular issue. Is it normal for beginners to experience this? And if so is there a defined way that i can follow? Thanks again .
Hey, yes definitely normal. When you are working through any new code base (not just Django), it’s totally normal to feel lost initially until you build a level of familiarity with code base.
The good thing about Django documentation is, at various places you can click on Source link next to the class names/function names and that will take you right into the code implementation of that particular logic.
Additionally, another method I use is, I try to understand the reasoning/thought process behind a particular implementation by using Annotate functionality of the IDE, Annotate shows me the commit ID when a particular piece of code was last changed, I go to that particular commit via https://www.github.com/django/django/commit/<commit_id> and from there I try to find the associated Pull Request or ticket number. Mostly at these places you can see the discussion that happened during a particular implementation and that discussion helps you build context.
Hence, for me the only way is to dive into code base, and start tinkering around with it.
An alternative approach is to see if there are any code walkthrough videos available. I haven’t been able to find particularly code walkthrough videos.
I have seen this video by James Bennett: https://youtu.be/tkwZ1jG3XgA titled Django in Depth
It’s an helpful insight into internal workings of Django but I would say use it as a reference instead of a tutorial. Basically I refer to parts of it when I need to understand certain things while looking at the code base.
Okay. Thank you for all the guidelines I’m sure these would help me a lot . Also thank you for the video I’ll have a look at it .
Hey, it’s great that you’re excited to contribute!
If you find anything challenging or if you’re stuck on something, feel free to make a post here so we can help you out.
I’m also a new contributor and I was lost at first. It really helps to know that you’ll eventually find your footing in Django. It may take time, but you’ll learn so much!
Hey @Valz yeah sure. Thank you for your support this community is really wonderful. .
Hey I was looking at this issue
and I understand that if the RemoveField be carried out before CreateModel, it would work fine. Following the code trail of makemigrations.py brought me to autodetector.py file. I think the issue can be resolved by modifying this file and somehow changing the commands order it generates? Am I on the right track? Please do help me out here .
You’re definitely on the right track! Try writing an appropriate test first, then modify the files and see if your test passes.