**Profile Information**
Name: Angel Sharma
Github: [[https://github.com/fillingtothemomo}| fillingtothemomo]]
Gmail: rockingpenny4@gmail.com
Phabricator: [[https://phabricator.wikimedia.org/p/Rockingpenny4| Rockingpenny4]]
Gerrit: rockingpenny4
Location: Mathura, India
Time Zone: IST(UTC+5.30)
Working hours: 3:00 PM to 3:00 AM (IST)
**Synopsis**
PageTriage is an MediaWiki extension that allows patrollers on the English Wikipedia to track, categorize and deal with problematic new pages. One of it's features is the VueJS based New pages feed which allows patrollers to filter specific interesting pages they might want to patrol based on certain criteria. However, these filters are often limited and there has been some interest amongst the community to introduce newer filters and in general improve the ability to search for specific content on the New pages feed.
As part of this project, the filtering and searching capabilities of the New pages feed should be enhanced. Particularly, to add AI based topic prediction (leveraging the ORES API), the ability to search for a specific keyword in a article, filter by how many pageviews a article gets and be able to search by how similar a particular page is to other deleted pages.
**Possible Mentor(s)**
Soham Datta and Sammy
**Have you contacted your mentors already?**
Yes
**Deliverables**
T218132 Add ORES topic prediction to the NewPagesFeed and allow filtering by the same:
ORES now supports topic prediction (articletopic). Topic prediction is different than class prediction and potential issue prediction. Topic prediction means predicting if an article is about chemistry, politics and government, sports, Central Asia, etc.
New page patrollers would find this useful if they want to filter the feed by one or two topics that they are interested in or have specialized knowledge in. Currently other tools are used to do this, such as
https://en.wikipedia.org/wiki/User:SDZeroBot/NPP_sorting, but is not integrated into PageTriage.
Integrate articletopic into PageTriage, in both the Special:NewPagesFeed filters menu, and the Page Curation toolbar "Page info" flyout using PHP.
Article topic: (some illustrations)
{F43168031}
Links I referred to:
https://phabricator.wikimedia.org/T245906,https://www.mediawiki.org/wiki/ORES#Topic_routing
,https://www.mediawiki.org/wiki/ORES/Articletopic,https://phabricator.wikimedia.org/T240517
----
T207761 Keyword Search for New Pages Feed:
• Create a new field in the "That" section of the search filters for the New Pages Feed, which is the last option (i.e. bottom of list)
• The text should read "Has the following keyword(s)"
• If a user inputs one or multiple keywords into the field and clicks "Set Filter," the search results in the New Pages Feed should only display results that have matching keywords in the article text.
Implementing the feature like present here https://tools.wmflabs.org/nppbrowser/ .
Keyword search example:
{F43167731}
Mock UI
{F43167615}
Integrate into Search filters like :
{F43167664} in FilterRadios.vue
----
T207238 Special:NewPageFeed - add option to filter by pageviews:
Add functionality to sort the NewPageFeed by pageview count, so that Reviewers can prioritise high impact articles.
Links I used to get better overview: https://phabricator.wikimedia.org/T225169 , https://phabricator.wikimedia.org/T230567 .
A solution (as described in the T225169 investigation): We could display the number of pageviews in the article record, without allowing for sorting or filtering. We could display the number of page views (e.g. average per day, median per day, total views in the last 30 days, etc). Note that the results displayed will be from 24 hours earlier than the display time, and we’ll want to query from a maximum of 30 days ago (for the sake of general efficiency and manageability of this feature). To get a general sense of popularity of each article we can do that by storing (ceil) log-base10 of the pageviews as a page_tag. That way there are a limited number of distinct values in the tag, and the reviewer has a general sense of the popularity of the article.
The exact approach can be discussed during the GSOC period and refined with the mentor’s reviews.
----
T327955 See and filter with percent similarity to top deleted revision:
CSD G4 requires that the new article be substantially similar to the old article. However patrollers that aren't admins cannot see deleted revisions.
PageTriage already detects if an article has been "previously deleted". Explore the idea of expanding this detection to include...
Detection of a previous AFD, by checking for the existence of an AFD page
If previous AFD detected, and the page has been deleted before, there should be an API added to PageTriage to pull the top deleted revision, and then compare it to the current top revision, and provide a % wikicode match.
This should either be run with a button, or run automatically.
May or may not want to make this a pagetriage_page_tag (article metadata).
Approach-
Create a dedicated API( would only calculate this when needed).
Add to front end - could add a button to calculate this, or could auto calculate it when visiting the article, or could auto calculate it for everything and add it as a red article tag in
Special:NewPagesFeed (pagetriage_page_tag / metadata are involved in the latter.
Add similar support for "previous AFD". there is an afd_status page tag, but it only tracks current deletion tagging. There is a recreated tag, but it tracks all kinds of previous deletion, not just AFD.
> **Timeline**
>
**Community Period**
| May 02, 2024 - May 27, 2024 | Get in touch with the mentors and familiarize myself with the community and codebase. I'll discuss potential ideas to solve the issues and improve the extension. Understand the architecture and identify relevant parts of the codebase for the issues.
**Coding Period**
| May 27, 2024 - June 03, 2024 | Look into the initial features to be implemented and start work on integrating ORES for searching article topics into the Page Triage filters. Go through the documentation and understanding its integration with PHP to Vue JS
| June 03, 2024 - June 10, 2024| Getting the frontend part done in both the Special:NewPagesFeed filters menu, and the Page Curation toolbar "Page info" flyout and integrate it with ORES service in the backend. Write bi-weekly report.
| June 10, 2024 - June 17, 2024| Resolve code reviews promptly and work on feedback received from mentors, finalise the feature with proper testing and documentation.
| June 17, 2024 - June 24, 2024| Start working on integrating keyword search like nppBrowser and going through documentation and regular check-ins with the mentors. Write bi-weekly report.
| June 24, 2024 - July 01, 2024| Implement the frontend and integrating the service , and doing code reviews on gerrit.
| July 01, 2024 - July 08, 2024| Finalise the above features with proper documentation and discuss with mentors for further changes , prepare for mid-evaluation, and receive feedback from the mentors. Write bi-weekly report.
**Mid-Evaluation**
| July 08, 2024 - July 15, 2024| Work on feedback received from the evaluation and research for approaches for implementing a page views count , finalise an approach with the help of mentors and work on it.
| July 15, 2024 - July 22, 2024| Research and implement the finalised approach and play around with optimizing the database queries for the revised edits. Write bi-weekly report.
| July 22, 2024 - July 29, 2024| Complete the feature with testing, documentation and good code quality.
| July 29, 2024 - August 05, 2024| Researching on recent AFD and pulling the top deleted revision and comparing it to the current top revision to provide a %wiki match . Write bi-weekly report.
| August 05, 2024 - August 12, 2024| Code the API and integrate it with the required frontend (button, automatic or tags with articles)
| August 12, 2024 - August 19, 2024| Finalise the feature along with proper testing and documentation. Write bi-weekly report.
| August 19, 2024 - August 29, 2024| *buffer time* -Work on pending or last-minute issues, fixing unforeseen bugs and finalise every feature , write the final report of project and seek feedback from mentors to prepare for final evaluation.
**Final- Evaluation**
**Post-GSOC**
I am learning a lot by contributing to Wikimedia. Even after the GSoC period ends, I plan on contributing to this organization by adding to my past projects and working on open issues because of the familiarity of the technical stack and the new challenges that I am continually offered in the process.
Also, I would like to complete the future goals mentioned in my proposal. Having picked up many development skills, my primary focus would be to help the project and the community grow. I would also be interested in helping other people in getting started with their open-source journey and guide them in this fun process.
**Participation**
I am active on Email, Zulip, and Slack. I will use Phabricator and Gerrit for issue discussions and code reviews. I plan on regularly meeting with my mentor to discuss my progress and get feedback on my work. I can dedicate 40+ hours a week as I have no other commitments.
> **About Me**
>
**Education**
College: Indian Institute of Technology(IIT), Roorkee
Year of Study: 2nd year
Field of Study: Mathematics and Computing(Bachelors of Science)
**Skills**
I am a member of IMG- [[https://iitr.ac.in/Campus%20Life/Student%20Groups/Information%20Management%20Group.html| Information and Management Group]] of my college and we are responsible for handling the entire college's data , the [[https://iitr.ac.in/| Institute official website]] and Channeli - a one stop application for student and faculty's entire information ranging from placement stats and noticeboard to lost and found and complaints and grievances ; and various other projects. Hence , I have a lot of experience working on production level apps used my thousands of people and working with an amazing and collaborative team that makes a huge impact.
- Javascript ,HTML,CSS, Tailwind : Used vanilla JS in making projects like comic-book displaying website and basic games like flappy bird and space invaders and CSS for styling.
- Django, PHP: Making backend for various applications
- React JS , Vue JS: Used for frontend development in full stack projects
- Flutter, Java : Used for app development in Android Studio
- Docker
**How did you hear about this program?**
After getting into college, I learned about Google Summer of Code from my seniors, and some of them were selected for it and after talking with them, I looked at the program with greater interest.
**Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the program?**
No, my current semester ends in April last week, and I will have holidays for 2.5 months where I can commit all my focus to this project, and I have no other 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 **100% loyal to Wikimedia Foundation** and only plan on applying to Google Summer of Code with the Wikimedia Foundation.
**What does making this project happen mean to you?**
I have always been excited by the prospect of converting ideas into products with real-world impact and that is exactly what the Wikimedia Foundation does, producing free and open-source applications that impart learning to millions of people over the globe.
I am highly interested in this project, and contributing to Wikimedia since December 2023 has been a really fantastic learning experience with assistance from all mentors; each PR teaches me something new, and each feedback and code review enhances my coding skills and understanding of the project. Getting to work on this project will teach me production-level code structures and massively impact my learning.
> **Past Experience**
>
Microtask- Create a small independent tool/web app that iteracts with any Wikimedia API and displays some information about a article. The tool must have a frontend built using VueJS and the Wikimedia Codex UI library. Include a link to the source code in your proposal
This [[ https://github.com/fillingtothemomo/Wiki_Project | Wiki_Project ]] leverages mediawiki's opensearch API and Codex UI library for user to search a specific word in an article of language of their choice with a cool dark mode.
**Contributions to Wikimedia**
| Title | Link| Status|
| Add timestamp display to comment replies| https://gerrit.wikimedia.org/r/c/mediawiki/extensions/InlineComments/+/1010852| Merged
| App timestamp display on comment creation| https://gerrit.wikimedia.org/r/c/mediawiki/extensions/InlineComments/+/1010349| Merged
| ALRow: Add row search class| https://gerrit.wikimedia.org/r/c/mediawiki/extensions/AdminLinks/+/1007973| Merged
| Fixes expand sections visibility on browser resize| https://gerrit.wikimedia.org/r/c/mediawiki/extensions/MobileFrontend/+/1011221|Merged
| Fixes DateControlSection component cut-off| https://gerrit.wikimedia.org/r/c/mediawiki/extensions/PageTriage/+/1011034| Merged
| Fixes toolbar falling off screen on zooming| https://gerrit.wikimedia.org/r/c/mediawiki/extensions/PageTriage/+/1013680| Open
| Fixes inconsistent highlight issue in navbar| https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5661| Approved
|refactors milestones to functional component| https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5601| Open
| Fixes date a11y issues| https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5687| Open
| renders dates for milestones in home tab| https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5581| Open
**Past Projects**
-[[https://github.com/sdswoc/DirecM| DirecM]]
Worked on a project on app development using Flutter and Arduino using infrared sensors for a wayfinding app for blind and visually
impaired people under an event organized by a technical club of our college.
-[[ https://github.com/fillingtothemomo/Autumn_assignment| ProTrack ]]
My first major React project.Made a full stack application for managing personal groups and projects using React JS and Django backend with
MySQL and Tailwind CSS for styling.
-[[https://github.com/amogh-babu-k-a/DRDO-APP-DEVELOPMENT/tree/DRDO_version2| DRDO sensor Malware]]
Worked on developing malware apps for DRDO, India, in a research internship under Dr. Sateesh K. Peddoju
**Other open-source contributions**
-[[https://github.com/IMGIITRoorkee/omniport-docker| Omniport-Docker]]
Official docker distribution of Omniport - one true portal for every educational institute.
-[[https://github.com/CircuitVerse/CircuitVerse/pulls/fillingtothemomo| Circuitverse]]
CircuitVerse is a free, open-source platform that allows users to construct digital logic circuits online.