Name Shashwat Kathuria
Personal Website shashwatkathuria.github.io
Resume Click to view
Location New Delhi, India
Typical working hours 12PM to 3 AM UTC+5.30
- Short summary describing your project and how it will benefit Wikimedia projects
WikiEduDashboard is a web application which provides tools that help instructors and students share their knowledge on different wikis like Wikipedia, Wikidata, etc and also be able to track their contributions. Instructors are able to organize different types of courses like Edit-a-thons, Article Scoped and Basic, along with the flexibility to also let program leaders and instructors run campaigns having multiple courses. Keeping track of contributing on a vast platform like Wikipedia, or other wikis is itself a task and this application helps in managing that. With the backbone of such a strong implementation, there are many articles on Wikipedia which ultimately help people across the globe in having access to the knowledge shared. It is implemented with Ruby on Rails on the backend and mostly ReactJS on the frontend and runs on two websites: https://dashboard.wikiedu.org/ and https://outreachdashboard.wmflabs.org/
The course stats are pulled in a regular cycle of continuous updates, which is managed with the help of gems sidekiq and sidekiq-unique-jobs of which the former is a job scheduler and the latter prevents duplicate jobs in the Sidekiq queue.
Currently in the lib directory three types of errors are being handled, i.e., relating to authentication errors(which is overridden with modifications in messages), rescue development errors and rescue errors.
- Possible Mentor(s)
- Have you contacted your mentors already?
I have communicated with my mentor Sage Ross many times, via GitHub and Slack and have been able to figure out a common time for discussion.
An error mechanism will be created that works along with UpdateCourseStats, and the errors will be saved in the database in association with a particular course. Along with this multiple Sidekiq jobs and Sidekiq queue are to be kept track of, and failing ones will be notified.
There will be a separate tab in a course for showing data related errors and statuses of failed Sidekiq jobs, with its visibility set only for admins, program leaders and instructors.
Abnormalities in the JSON response objects from the MediaWiki API will be reported as errors in the course error tab, alerting about some unexpected data or API changes.
Data is currently fetched in three compartments. The error monitoring of these three compartments is very crucial because course data is updated on the basis of the data received here :
The separate jobs will be kept track of and if any job fails, the process will be rolled back if possible and notified of the job failing. There are a lot of Sidekiq::Workers being used in app/workers (CourseDataUpdateWorker being a crucial one) which are to be kept track of, along with use of Sidekiq::Queue in scheduling of course updates in lib/data_cycle/schedule_course_updates.rb. Their status can be tracked with the help of gem sidekiq/api or gem sidekiq-status, each with some pros and cons, like sidekiq-status allowing us to store data with a job, whereas sidekiq/api has more user base but is somewhat not recommended for scalable applications as some of the operations cannot be used in bulk or automated fashion.
The update_course_categories, update_article_status, update_average_pageviews and update_caches being called for the updation of course categories, article status, average pageviews and caches also have to be verified in some way that they are updated. Either the checking of the updated things has to be done by keeping track of the counts, or in depth checking of the data is to be done. A helpful tool can be ActiveModel::Dirty .
Following updation of caches are to be kept track of :
Errors will also be reported if a significant upward deviation from course.flags[‘average_update_delay’] occurs in the course update process. Some relation regarding the total number of revisions with the total time taken for a course to update can also be analyzed statistically to detect any odd behaviour. Errors regarding system hitting a rate limit or unavailability of MediaWiki API servers will also be kept track of, if no responses are being received to the requests sent. Also, if the system gets out of memory, because of the course data being very big, errors will be notified accordingly.
Describe the timeline of your work with deadlines and milestones, broken down week by week. Make sure to include time you are planning to allocate for investigation, coding, deploying, testing and documentation
1 April - 3 May
- Study more about the ways in which errors can occur in the background Sidekiq jobs, how to handle them and track their status
- Gather more knowledge about how to handle the errors in an efficient way in the scenarios discussed
- Continue solving more project related bugs on WikiEduDashboard
May 4 - May 30
- Community bonding period
- Finalize the gem to be used to track the status of Sidekiq jobs
- UI mockups and finalizing how to display errors and statuses of jobs.
- Finalize the error mechanism to be used for checking if the data is fetched properly, API changes, MediaWiki API server down, verification of updated details etc
- Mark the bugs to be solved during the internship
Week 1 (1st June - 7th June) & Week 2 (8th June - 14th June)
- Add gem to track Sidekiq jobs status
- Implement the functionalities of the same in the existing jobs and store the job statuses if they fail
- Make API interface/controller for communication of the same
Week 3 (15th June - 21st June)
- Start working on UI Tab for displaying job statuses
Week 4 (22nd June - 28th June)
- Solve bugs
Week 5(29th June - 3rd July)
- Phase 1 Evaluations
- Start doing Week 6 work alongside
Week 6 ( 3rd July - 9th July) & Week 7(10th July - 16th July)
- Start working on the custom error mechanism
- Design and migrate to database as required
- Make API interface/controller for communication between client and course error information
Week 8 (17th July - 23rd July)
- Work on UI Tab to display course specific errors
- Start working on errors to be handled in different scenarios
Week 9 (24th July - 27th July)
- Solve bugs
Week 10 (27th July - 31st July)
- Phase 2 Evaluations
- Start doing Week 11 work alongside
Week 11 (1st August - 6th August) & Week 12 (7th August - 13th August)
- Continue working on UI Tab to display course specific errors
- Continue working on errors to be handled in different scenarios
- Verify updation of course details
Week 13 (14th August - 20th August)
- Add some statistical time related error handling, i.e., average delay in course update in relation to number of revisions, etc
Week 14 (21st August - 24th August)
- Solve bugs
24th August - 31st August
- Final Project Submission
- Final Evaluation Submission
31st August - 7th September
- Final Evaluations by Mentors
- Final Results Announced
Describe how you plan to communicate progress and ask for help, where you plan to publish your source code, etc
- Joined Slack group for WikiEduDashboard
- Regularly communicating with mentors and asking for help as required
- I am going to work on separate branches on git (GitHub) and upload code on a regular basis. Also, create pull requests as and when a feature is completed. I have followed this process since a while now in my PRs.
- Online on Slack and active on GitHub during my working hours.
- I will also communicate on Phabricator via comments on the related project subtasks.
- I will submit my weekly reports on my meta wiki user page
- Weekly publish my experience on my personal website
Tell us about a few:
- Your education (completed or in progress)
I am currently pursuing Bachelor of Technology, Computer Science & Engineering from Indian Institute of Technology (IIT), Jodhpur and I am in my 3rd year (6th Semester) currently. The program spans four years (8 Semesters).
- How did you hear about this program?
I heard about this program through students in my college. A few of them have already participated in the program. I have gained a lot of insight regarding the same from them, and was encouraged to take part in the same as I am really interested in open source development and participating in this program would give me a kick start for the same.
- Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
I will be able to dedicate 40 hours per week to this project, and more if required.
I don’t have any other time commitments during the duration of the program apart from a brief period of time other than vacations in my college. Also, my summer vacations span from 3rd of May to 19th of July and I will be able to work during that time fully. In the remaining small part of the college days, I will still be able to work in the working hours specified as mostly all of my classes are during early morning hours only. Also, I have mostly worked while attending college till now in the WikiEduDashboard GitHub repository and do not face any issues regarding time commitments.
- We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?
I am applying only for Google Summer of Code and in 2 projects of Wikimedia Organization regarding WikiEduDashboard project.
- What does making this project happen mean to you?
My inspiration to work on this project is due to the reach and free knowledge that this project provides, being used in many universities worldwide and collectively enhancing our knowledge, so I want to be a part of this initiative by contributing and try to make it even better with more features. Apart from that, there are technical reasons also due to which I am extremely excited to work here, first and foremost, WikiEduDashboard being a Web Development project, which is my favourite field, along with the real life applications of how an application is implemented to serve people communicating in different languages, the design of the application, database, classes, testing, performance, etc put together to give one piece of a software which is used by so many people around the globe.
Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them. Describe any open source projects you have contributed to as a user and contributor (include links). If you have already written a feature or bugfix for a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so
I use Linux Ubuntu, have worked with virtual environments in my Django projects and also, I am very comfortable with git VCS (Version Control System) and have been using it in all of my projects since the past 2 years.
An Instagram like website for users to post images and follow people. Implemented with Ruby on Rails, MongoDB/SQLite/PostgreSQL, Bootstrap and AngularJS. Uses Rspec and related testing tools. Hosted on Heroku and database on MongoDB Atlas.
- Deployed at https://social-cloud-sk17.herokuapp.com/
- Code Repository at https://github.com/shashwatkathuria/SocialCloud
A drawing application for users to draw stuff and save them. Implemented with Django, SQLite/PostgreSQL, Bootstrap and a ReactJS & d3JS frontend. Uses Django testing framework. Hosted on Heroku.
- Deployed at https://drawing-canvas-sk17.herokuapp.com/
- Code Repository at https://github.com/shashwatkathuria/Drawing-Canvas
- Deployed at https://iitj-healthcare-sk17.herokuapp.com/
- Code Repository at https://github.com/shashwatkathuria/IITJHealthCare-Project
Disaster Safety App
An online portal which broadcasts alerts about natural calamities like earthquakes, hurricanes, etc. as and when they happen through user interaction. It also has an android application apart from the web application. Implemented with Flask framework in Python, Android Studio, SQLite, Bootstrap. Used Microsoft Azure VM for deploying.
- Code Repository at https://github.com/shashwatkathuria/Disaster-Safety-Web-App
Pull Requests in WikiEduDashboard (Started contributing around the starting of March 2020)
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3881
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3680
- It modifies the hash of flags in the TrainingModulesUsers to accommodate course id as well if the training module is an exercise by using nested hash of flags indexed by course ids.
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3875
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3873
- It deletes the open requested account requests related to a course if a course is deleted.
- Under discussion https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3869
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3847
- Adds a filter to the activity tab to display course specific activity, i.e., tracked revisions of the course.
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3867
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3647
- It tracks only those revisions which are tracked by the course wikis, and hence counts those only.
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3837
- Continuation of Closed https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3828
- Fixes https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3500
- Adds a new feature (enhancement) of displaying the time taken by a user to complete a training module. If the completion time is less than one hour, it is displayed.
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3863
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3849
- It renders the navbar only when the course information is received.
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3823
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3822
- It parses the data received from wiki requested accounts response, parses and displays the data in a user friendly format.
- Under discussion https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3842
- Fixes https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3500
- Adds a new feature (enhancement) of introducing time limit in clicking the next page of the training modules if the user is logged in. This is done so that the user does not fast forward through the training slides for the sake of completion.
- Ready for merging https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3907
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3905
- Corrects navigation as required and adds an additional preview link.
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3815
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3792
- It adds a z-index to edit button so that it doesn’t overlay on the dropdown.
- Merged https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3817
- Fixes the issue https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3816
- Minor statement bug.
- Under discussion https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3814
- Fixes https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3807
- Minor bug to fix the alignment of the text ‘Log In With Wikipedia’
Issues in WikiEduDashboard