Profile Information
Name: Ajayi Okhuomon Rosemary
GitHub: https://github.com/six-shot
Location: Lagos, Nigeria
Timezone: UTC+1 (WAT)
I am a frontend-focused software engineer with over 3 years of experience building interactive web applications using JavaScript, React, and modern web technologies. My work focuses on creating responsive, user-friendly interfaces and integrating real-time data flows using APIs.
As part of this application, I completed both Outreachy microtasks (T418285 and T418286), focusing on writing clean, maintainable code and handling edge cases such as invalid inputs and inconsistent data formats.
Synopsis
The Lusophone Technological Wishlist is a community-driven initiative aimed at identifying and prioritizing improvements that enhance the experience of contributors across Wikimedia projects in Portuguese.
This project focuses on implementing one of these requests to reduce friction in the editing workflow and improve usability. For this internship, I propose to implement Wishlist #3: Automatic duplicate reference detection in the Visual Editor.
This feature directly addresses a common pain point in editing by helping users avoid redundant citations and maintain cleaner, more structured articles. It reduces friction in editing workflows and allows contributors to focus more on content creation rather than citation management.
Selected Wishlist
Wishlist #3: Automatic Duplicate Reference Detection in Visual Editor
When using the Visual Editor, contributors often add references without knowing whether the same source already exists in the article. This leads to:
- Duplicate citations
- Cluttered reference sections
- Reduced readability and maintainability
The goal of this feature is to detect duplicates in real time and guide users toward reusing existing references instead of creating new ones.
Mentors
Technical Approach
My approach focuses on building a lightweight, real-time duplicate detection system that integrates smoothly into the existing Visual Editor workflow without disrupting the user experience.
1. Identifier Extraction
- Capture reference input when a user adds a citation (URL, DOI, ISBN)
- Hook into the Visual Editor citation insertion flow
2. Normalization Layer
To ensure accurate matching across different formats:
- URLs: remove protocol (http/https), trailing slashes, and www
- DOIs: strip https://doi.org/ prefix and normalize casing
- ISBNs: remove hyphens and spaces
This ensures that different representations of the same reference are treated as identical.
3. Duplicate Detection
- Extract existing references from the current document
- Compare normalized identifiers against existing ones
- Use efficient matching to avoid performance issues in large articles
4. User Feedback (UX-Focused)
If a duplicate is detected:
- Display a clear but non-intrusive notification within the editor
- Show the existing reference to the user
- Provide an option to reuse it instead of creating a duplicate
Given my experience building interactive interfaces, I will focus on making this feedback feel intuitive and consistent with the Visual Editor experience.
5. Integration
- Implement using JavaScript within the Visual Editor architecture
- Leverage MediaWiki APIs where necessary
- Ensure compatibility with existing citation workflows (automatic, manual, reuse)
- Align implementation with existing Visual Editor modules and follow MediaWiki contribution practices for maintainability
Timeline
The Outreachy internship runs from May 18, 2026 to August 17, 2026 (13 weeks).
I will be working full-time (40 hours/week) and providing weekly progress updates.
This timeline is flexible and will be refined based on mentor feedback.
Week 1 (May 18 – May 24): Onboarding & Environment Setup
- Set up local MediaWiki + Visual Editor development environment
- Review documentation on citation handling and reference storage
- Identify integration points within Visual Editor
Week 2 (May 25 – May 31): Codebase Exploration
- Trace citation workflows (automatic, manual, reuse)
- Understand how references are stored and accessed
- Finalize implementation plan with mentors
Week 3 (June 1 – June 7): Normalization Utilities
- Implement normalization for URLs, DOIs, and ISBNs
- Write helper functions for consistent identifier comparison
- Begin unit testing
Week 4 (June 8 – June 14): Duplicate Detection Engine
- Extract existing references from document
- Implement matching logic
- Test with sample articles
Week 5 (June 15 – June 21): Integration with Editor Flow
- Hook detection into citation insertion workflow
- Ensure detection runs in real time without blocking UI
Week 6 (June 22 – June 28): User Feedback UI
- Implement notification system
- Provide reuse suggestion option
- Align UI with Visual Editor patterns
Week 7 (June 29 – July 5): UX Refinement
- Improve interaction flow
- Ensure feature is intuitive and non-intrusive
- Gather mentor feedback
Week 8 (July 6 – July 12): Edge Cases Handling
- Handle inconsistent identifiers
- Improve normalization accuracy
- Strengthen duplicate detection reliability
Week 9 (July 13 – July 19): Performance Optimization
- Test on large articles
- Optimize detection logic for speed
- Reduce unnecessary computations
Week 10 (July 20 – July 26): Testing & Bug Fixing
- Conduct thorough testing across scenarios
- Fix bugs and improve stability
Week 11 (July 27 – August 2): Documentation
- Write technical documentation
- Document design decisions and usage
Week 12 (August 3 – August 9): Final Improvements
- Incorporate mentor feedback
- Polish implementation
- Prepare for submission
Week 13 (August 10 – August 17): Final Submission & Handover
- Final code cleanup
- Submit patches
- Complete final report and documentation
Benefits to the Community
This feature directly improves the editing experience for Wikimedia contributors by:
- Reducing duplicate references, leading to cleaner and more maintainable articles
- Helping editors, especially new contributors, avoid common citation mistakes
- Improving workflow efficiency by encouraging reuse of existing references
- Enhancing article quality and consistency across Wikimedia projects
By integrating this functionality into the Visual Editor, the solution becomes accessible to a wide range of users without requiring additional tools or technical knowledge.
Why Me
My experience in frontend engineering and UI-focused development makes me well-suited for this project.
- I have built systems that provide real-time feedback to users
- I understand how to integrate new features into existing workflows without disrupting usability
- I am comfortable working with APIs and handling asynchronous data
I am particularly interested in improving contributor-facing tools, and this project aligns closely with my focus on building intuitive and impactful user experiences.
Post-Internship Contribution
I plan to continue contributing to the Wikimedia ecosystem beyond the internship by:
- Maintaining and improving the duplicate reference feature
- Supporting future contributors working on related tools
- Exploring additional improvements to the editor experience
Thank you for your consideration.