Page MenuHomePhabricator

Proposal: Addressing the Lusophone Technological Wishlist Proposals Project
Closed, DeclinedPublic

Description

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.

Event Timeline

Gopavasanth subscribed.

Thank you for your proposal and the effort you put into it. This year we received over 20 strong applications, and after a highly competitive review, we were unfortunately unable to offer you a slot.

Please don't see this as a failure, many contributors who weren't selected for Outreachy have gone on to make meaningful, lasting impact in the Wikimedia community, and we genuinely hope you'll stay engaged. You're very welcome to continue contributing outside of Outreachy. Our mentors and org admins are happy to help you get started or keep going:

We hope to see you around in the community.