Page MenuHomePhabricator

Develop a web dashboard to help MYSQL account metadata inventory
Closed, DeclinedPublic

Description

Profile Information

Name: Battu Ashita
Zulip nick: BATTU ASHITA
Blog URL: https://ashitabattu.blogspot.com/
Web Profile: https://github.com/battuAshita
Location: India (UTC + 5:30)
Typical working hours: 11:00 AM to 8:00 PM UTC+5:30

Synopsis

The main idea behind this project is to develop an inventory management system which handles information about various Maria DB instances in use and the respective permissions(grants) they have. With this inventory management in place, we would be able to achieve things like changing permissions, inserting new entries or listing out anomalous Maria DB instances according to certain rules, etc easily and alert the respective stakeholders.

The scope of this project is huge. Going forward we can keep adding multiple features like fetching related documents given a search with some limit and offset, etc and use this as an internal tool to manage various other things.

High level design overview

The user would be seeing a hamburger menu with multiple tabs. Each tab would have a specific functionality i.e one tab would list down the Maria DB instances, other tabs would list the roles, usages and peculiarities of different groups of servers, etc.
The user would be able to search/filter for a specific Maria DB instance and list out the permissions etc

Example APIs

Some of the internal APIs(with basic auth) we would be having

GET /Manager/FetchMariaDBInstances
This API would fetch details from the database.
Response format: {"api_id": uuid, "instances": ["instance1", "instance2"]}
Response code: 200

POST /Manager/CreateNewInstance
This API would insert a new a row into the table
Response format: {"api_id": uuid, "message": "inserted"}
Response code: 201

Frameworks which can be used

Django(MVC architecture) for both the front end and back end.
To make it even more decoupled and maintainable, we can split the back end(Django) and front end(VueJs or anything similar to this).

Mentors : @jcrespo and @Marostegui

Timeline

PeriodTask
May 17th to May 24thCommunity bonding period starts. Getting to know about the existing Wikimedia infrastructure i.e where all the necessary tables are and setting up the necessary things on my local machine.
May 25th to June 1stList out all the use cases, APIs to be added, tables to be accessed etc. Create a document with the high level design and get it approved.
June 2nd to June 9thCreate code stubs as per the design and start coding. Follow a controller, use case, data-adapter layer kind of approach for better maintainability of code. Add docstrings for every use case. Add unit tests to make sure the functionality is working as expected. Create a basic front end.
June 10th to June 17thContinue coding the necessary back end APIs. I will be adding the respective documentation as soon as I complete the coding for each API. Dev test every API once it’s done.
June 18th to June 25thContinue coding the back-end APIs.
June 26th to July 3rdDeploy the changes on the given staging setup. Start testing and fix bugs if any.
July 4th to July 11thIntegrate the basic front end with the back end.
July 12th to July 16thPhase I evaluation
July 17th to July 24thWork on the UI/UX design and get it approved by incorporating review comments if any.
July 25th to Aug 1stCoding the front end.
Aug 2nd to Aug 9thEnd to end testing of my code.
Aug 10th to Aug 15thMake improvements(if time permits) like adding search etc. Take feedback from the mentors and incorporate any changes which might have to be made.
Aug 16th to Aug 23rdPhase II evaluation
Aug 23rd to Aug 31thMentors submit their final evaluations.
August 31stResults of GSoC - 21 will be announced.

Deliverables

Phase I evaluation
  • Basic front end - basic HTML pages with no styling.
  • By the time each API is finished, I will have the documentation, unit tests and integration ready. Essentially, I will have 3 solid weeks(starting from June 2nd) for coding the APIs, adding UTs, documentation and integrating it with a basic front end.
  • APIs to perform CRUD operations on the necessary tables.
Phase II evaluation
  • A fully functional inventory management system(fully designed front end and back end) ready for use.

Participation

  • I will be working on separate branches created in a Github repository. I plan to have separate branches cut from master for every feature.
  • I will maintain a staging branch that will have multiple features. This is the branch that should be deployed on the staging environment. Finally, this branch would be merged into master.
  • I will be available on Zulip during my working hours ( 11:00 AM to 8:00 PM UTC+5:30 ).
  • I will be interacting with the mentors through the comment section of the respective sub tasks on Phabricator.
  • I will be giving updates over email every morning with whatever has been done the previous day.
  • I will be writing blogposts of my work on a weekly basis here.

About Me

I am currently in my sophomore year of college pursuing Computer Science and Engineering at the Indian Institute of Technology Bhilai. I love taking up challenges that bring me out of my comfort zone and help me learn anything new, explore new options and expand my knowledge.

I heard about GSoC from a senior in my college who was a part of it and since then I have been very much enthusiastic to be a part of it and contribute to open source.

During the three months of this program, I would not be having any classes or exams and working on this project will be my only commitment during that time. So, I would be able to allocate 30 hours/week(considering a 5 day week) for completing this project. As my college commences from the 1st of August 2021, I have planned my timeline in such a way that I would be completing the major part of the project before August 1st. Post August 1st, only the testing part/improvements would be left, which I can easily do despite having my classes. I also have a week as a buffer just to wrap up any remaining things. So, I am confident that I will be able to complete my project according to the timeline that I have provided, without much hassle.

