Profile Information
Name: Abishek Das
Github: Abishekcs
Email: abishekdascs@gmail.com
Location: India
Time Zone: IST (UTC+5.30)
Typical working hours: 3:00 PM to 3:00 AM (IST)
Synopsis
[Programs & Events Dashboard] Improve system for copying courses from one Dashboard to another
There are two production instances of the WikiEduDashboard software: Programs & Events Dashboard (https://outreachdashboard.wmflabs.org/) and Wiki Education Dashboard (https://dashboard.wikiedu.org/). The system includes a tool to copy a course page from one Dashboard to the other, but the copied content is incomplete. If a course with Timeline content is copied, the Timeline content is not included, making it difficult to reuse assignment plans from the Wiki Education Dashboard on the Programs & Events Dashboard. This project will improve the course copying feature so that useful Timelines and other content can more easily be transferred across servers.
While improving the copying of Timeline data is an explicit requirement, the broader goal is to enhance the course copying feature to ensure all useful and relevant course content can be transferred seamlessly between the two dashboard instances. This will include articles, assignments, campaigns, uploads, alerts, suspected plagiarism, and any other data like resources and training materials that comprise a complete course definition.
The current tool only copies the necessary course details from course.json, categories from categories.json, and users from users.json, leaving out important details which are crucial for the Timeline. These include the timeline_enabled, weekdays, day_exceptions which are present in the course.json, and many more details that are related to various course details and the Timelines.
All the data required to copy courses can be retrieved from JSON endpoints except for resources and training materials related to courses, which do not have a JSON endpoint. This can be resolved by making a JSON endpoint for resources and training materials.
Improving the ability to copy course details mentioned above between dashboards will make it easier to reuse educational materials across Wikimedia's learning programs.
Possible Mentor(s)
Sage Ross
Have you contacted your mentors already?
Yes
Deliverables
Currently, the tool to copy a course page from one Dashboard to the other only copies the necessary details required for the course, which are:
- Course main data (which includes the basic requirements for a course to be copied)
- Categories
- Users
All the data required while copying a course from one server to another is retrieved from available JSON endpoints. Since only the main data for the course is copied, it leaves out some details which are necessary and required for copying other content of the course. For example, Timeline content.
The course contents that the tool doesn't copy are as follows:
- Timeline
- Articles
- Assignments
- Campaigns
- Uploads
- Alerts
- Suspected Plagiarism
- Resources and Training Materials
All the data for the course content is available from the JSON endpoints except for Resources and Training Materials.
So, the project will be completed in two phases:
Phase 1: Core Course Content
This phase will focus on:
- Timeline
- Articles
- Assignments
- Campaigns
Phase 2: Additional Course Data and Materials
This phase will focus on:
- Uploads
- Alerts
- Suspected Plagiarism
- Resources and Training Materials
Mid-Term Evaluation
- Add necessary functionality to the tool to copy course data(since currently the tool only copies the bare minimum data that is required for a course to be copied) from course.json endpoint that is required by the timeline content and other content. Additionally, there are a few more pieces of data from the course.json that are not currently copied by the tool. Most of these are minor course details that I believe should be addressed, as they may be useful to some users. Integrating these minor details should not be troublesome, as only minor changes to the existing backend code will be required.
- Add the core functionality to incorporate the feature to copy the Timeline Content of the course.
- Improve the existing UI for copying courses for both admins and non-admins (making the copying tool available to non-admins)
- After implementing the core functionality for copying the Timeline content and making the necessary UI improvements, proceed to incorporate the copying functionality for the remaining course content features, such as
- Articles
- Assignments
- and Campaigns.
- Write tests for the above features.
As per my research, the Timeline content is moderately complex to implement, so I will add this feature first, followed by the rest of the course content. As the Timeline content also depends on the data from the course.json endpoints, as the course.json endpoints contain data about timeline_enabled, weekdays, day_exceptions (which are necessary details for the Timeline), after implementing the Timeline Content, the other content will be easier to implement as I would have gained good experience with adding the Timeline
copy features to the tool.
Final Evaluation
- Implement the functionality for the tool to copy the remaining course content:
- Uploads
- Alerts
- Suspected Plagiarism
- Resources and Training Materials
- In the UI, provide options for admins and non-admins to choose which course content they want to copy. The following content should be mandatory and non-optional by default:
- Course main data
- Categories
- Users
As these three components are the essential core content required for a course, they must be included whenever an admin or non-admin copies a course.
- Incorporate additional options in the UI, if needed, to allow users to select other course content types for copying.
- Develop comprehensive tests for the above features to ensure proper functionality and data integrity during the course copying process.
- Conduct thorough testing and debugging to identify and resolve any issues or inconsistencies.
- Implement any necessary optimizations or performance improvements for the course copying functionality.
- Document the updated course copying feature, including instructions for admins and non-admins, and any relevant technical details.
Timeline
Community bonding period
Since this is a user-focused project, user research will play a crucial role in determining the scope, extent, and functionality of the course copy tool and its content. Here are some key questions that require responses:
- What course content do users want to be included by default when copying?
- Do users want the option to selectively choose which course content they want to copy while transferring a course from one server to another?
- Is the current course copy tool easily discoverable for users (admins and non-admins)? Also, are non-admin users aware of the existence of this copy tool feature within the dashboard, since currently, it's only accessible to admins?
- Would users find it beneficial to have simple documentation explaining the purpose of the copy tool and the different types of course content (e.g., Timelines, user lists, articles, etc.) that it can copy?
- What UI/UX improvements or new features would help users the most when using the copy tool?
May 27 - June 12
- Start with adding the feature to the copy tool to enable it to copy the Timeline content of a course. Since the JSON endpoints contain all the details of the timeline, it should be relatively straightforward to fetch the timeline data and add it to the existing database of the target instance. After successfully storing the timeline data in the database, the existing codebase of the dashboard should automatically detect (Already tested works with some modification to the existing code) and handle the timeline for the copied course. The more complex aspect of this task will be to perform any necessary pre-processing steps on the timeline data before storing it in the database. This pre-processing is crucial to ensure that the existing codebase can easily find and interpret the timeline for the copied course correctly. Consider potential improvements to the user interface and user experience to make the timeline copying process more intuitive and user-friendly, such as providing an option to selectively copy specific parts of the timeline if the user desires.
- The plan is to keep the UI simple and user-friendly. Currently, the admin copy tool's front-end is built using HAML, which will be migrated to React. This should be a straightforward process as the UI is a minor part of the copy tool functionality. Transitioning to a modern front-end framework like React will allow for a more responsive and interactive user interface, enhancing the overall user experience.
- Write feature tests for the functionality implemented so far to ensure that everything is working as expected. I plan to make small PRs for each feature, such as when the ability to copy the timeline of a course is added to the Copy Tool, I will open a PR for it and continue with the same approach for other features. This method will make it easier to review the code and fix bugs.
June 13 - June 20
- Start working on adding the feature to the copy tool to enable it to copy Articles content of a course.
- Write tests code for the Articles copy feature
- Open a PR for the newly added Articles Content copy feature for a course.
June 21 - June 28
- Start working on adding the feature to the copy tool to enable it to copy the Assignment content of a course.
- Write tests code for the Assignment copy feature.
- Open a PR for the newly added Assignment Content copy feature for a course.
June 29 - July 5
- Begin by adding the feature to the Copy Tool to enable it to copy the campaigns content of a course.
- Write test code for the Assignment campaigns feature.
- Address any other issues related to bugs or UI improvements implemented thus far in the project.
- Open a PR for the newly added campaigns Content copy feature for a course.
July 6 - July 14 (mid-term evaluation)
- I will incorporate the feedback received during the evaluation period into my work, addressing any provided suggestions and submitting necessary patches. Additionally, I will attend to any tasks that were left incomplete earlier.
July 15 - July 28
- At this stage, the development of the copy tool to replicate core course content should be mostly complete. Now, my focus will shift to adding additional data content for the tool to copy for a course, such as Uploads, Alerts, Suspected Plagiarism, and Resources and Training Modules.
- I will conduct research to determine the source from which to copy the content for Resources and Training Modules, as it does not have a JSON endpoint. I might need to create a JSON endpoint for this purpose. I’m still not sure if this is required - it will depend upon whether I can copy the Resources and Training from an existing source, provided it is simple to implement.
- Write test code for the above-implemented features.
July 29 - August 4
- During this period, I will focus on the front end, as the major work on the backend should be completed by now. This week, my aim is to implement options in the UI to provide both admins and non-admins with the ability to select which course content they wish to copy. While some course content will not be optional, as they are fundamental requirements for a course to be copied and to exist in the first place.
August 5 - August 18
- Document the updated course copying feature, including instructions for admins and non-admins, and any relevant technical details.
- Polish everything in the interface after consulting with users and my mentor. I also plan on writing the remaining tests during this phase, along with finishing any pending work.
August 19 - August 25
- Address any bug fixes and edge cases.
August 26 - September 4 (Final Evaluation)
- Address all feedback, incorporating any final changes based on the last round of feedback.
Participation
- I intend to utilize Slack as my main point of contact. I've been active in the Wiki Edu Dashboard slack for a while now and have been in contact with Sage Ross. As a secondary point of contact, I can be contacted through email. I will also be available to contact through Github regarding any issues or pull requests that I make throughout the coding period.
About Me
- Education (Completed)
- University: Nagaland University, School Of Engineering & Technology
- Degree: Computer Science & Engineering
- How did you hear about this program?
- I heard about this program through twitter.
- Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
- No
- 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)?
- What does making this project happen mean to you?
- In May 2023, I was seeking open-source projects to contribute to in order to gain real-world experience in web development. That's when I stumbled upon WikiEduDashboard. Initially, the idea of contributing to WikiEduDashboard seemed daunting, considering my almost zero experience with large codebases in web development. However, I decided to tackle a small issue, which helped alleviate my fears of contributing to open-source software. Since then, I no longer find it intimidating to contribute to any OSS projects as long as I am patience and try to understand an OSS project. Moreover, I thoroughly enjoyed my time contributing to WikiEduDashboard, which ultimately led me to apply for this project. I'm greatly looking forward to this project."
Past Experience
Contributions to Wiki Education Dashboard
I've contributed to the dashboard over the past year since May. Below, I list some of the contributions I've made.
| Pull Request | Title | |
|---|---|---|
| #5495 | System for discouraging assignment of specific articles. | |
| #5593 | Bug fix: Issue with Conditional Question Options Display. | |
| #5472 | Fix Default Sorting of Students List and Retain Sorting State. | |
| #5470 | Add fallback check for when no contributions are highlighted in ArticleViewer. | |
| #5464 | Fixed Add-to-watchlist feature which fails for a large class. | |
| #5450 | Improve pagination controls on Articles tab. | |
| #5448 | Fixed Add Week button logic to account for available space on the timeline. | |
| #5421 | Add a button for instructors to add all students' talk pages to their watchlist. | |
| #5439 | Fixed error when editing cloned conditional questions after deletion of base question. | |
Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them.
I have worked on several projects, all of which are related to AI/ML during my final year of university. I'll List some of them below. Even though these two projects—one minor and the other major—are not related to web development, they have helped me immensely in building my problem-solving and logic skills.
- Self-Driving Car In Artificial Environment (Minor Project) : The purpose of this project was the development of a working model of a self-driving car in an artificial environment with obstacles ranging from different levels. The car would navigate using Artificial Intelligence and Deep Q-Learning, which is the result of combining Q- Learning with an Artificial Neural Network. The environment was built with the help of the Python Kivy library, containing the map, the car, and all the associated features. The AI was built based on Reinforcement Learning
- Part of Speech (POS) Tagger under ML for Creation of Nagamese Tagset and Tagged Corpus (Major Project) : The main purpose of this project was the creation of a Nagamese tagset and tagged corpus, as Nagamese is a language spoken in Nagaland, India. As I was pursuing my engineering studies at Nagaland University, located in Nagaland, India, this project aimed to develop a Part- of-Speech (POS) tagger for the Nagamese language using machine learning techniques. A POS tagger is a tool that automatically assigns grammatical categories (e.g., noun, verb, adjective) to words in a given text. The development of the POS tagger involved applying machine learning algorithms and training models on a labelled dataset, which is a common approach in such tasks. The outcome of this project was a tool that can accurately analyse and understand Nagamese text, which can have various practical applications such as language analysis, machine translation, and information retrieval in Nagamese. It can contribute to linguistic research and technological advancements by addressing the specific linguistic needs of an underrepresented language like Nagamese.