Django Project Idea for GSCO 2020(Mentorship)

Good Afternoon Everyone,

I am Aakash Baranwal from Agra, India. I wish to propose a project for GSOC 2020.

I propose to build a complete website on Django which enables users for easy integration of Chatbots developed on frameworks like Dialogflow (by Google) and others. I have been working around finding a solution for easy integrations of a chatbot I developed using Dialogflow for my website. One way to do this was I found on Google codelab’s but I believe since every organisation now wish to have a chatbot of their own but at the same time they wish to optimize the cost. So, the proposal is to develop a website which generates a single api which would be called whenever a user makes a query on the chatbot only if no response was generated out of all the queries and responses stored in the database and every new query and response which is generated shall be saved in the database as well.

Kindly let me know your opinions and suggestions.

Thank You

With Kind Regards
Aakash Baranwal

[edit: removed wrong assertion about mailing list]

I can give a little feedback - generally, we look for projects on Django itself as part of GSOC, and if not, we like them to be a cruicial part of the community (e.g. django-debug-toolbar would make sense). I don’t think a separate chatbot abstraction layer is the sort of thing we’re looking to sponsor - it just affects too few people. Sorry!

It’s stated here under Communication that the Django Forums Mentoring channel should be used to submit all proposals and other GSoC-related communication.

I think it was also mentioned on the mailing list that they wanted to use the Django Forum more.

My mistake, I didn’t see that! Apologies to all involved.

Yes, thanks Andrew.

I thought the forum might work better than the mailing list, so I’ve asked people to post to the Mentorship channel here.

Hey everyone! I am Sanskar Jaiswal from India. I am currently in my second year of undergraduate studies. I am highly interested in taking part in GSoC 2020. I have been trying to go through the codebase for quite a while, but it just seems too complex. I was hoping if any of you here had any recommendations for the same. For example if I wanted to go through the “db” folder, what would be a good entry point, and then how should I proceed while reading the code?
Any help would be much appreciated.

Hi @aryan9600. That’s a good question.

The db folder is the ORM, which is undoubtedly the hardest bit of the code base to understand.

There start with the bits you’re used to seeing.

So, db.models.base — which is where Model is defined.

Have a look there at the metaclass ModelBase. You don’t have to userstand __new__() entirely. But this is where Fields are added, so from there you can look at django/db/models/fields/__init__.py where you’ll find Field defined. Look at Field.contribute_to_class(), which is called by ModelBase.__new__(). Get a feel for that.

Look at the rest of the Field API. See how it maps to your usage of the ORM.

Then, the next bit is QuerySets. django.db.models.query. Look at QuerySet and ModelIterable there. From there it’s django.db.models.sql.query (which is QuerySet.query which maps down to the actual SQL.)

From there, it’s the compiler and how expressions are built.

But that’s already a very long road. It’s very complex. (It’s a powerful ORM…)

The trick is to go slowly. And accept that to begin you’re just getting a feeling for it.

From there I’d browser open ORM tickets, find one or two that I thought interesting and try to dig as deeply into those one or two as possible.

So first it’s a browse and overview, then it’s dig down to really pin that down.

Hopefully that helps.

Lots of people never go in the django.db folder, so if you do don’t worry if it’s hard/slow. That’s normal.

2 Likes

I have gone through some of the code in the db folder, but I cant find a good first issue to work on. I assigned myself this ticket [Ticket #30851],(https://code.djangoproject.com/ticket/30581) but upon talking to Simon Charette, this issue is a bit too complex for me. Could you kindly point me to a ticket that a beginner can work upon, or give me a bit more insights upon Ticket #30851?

HI @aryan9600.

I suggest you browse by Component, to narrow down the tickets. (Here’s an example filter for File uploads/Storage.)

What part of the framework have you used most? What do you want to work on? If you really don’t know, Documentation tickets are a super way to get to learn a new part of the framework. (You have to understand the issue in order to document it.) From there browsing by component again to find related tickets…