Profile Information
Name: Destiny Obamwonyi
Github: obamwonyi
Phabricator: destiny
Gerrit: obamwonyi
Location: Lagos, Nigeria
Time Zone: WAT(UTC+1)
Working hours: 4:00 AM to 10:00 AM and 4:00 PM to 10:00 PM
Synopsis
PageTriage, a MediaWiki extension tailored for English Wikipedia patrollers, streamlines the management of new pages. Equipped with a Vue. js-powered New Pages Feed, it facilitates targeted patrolling through filtering options. The community seeks to augment filter functionality and search capabilities to further optimize page management.
Possible Mentor(s)
@Soda , @TheresNoTime
Have you contacted your mentors already?
Yes.
Deliverables
Add ORES topic prediction to the NewPagesFeed (T218132)
ORES (Objective Revision Evaluation Service) now supports topic prediction (articletopic) for articles. This feature predicts the topic or subject area of an article, such as chemistry, politics, sports, or geography, which is different from class prediction and potential issue prediction.
New page patrollers would find this useful if they want to filter the feed by one or two topics they are interested in or have specialized knowledge in. Currently, other tools like SDZeroBot's NPP_sorting are used for this purpose, but they are not integrated into PageTriage.
Acceptance Criteria:
- Integrate the ORES API to fetch topic predictions for new pages in the Special:NewPagesFeed.
- Display the predicted topics in the Special:NewPagesFeed filters menu and the Page Curation Toolbar's "Page info" flyout.
- Implement filtering options in the Special:NewPagesFeed to allow users to filter articles based on one or more predicted topics.
Background:
The New Page Patrol (NPP) and Article Feedback Collaboration (AfC) processes involve reviewing and curating new pages on Wikipedia. With the growing number of new pages being created, patrollers often have to sift through a large volume of content, making it challenging to focus on specific topics or subject areas of interest.
Integrating the ORES articletopic model into PageTriage would allow patrollers to filter the Special:NewPagesFeed based on the predicted topics of new pages. This would enable them to prioritize and focus their efforts on articles within their areas of expertise or interest, potentially improving the efficiency and quality of the review process.
Implementation Plan:
- ORES API Integration:
- Study the ORES API documentation and obtain necessary authentication credentials.
- Implement API calls to fetch topic predictions for new pages by providing the necessary parameters to the base endpoint endpoints provided by ORES, as explained in the docs, potentially using a library like Axios for api calls.
- Handle API responses and process the predicted topic data.
- Topic Classification:
- Analyze the topic prediction model(articletopic) used by ORES and understand its output format.
- Develop logic to map the predicted topics to user-friendly labels or categories.
- User Interface Integration:
- Design UI components with Vue.js to display predicted topics in the Special:NewPagesFeed filters menu.
- Implement filtering options based on predicted topics, such as a multi-select dropdown or checkboxes.
- Incorporate the predicted topic information into the Page Curation Toolbar's "Page info" flyout.
- Documentation and Testing:
- Create comprehensive documentation for the implemented feature, including usage instructions and technical details.
- Develop test cases to ensure the reliability and accuracy of the topic prediction integration.
- Conduct thorough testing, including unit testing, integration testing, and user acceptance testing (UAT).
Special:NewPageFeed - add option to filter by pageviews (T207238)
As a New Page Patroller (NPP) or Article Feedback Collaboration (AfC) reviewer, I want to have the ability to filter the Special:NewPagesFeed by pageviews, so that I can prioritize reviewing high-impact articles.
Acceptance Criteria:
- Add functionality to sort or filter the NewPagesFeed by the number of pageviews each article has received.
- Implement an option to display the pageview count (e.g., average per day, median per day, total views in the last 30 days) for each article in the feed.
- Provide intuitive user interface controls for specifying pageview thresholds or ranges to filter the articles.
Background:
This feature was originally proposed in the "Page Curation/Suggested improvements" section on the English Wikipedia, with the idea of enabling reviewers to prioritize articles based on estimated public interest, which can be measured by the number of pageviews.
Currently, there is no option to sort or filter the Special:NewPagesFeed based on pageviews, which could be useful for identifying and reviewing articles that have garnered significant attention or interest from readers.
Implementation Plan:
- Pageviews Integration:
- Integrate functionality to fetch pageview data from the Wikipedia API using the pageviews endpoint for each article in the Special:NewPagesFeed.
- Implement options to display the pageview count in various formats (e.g., average per day, median per day, total views in the last 30 days).
- Optimize performance by caching pageview data and implementing efficient data retrieval mechanisms.
- Sorting and Filtering Options:
- Implement sorting options to display articles in the Special:NewPagesFeed based on their pageview count, in ascending or descending order.
- Introduce filtering options to display only articles with pageview counts within specified thresholds or ranges.
- User Interface Integration:
- Design intuitive user interface controls for specifying pageview thresholds or ranges, such as sliders, input fields, or predefined ranges.
- Integrate the sorting and filtering options seamlessly into the existing Special:NewPagesFeed user interface.
- Documentation and Testing:
- Create comprehensive documentation for the implemented feature, including usage instructions and technical details.
- Develop test cases to ensure the reliability and accuracy of the pageviews sorting and filtering functionality.
- Conduct thorough testing, including unit testing, integration testing, and user acceptance testing (UAT).
Keyword Search for New Pages Feed (T207761)
As a New Page Patroller (NPP) user, I want to have a keyword search functionality in the New Pages Feed, so that I can easily search for articles based on themes or content.
Acceptance Criteria:
- 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 the list).
- The text for the field 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 articles that have matching keywords in their text content.
Background:
The New Page Patrol Browser has a "keyword or username" search functionality that is very useful for patrollers who prefer to review certain kinds of articles. It has been suggested that the Article Feedback Collaboration (AfC) would also like to have this kind of functionality.
However, the New Pages Feed, where AfC reviewers currently sort through drafts, does not have a keyword search feature. The New Page Patrol (NPP) would also like to have a keyword search functionality. Username searching has also been requested in the past.
Implementation Plan:
- Search Field Integration:
- Create a new field labeled "Has the following keyword(s)" in the "That" section of the search filters for the New Pages Feed.
- Enable users to input keywords, either as a comma-separated list or individual keywords separated by spaces.
- Implement the functionality to apply the keyword filter and display relevant search results.
- Search Algorithm:
- Research and select suitable search algorithms for efficient keyword matching.
- Optimize the search algorithm for performance and scalability, considering factors such as indexing, caching, and handling large volumes of data.
- User Interface Integration:
- Integrate the search field within the "That" section of the search filters for easy access and visibility.
- Display search results in the New Pages Feed, highlighting or emphasizing the matching keywords within the article content.
- Documentation and Testing:
- Create comprehensive documentation for the implemented feature, including usage instructions and technical details.
- Develop test cases to ensure the reliability and accuracy of the keyword search functionality.
- Conduct thorough testing, including unit testing, integration testing, and user acceptance testing (UAT).
See percent similarity to top deleted revision (T327955)
The "Creation of a Substantive Article" (G4) criterion for speedy deletion requires that the new article be substantially different from previously deleted versions. However, patrollers who are not administrators cannot see deleted revisions.
PageTriage already detects if an article has been "previously deleted." This ticket aims to explore the idea of expanding this detection to include the following features:
- Detection of a previous Articles for Deletion (AfD) process by checking for the existence of an AfD page.
- If a previous AfD is detected, and the page has been deleted before, an API should be added to PageTriage to pull the top deleted revision and compare it to the current top revision, providing a percentage of wikicode match.
- This comparison should either be run with a button or run automatically.
- The option to make this a pagetriage_page_tag (article metadata) could be explored.
Implementation Plan:
- API Integration:
- Develop a dedicated API endpoint or extend the existing pagetriagelist API to facilitate the similarity comparison between new pages and deleted revisions.
- Implement logic to retrieve the top deleted revision for pages that have been previously deleted or gone through the AfD process.
- Calculate the percentage of wikicode match between the current top revision and the retrieved top deleted revision.
- Similarity Calculation:
- Research and select appropriate algorithms or techniques for calculating the similarity between two revisions' wikicode content.
- Implement preprocessing steps to handle wikicode formatting, templates, and other markup elements.
- Develop a scoring mechanism to quantify the similarity as a percentage or other meaningful metric.
- User Interface Integration:
- Design a user interface component or button to initiate the similarity comparison process on demand.
- Explore the option of automatically running the comparison when visiting an article or displaying the similarity score as an article metadata tag in the Special:NewPagesFeed.
- AfD Detection:
- Implement logic to detect if a page has undergone a previous AfD process by checking for the existence of an AfD page.
- Explore the possibility of adding support for tracking and displaying previous AfD information, as the current afd_status page tag only tracks current deletion tagging, and the recreated tag tracks all kinds of previous deletions, not just AfD.
- Documentation and Testing:
- Create comprehensive documentation for the implemented feature, including usage instructions and technical details.
- Develop test cases to ensure the reliability and accuracy of the similarity search functionality.
- Conduct thorough testing, including unit testing, integration testing, and user acceptance testing (UAT).
Additional filters and improvements
Implementation Plan:
- Community Feedback Integration:
- Gather feedback from the community on desired filters and enhancements.
- Prioritize implementation based on feasibility and impact.
- Iterative Development:
- Implement additional filters and improvements based on feedback.
Documentation and Testing
Implementation Plan:
- Documentation:
- Create comprehensive documentation for each implemented feature.
- Include usage instructions and technical details.
- Testing:
- Develop test cases covering various scenarios and edge cases.
- Conduct thorough testing to ensure reliability and accuracy.
Timeline
Community Period
| Period | Description |
|---|---|
| May 02, 2024 - May 27, 2024 | 1. Connect with mentors to gain insights into the community and familiarize myself with the codebase. |
| 2. Engage in discussions to brainstorm potential solutions and enhancements for the extension's issues. | |
| 3. Dive into understanding the architecture and pinpoint relevant sections of the codebase related to the identified issues. | |
Coding Period
| Period | Description |
|---|---|
| May 27, 2024 - June 03, 2024 | Familiarize myself with the existing codebase of the PageTriage extension. Review relevant documentation on VueJS and the ORES API. |
| June 03, 2024 - June 10, 2024 | Begin implementing the AI-based topic prediction feature using the ORES API. Start designing and implementing the keyword search functionality. |
| June 10, 2024 - June 17, 2024 | Continue working on refining the AI-based topic prediction feature. Enhance the keyword search functionality by integrating it with the existing filter options. |
| June 17, 2024 - June 24, 2024 | Implement the filter by pageviews feature, allowing users to filter articles based on their pageview count. Begin exploring methods to implement the similarity search for deleted pages. |
| June 24, 2024 - July 01, 2024 | Finalize the implementation of the filter by pageviews feature. Continue working on implementing the similarity search for deleted pages. |
| July 01, 2024 - July 08, 2024 | Complete the implementation of the similarity search for deleted pages. Conduct thorough testing and debugging of the added features. |
Mid-Evaluation
| Period | Description |
|---|---|
| July 08, 2024 - July 15, 2024 | Address any feedback received during the mid-evaluation. Begin documenting the newly added features and any necessary code optimizations. |
| July 15, 2024 - July 22, 2024 | Continue documenting the project progress and improvements made. Start preparing for the final evaluation by ensuring all project goals are met. |
| July 22, 2024 - July 29, 2024 | Conduct final testing and bug fixes to ensure the stability of the PageTriage extension. Prepare comprehensive documentation and user guides for the added features. |
| July 29, 2024 - August 05, 2024 | Review the project timeline and ensure all deliverables are completed. Finalize the project presentation and any necessary demos for the final evaluation. |
| August 05, 2024 - August 12, 2024 | Submit the final project report summarizing the work done, challenges faced, and lessons learned. Prepare for the final evaluation presentation, highlighting the project achievements. |
| August 12, 2024 - August 19, 2024 | Participate in the final evaluation and present the completed project to mentors and community members. Engage in discussions and gather feedback for future improvements. |
Participation
- Zulip: I am very familiar with Zulip and have already engaged in conversation with my possible mentors using this platform.
- Discord: There is also a discord for the PageTriage project where I can interact with my mentors.
- Phabricator: In terms of tasks I can view and manage tasks with Phabricator.
- Gerrit: Gerrit also provides a response functionality where I can be given feedback on whatever patch or commit I make.
About Me
Education
University: University Of Benin (UNIBEN)
Year of Study: 4th year (Currently in my Internship period so I am very free to work on tasks).
Field of Study: Computer Engineering.
Skills
- Frontend: HTML, CSS, Javascript, Vuejs, Codex, Bootstrap5.
- Backend: PHP, Python, Laravel, Django.
- Others: C/C++, SQL, and Docker.
How did you hear about this program?
YouTube: I heard about GSoC from YouTube about two years ago, and I have been very fond of it ever since.
Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the program?
Tuesdays: I am currently on internship (industrial training), I am only supposed to be present on Tuesdays other than that I don't have any other commitments.
What does making this project happen mean to you?
It means a lot to me, to be able to work on a large code base, for a popular organization like Media Wiki, alongside well-experienced software engineers like @Soda and @TheresNoTime, using my favorite tools like Javascript, PHP, and Vuejs, would be a dream come true, as I stand a chance to get the various benefit,
- More Industry experience
- Networking with more experienced software engineers/developers
- Making friends
- Lastly, the stipend, would help in starting a life on my own when I graduate.
Past Experience
Contributions to Wikimedia
PageTriage Extension
| Title | Link | Status |
| Styling of AFC date picker and NPP date picker has diverged | T355094 | Under Review |
Cargo Extension
| Title | Link | Status |
| Cargo adds unnecessary JS config vars to all pages | T353094 | Reviewed(not merged) |
Pre-Application Requirement
- Built a Vuejs frontend project using Wikimedia Codex UI library and Wikimedia API, code available on github/obamwonyi/media_wiki_T357337
Working Experience
LucrativeTech/Luta, Nigeria (Remote) — Full Stack Developer, NOVEMBER 2022 - MAY 2023
- Spearheaded the development of a robust API powering a dynamic mobile trading application, leveraging the prowess of PHP, Laravel, and MySQL for seamless user experiences.
- Orchestrated the creation of a cutting-edge Full Stack web application, employing Vue.js, Laravel, and Mysql, demonstrating exceptional proficiency and collaborative prowess alongside a Senior Developer.
- Pioneered the construction of a vital API for a mobile application, streamlining the management of associations with precision and ingenuity.
Other Open source I have contributed to
- Djoser: I contributed to the Djoser documentation, it was using the old method (url()) for declaring url for Django views so I updated the documentation to use the path() function which is the recent and more common one. contribution