>===Profile Information
Name: Destiny Obamwonyi
Github: [obamwonyi](https://github.com/obamwonyi)
Phabricator: [destiny](https://phabricator.wikimedia.org/p/Destiny/)
Gerrit: [obamwonyi](https://gerrit.wikimedia.org/r/q/owner:developer.oduwa%2540gmail.com)
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](https://www.mediawiki.org/wiki/Extension: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
### 1. Implement AI-based topic prediction using the ORES API:
>==== Implementation Plan:
- **Integration with ORES API:**
- Research ORES API documentation and obtain necessary authentication.
- Integrate the ORES API to provide topic predictions for new pages in the PageTriage feed - Implement API calls, using the javascript library [Axios](https://axios-http.com/docs/intro) to fetch predictions for new pages.
- Ensure accurate c- **Topic Classification of topics based on content analysis.tion:**
- Allow users to filter - Extract features from new pages based on predicted topics content for classification.
2. Enhance keyword search functionality: - Train or utilize pre-trained classifier models to predict topics.
- Develop a search feature allowing users to search for specific keywords within articles in the New pages feed.- **User Interface Integration:**
- Implement efficient search algorithm - Design UI components with Vuejs to handle large volumes of page datadisplay predicted topics.
3. Introduce - Implement filtering by pageviews:options based on predicted topics.
//The above will be done, keeping in mind that [ORES](https://ores.wikimedia.org/docs) is being decommissioned, so implementation of [LiftWing](https://wikitech.wikimedia.org/wiki/Machine_Learning/LiftWing) would be added as an option, this would be done in a fashion where users can select which API to use for fetching predictions, with ORES pre-selected as default.//
### 2. - Enable filtering options to sort pages based on the number of pageviews they receive.Enhance keyword search functionality
>==== Implementation Plan:
- Implement intuitive UI controls for users to specify pageview thresholds.- **Search Feature Development:**
4. - Design a search feature allowing users to input keywords, Implement similarity search for deleted pages:that would be modeled(v-model) with the API search
- Develop a feature to compare new pages with deleted pages to identify similarities. - Implement frontend components to display search results.
- **Efficient Search Algorithms:**
- Research and select suitable search algorithms.
- Optimize algorithms for performance and scalability. this can be implemented with caching and building the project as an [SPA](https://vuejs.org/guide/extras/ways-of-using-vue#single-page-application-spa), as well as making use of Vuejs store [Pinia](https://pinia.vuejs.org/) for persistent data storage across components. therefore reducing unnecessary server requests and reloading.
### 3. Introduce filtering by pageviews
>==== Implementation Plan:
- **PageViews Implementation:**
- Integrate functionality to fetch pageview data from WikipediaAPI with the pageviews [endpoint](https://wikimedia.org/api/rest_v1/#/Pageviews%20data).
- Implement filtering options based on pageview thresholds.
- **UI Controls:**
- Design intuitive UI controls with Vuejs and Javascript for specifying pageview thresholds.
### 4. Implement a similarity search for deleted pages
>==== Implementation Plan:
- **Algorithm Selection:**
- Research and select algorithms for calculating similarity scores.
- **Integration with Existing Data:**
- Retrieve data on deleted pages, from Wikimedia API by accessing [Alldeletedrevisions](https://www.mediawiki.org/wiki/API:Alldeletedrevisions)
- Develop logic to compare new pages with deleted pages.
- **Prioritization of Matches:**
- Determine criteria for prioritizing relevant matches by discoursing with my Mentors.
- Implement sorting or filtering options for matches.
### 5. 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.
### 6. - Utilize appropriate algorithms to calculate similarity scores and prioritize relevant matches.Documentation and Testing
>==== Implementation Plan:
5. Additional filters and improvements:- **Documentation:**
- Consider community feedback and sugges - Create comprehensive documentations for additional filters and search enhancementseach implemented feature.
- Evaluate and implement feasible ideas to further improve the searchability - Include usage instructions and filtering options in the PageTriage feedtechnical details.
6. Documentation and - **Testing:**
- Document the implemented features, including usage instructions and technical details- Develop test cases covering various scenarios and edge cases.
- Conduct thorough testing to ensure the reliability and accuracy of the search and filtering functionalities.
> ===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](https://www.uniben.edu/) (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](https://gerrit.wikimedia.org/r/c/mediawiki/extensions/PageTriage/+/1012027)| Under Review |
**Cargo Extension**
| Title | Link | Status |
|Cargo adds unnecessary JS config vars to all pages| [T353094](https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Cargo/+/1009563)| Reviewed(not merged) |
**Pre-Application Requirement**
- Built a Vuejs frontend project using [Wikimedia Codex UI library](https://doc.wikimedia.org/codex/main/) and [Wikimedia API](https://www.mediawiki.org/wiki/API:Main_page), code available on [github/obamwonyi/media_wiki_T357337](https://github.com/obamwonyi/media_wiki_T357337)
>===Working Experience
**[LucrativeTech/Luta](https://lutahq.com/), 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](https://djoser.readthedocs.io/en/latest/getting_started.html): 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](https://github.com/sunscrapers/djoser/pull/793)
===Any Other Info