This project getting executed would mean a lot to me as Wikimedia is a large organisation and contributing to it would enable me to release code which will be used by numerous people thereby creating a positive impact on the society. Collaborating with new people will help me get a new perspective towards various things and I'm looking forward to being a part of this great journey.

Past Experience

  • Worked on a project where I designed a database(MySQL) and tables within it such that students can enrol in courses, view the lesson resources, comment on lecture videos, take a quiz and wrote queries where a student can get their scores per every quiz in a course they enrolled into. I got a really good understanding of relational databases and how they function from this.
  • Designed a UI using HTML, CSS, and Javascript where the user gets to fill the form and I linked it to the back end so that the information gets stored in the database. I learnt how to integrate a back end with a front end.
  • Experimented with the 'GIPHY API' and created a basic program which fetches related GIFs given a search string. I learnt how we can use API keys to authenticate, API endpoints and hence have a good idea of how REST APIs work.
  • Designed a basic binary calculator using HTML, CSS, and Javascript.
  • I have previously made contributions to AnitaB.org. Here are some of my pull requests that have been merged :

Event Timeline

Hi @jcrespo and @Marostegui. Please go through my proposal and give me a feedback so that I would be able to improvise it.

Ashitabattu renamed this task from MYSQL account metadata inventory to Develop a web dashboard to help MYSQL account metadata inventory.Apr 8 2021, 8:49 AM

The proposal seems solid, however I am worried about your courses commencing in August. Will you have enough time outside of class? You mention "having the most important functionality" written by then, however, when I see the timeline, I think you want to break down the backend first and then the frontend, and this last part can take a lot of time.

Have you thought a way to provide smaller milestones, so that if your work gets interrupted, there is at least something that will be useful?

Regarding accounts and authentication, we can leave that out of the scope, as we will likely handle that at infrastructure side (on the web server) rather than on code.

Those are my first reactions towards your proposal.

Thank you for the valuable feedback.

however I am worried about your courses commencing in August. Will you have enough time outside of class? You mention "having the most important functionality" written by then

I made a couple of changes to my timeline by moving the integration part into the API development phase i.e integrating the basic front end as and when APIs are ready. Hence, by the time the Phase I evaluation starts, I will be completing the integration of the back end with the basic front end(without styling).
Essentially, I would have 3 solid weeks for completing the major part i.e Basic front end, APIs, UTs, documentation and integration.

According to my new timeline, I would only be left with the testing and UI/UX part of the front end after the Phase 1 evaluation. So, it would be easier for me to commit sufficient time and complete things even though I will be having my classes.

Have you thought a way to provide smaller milestones, so that if your work gets interrupted, there is at least something that will be useful?

As I would be following a process where I code an API, link it to the basic front end, write UTs and documentation for it etc even if things get interrupted there will be something useful coming out of this. So, the smaller milestones would be developing each API/feature end to end as per the design document.
I will be able to commit 7 hours per day during the summer(i.e till August 1st), which will turn out to be 35 hours per week(considering a 5 day week).

Regarding accounts and authentication, we can leave that out of the scope, as we will likely handle that at infrastructure side (on the web server) rather than on code.

I have removed this from the project scope.

Also, Wanted to ask about a better way of giving my day-to-day updates(during the program) on my project?

Hey @Ashitabattu

Thanks for showing your interest to participate in Google Summer of Code with Wikimedia Foundation! Please make sure to upload a copy of your proposal on Google's program site as well in whatever format it's expected of you, include in it this public proposal of Phabricator before the deadline i.e April 13th. Good luck :)

Hey @Ashitabattu

Thanks for showing your interest to participate in Google Summer of Code with Wikimedia Foundation! Please make sure to upload a copy of your proposal on Google's program site as well in whatever format it's expected of you, include in it this public proposal of Phabricator before the deadline i.e April 13th. Good luck :)

Yes. Will do that. Thank you : )

Hi @jcrespo. Please look into my new timeline and give me the final feedback before I submit my proposal.
Also, I have only concentrated on making my proposal and haven't made any contribution to the microtasks during this application period. Hope this doesn't effect much. But, I am planning to be active from now onward.
Thank you.

GSoC application deadline has passed. If you have submitted a proposal on the GSoC program website, please visit https://phabricator.wikimedia.org/project/view/5104/ and then drag your own proposal from the "Backlog" to the "Proposals Submitted" column on the Phabricator workboard. You can continue making changes to this ticket on Phabricator and have discussions with mentors and community members about the project. But, remember that the decision will not be based on the work you did after but during and before the application period. Note: If you have not contacted your mentor(s) before the deadline and have not contributed a code patch before the application deadline, you are unfortunately not eligible. Thank you!

@Ashitabattu ​We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 10 students. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many students who we did not accept in 2020 have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation