Profile Information
Name: Kehinde Oluyole
GitHub: https://github.com/kenny-4111
Location: Lagos, Nigeria
Timezone: UTC+1 (WAT)
I’m a frontend-focused developer building web applications using JavaScript and React. Most of my work has been around building interactive interfaces, handling user input, and making sure the UI responds correctly to different data states.
As part of this application, I completed the Outreachy tasks involving JavaScript and Python (T418285 and T418286), focusing on writing clean code and handling real-world cases like invalid inputs and inconsistent data.
Synopsis
The Lusophone Technological Wishlist focuses on identifying improvements that make contributing to Wikimedia projects easier and more efficient.
For this project, I’m interested in working on Wishlist #3, which is about detecting duplicate references in the Visual Editor.
Selected Wishlist
Wishlist #3: Automatic Duplicate Reference Detection in the Visual Editor
When using the Visual Editor, contributors can add references without realizing the same source already exists in the article.
This can lead to:
- duplicate citations
- cluttered reference sections
- harder-to-maintain articles
The goal of this feature is to detect duplicates early and guide users toward reusing existing references instead of creating new ones.
Mentors
@Arcstur
@Ederporto
Technical Approach
My approach is to build a lightweight system that detects duplicate references in real time without interrupting the editing experience.
1. Identifier Extraction
Capture reference input when a user adds a citation (URL, DOI, ISBN)
2. Normalization
Normalize identifiers so different formats match correctly:
- URLs - remove protocol, trailing slash, and www
- DOIs - remove prefix and normalize casing
- ISBNs - remove spaces and hyphens
3. Duplicate Detection
- Extract existing references from the article
- Compare normalized identifiers
- Ensure the process is efficient even for large articles
4. User Feedback
If a duplicate is found:
- Show a simple, non-intrusive notification
- Display the existing reference
- Allow the user to reuse it
5. Integration
- Implement using JavaScript within the Visual Editor
- Work with WikiMedia APIs where needed
- Ensure it fits into the existing citation workflow
Prototype
To better understand the problem, I built a small prototype to explore how this could work from a user perspective:
https://github.com/kenny-4111/outreachy-wishlist3-prototype
In this prototype, I implemented:
- duplicate detection
- real-time suggestions while typing
- reuse vs add behavior
- basic validation (so random text isn’t treated as a reference)
This helped me think through how the feature should behave before integrating it into a larger system.
Timeline
The internship runs for 13 weeks. I’ll be working full-time and sharing updates regularly.
Week 1–2:
Set up development environment and explore Visual Editor codebase
Week 3–4:
Build normalization utilities and duplicate detection logic
Week 5–6:
Integrate detection into citation workflow
Week 7–8:
Implement user feedback and improve interaction
Week 9–10:
Handle edge cases and improve performance
Week 11–12:
Testing, bug fixing, and documentation
Week 13:
Final improvements and submission
This timeline is flexible and will be adjusted based on mentor feedback.
Benefits to the Community
This feature would:
- reduce duplicate references
- make articles cleaner and easier to maintain
- help new contributors avoid common mistakes
- improve the overall editing experience
Why Me
I’ve worked a lot on building interfaces that respond to user input in real time, which is directly related to this feature.
I also enjoy solving problems that improve how users interact with a system, and that’s what drew me to this project.
I’m comfortable asking questions, learning new systems, and improving based on feedback, and I’ll make sure to stay consistent with communication throughout the internship.
Post-Internship Contribution
I plan to continue contributing by:
- improving the feature further
- helping with related improvements in the editor
- supporting other contributors where possible
Thanks for your time, I appreciate the opportunity.