Page MenuHomePhabricator

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

Description

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

Arcstur
Ederporto


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.

Event Timeline

Six-shot54 updated the task description. (Show Details)
Six-shot54 updated Other Assignee, added: Ederporto.
Six-shot54 removed subscribers: Aklapper, Six-shot54.
Aklapper updated Other Assignee, removed: Ederporto.
Aklapper removed a project: Developer-Outreach.
Aklapper added subscribers: Aklapper, Arcstur.
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.