Page MenuHomePhabricator

Proposal: Addressing the lusophone technological wishlist proposals - Visual Editor / Wikidata
Closed, DeclinedPublic

Description

ItemDetails
ApplicantAnvitha PR
UsernameAnvitha098
GitHubanvithagowda098
LocationBengaluru, Karnataka, India
TimezoneUTC+5:30 (IST)
Working Hours2:00 PM – 10:00 PM IST (Flexible)

1. Abstract

This proposal makes Wish #8 the primary deliverable: a complete, independent, opt-in Wikidata scoring module for WikiScore. This includes a resilient API service layer, configurable Django models, data-driven weighted scoring, and production hardening.

As a secondary contribution, it delivers a functional MVP for Wish #3: a modular JavaScript normalization and duplicate detection layer for VisualEditor’s citation workflow. The wikidata_score.py prototype I built already solves the core technical challenges; the internship focuses on production integration and real-contest testing.

2. Technical Approach

2.1. Wish #8 – Wikidata Integration for WikiScore

A new wikiscore/wikidata/ package will be added, keeping the Wikipedia pipeline decoupled.

  • service.py: Implements fetch_edits() with a circuit-breaker logic (trips after 5 consecutive 5xx errors) to serve cached scores with a "Stale Data" banner.
  • models.py: Adds WikidataEdit, WikidataScore, and WikidataPointRule.
  • scoring.py: Data-driven engine using machine-readable summaries (e.g., wbcreateclaim).

Proposed Weight Distribution:

Action TypeWeight
wbcreateclaim4
wbsetreference3
wbsetqualifier2
wbsetlabel / wbsetdescription1
Reverted / Bot edits0

2.2. Wish #3 – Duplicate Reference Detection (Secondary MVP)

A modular JS module for VisualEditor using Citoid for cross-identifier matching.

  • Normalization: Handles URL parameter stripping, DOI standardizing, and ISBN-10 to ISBN-13 conversion.
  • Detection: Builds a one-time index of the internalList. When a new ref is added, it triggers a non-intrusive toast: *"This reference already exists as [ref 32]. Reuse it?"*

3. Project Timeline

Weeks 1–2: Onboarding & Architecture

  • Clone WikiScore, map extension points, and finalize normalization rules with mentors.
  • Deliverable: Architecture decision record & Blog Post 1.

Weeks 3–5: API Service & Models (Wish #8)

  • Port API handling, implement retry logic, and create Django migrations.
  • Deliverable: service.py merged and models persisting real edits.

Weeks 6–7: Scoring & Admin UI

  • Implement the scoring engine and add point-management to the Django admin.
  • Deliverable: End-to-end Wikidata scoring functional.

Weeks 8–11: Hardening & Wish #3 MVP

  • Stress-test Wish #8. Develop JS normalization functions and VisualEditor lookup table.
  • Deliverable: Hardened Wish #8 + Functional duplicate detection MVP.

Weeks 12–14: QA, Documentation & Handover

  • Final testing against real edit-a-thon data. Complete Portuguese (pt-BR) documentation.
  • Deliverable: All work complete and handed over.

4. Microtask Contributions

5. Why I Am a Good Fit

My microtasks directly mirror the project's needs. Task 1 prepped me for VisualEditor’s JS environment, while the prototype proved I can handle the Wikidata API’s complexities (pagination, bot filtering). I have prior experience with Django models, Javascript and APIs, and a strong commitment to supporting the Lusophone community via localized tools.

6. Post-Internship Plans

I plan to remain an active maintainer for both features, fixing bugs and adjusting scoring rules based on feedback from Wikimedia Brasil and other Lusophone user groups.

7. Closing Statement

This project moves the community away from manual spreadsheets and accidental reference duplication. With the core logic already developed in my prototype, I am ready to deliver a production-hardened solution for WikiScore.

Event Timeline

Anvitha098 updated the task description. (Show Details)
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.