Page MenuHomePhabricator

GSoC 2026: Programs & Events Dashboard system-wide metrics and data downloads
Open, Needs TriagePublic

Description

Project title: Programs & Events Dashboard system-wide metrics and data downloads
Brief summary: Develop efficient system-wide metrics and key data download options for Programs & Events Dashboard
Expected outcomes: Create an endpoint for Wikimedia Foundation staff to download data about all editing projects, and overhaul the set of available system-wide metrics
Skills required/preferred: Ruby (required), JavaScript (helpful)
Possible mentors: @Ragesoss, @Abishekdascs
Expected size of the project: 350 hours
Rating: medium
Microtasks: https://github.com/WikiEducationFoundation/WikiEduDashboard/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22newcomer%20friendly%22
Any other additional information for contributors: https://github.com/WikiEducationFoundation/WikiEduDashboard/blob/master/CONTRIBUTING.md
Why are you proposing this project? Wikimedia Foundation staff (point person: @FRomeo_WMF) need regular access to system-wide data about the programs, events and other organized editing activity tracked by Programs & Events Dashboard (https://outreachdashboard.wmflabs.org/). To date, this has been generated manually upon request, but we need a way to provide convenient access to the data on a regular basis. Related improvements for collecting and presenting data about the overall utilization of the Dashboard would make it easier to show off the impact that the Dashboard and its users are making across the Wikimedia ecosystem.
What is the expected impact? This will help WMF collect and analyze data about the many and varied programmatic editing projects that Wikimedians around the world are organizing.

If you're interested in this project, please start by reading the CONTRIBUTING doc and the related students and interns doc to learn about expectations for this codebase and how to get started.

IMPORTANT: Please do not submit micro task patches before March 16, 2026, at 11:30 PM UTC, when contributor proposals officially open. You may prepare and discuss ideas until then.

Event Timeline

Hi @Ragesoss thank you for the proposal. Please add a 2nd mentor as soon as possible. The deadline for submissions was yesterday but if you are able to add another mentor today (Jan 27), we can accept the proposal. Otherwise, we will have to decline. Thank you for understanding!

"Hi @Ragesoss and @Abishekdascs, I am Rohit Sood. I have officially submitted my final PDF proposal for the 'Programs & Events Dashboard: UI Metrics' project. I am excited to learn more about the stack and start contributing!" (pp. 1-2)

Hi @Ragesoss, @Abishekdascs, and @SharonKathambi! I have updated my final PDF proposal on the GSoC portal to include a technical implementation plan for the new subtask T421649. I've detailed my approach for the automated metrics aggregation and asynchronous data downloads. Excited to potentially work on this!"

Hello mentors (@Ragesoss, @Abishekdascs),I have officially submitted my final PDF proposal for the Programs & Events Dashboard: Efficient System-Wide Metrics & Enhanced Data Export project on the GSoC portal.

Building on my pre-application momentum where I delivered a 6-commit refactor (PR #6763), my proposal outlines a comprehensive roadmap for:

  • Asynchronous Data Exports: Migrating CSV/JSON logic to Sidekiq background jobs to eliminate 504 timeout errors .
  • Performance Hardening: Implementing a Redis-backed caching layer for sub-second page loads on global metrics .
  • Accessible UI: Developing a 'Live Impact' dashboard using React and the Wikimedia Codex Design System, following the ARIA/WCAG standards I established in my initial contributions .

Proposal Link: https://docs.google.com/document/d/1xD5k6z_nbuAvOUD_JuOhuitv8UqH8lvEBLM8063KDJE/edit?usp=sharing

Thank you for maintaining this platform and for your guidance during the contribution period. I look forward to your feedback!

Hello mentors (@Ragesoss, @Abishekdascs),

I have submitted my final proposal for the Programs & Events Dashboard: System-Wide Metrics & Data Downloads project on the GSoC portal.

In my proposal, I focused on solving the current manual data access problem where WMF staff depend on developers to generate reports. I designed a self-serve system that allows staff to directly access system-wide metrics and export program data.

It mainly includes:
• A secure /staff/export endpoint that generates CSV files asynchronously using Sidekiq and sends a download link via email
• A /staff/metrics endpoint to provide system-wide insights such as programs by type, wiki language, and editor activity trends
• A React-based /staff/dashboard with filters, live metrics, and export functionality
• Role-based access using wmf_staff to ensure only authorized users can access staff data

You can review my proposal here:
https://drive.google.com/file/d/1glU4fDPYeK-Jtbt_ryn7dHHe9xamfOcP/view?usp=drive_link

Thank you for your continuous efforts in maintaining this platform and for your valuable guidance during the contribution phase.If you have any feedback or suggestions, I would be happy to incorporate them.

Looking forward to your response

@SunkireddyBarath: Hi, https://www.mediawiki.org/wiki/Google_Summer_of_Code/Participants step 11 says "Submit your proposal as a task on Wikimedia Phabricator". I cannot find such a task though, and we are past the application deadline.

Sure @Aklapper I will be submitting there also as a task on wikimedia Phabricator.

Weekly Internship Report
Week 1: May 25 – May 31

Task Progress:

  • Reached out to WMF Team with schema proposal and questions about which metrics are most valuable for WMF reporting.
  • Studied the existing analytics infrastructure in the codebase, and studied how will each column will be computed.

Challenges:

  • The biggest challenge was figuring out how to compute retained editors at system scale because it requires external MediaWikiApi queries.

Learning:

  • Understood the trade-offs of external API dependencies: batching, rate limiting, and designing around data that doesn't live in your DB.

Plan for Week-2:

  • Finalize the system_stats migration based on input from WMF team and mentors.

Weekly Report
Week 3: (June 7 – June 13, 2026)

Task Progress:

  • Finalized database migrations and schema design for both system_stats and facilitator_stats tables.
  • Addressed initial design feedback from WMF team and mentors.
  • Created the Pull Request for the database schema changes and model validations.

Challenges:

  • Determining the exact indexing constraints required by InnoDB for foreign keys, specifically how MySQL automatically generates indexes if they aren't declared, leading to schema.rb drift.

Learnings:

  • Learned how MySQL InnoDB engines automatically generate required indexes on foreign keys to optimize joins and enforce referential integrity.

Weekly Report
Week 4: (June 14 – June 20, 2026)

Task Progress:

  • Addressed database schema review comments, refactored index declarations.
  • Implemented SystemStatUpdateWorker and FacilitatorStatUpdateWorker to calculate stats aggregates.
  • Integrated Sidekiq-cron jobs inside config/schedule.yml for automated daily and weekly tasks.

Learnings:

  • Deepened understanding of Sidekiq background workers, Sidekiq-cron scheduling, and query optimization techniques

Weekly Report
Week 5: (June 21 – June 27, 2026)

Task Progress:

  • Planned and designed the frontend component architecture and state schema for the System Stats Dashboard.
  • Defined the JSON API payload structure and data schemas for System Stats and Facilitator Stats aggregates.
  • Created layout mockups, defined table component boundaries, and outlined props/state requirements.

Challenges:

Designing a flexible data payload schema that supplies required analytics without overburdening the initial page load.

Learnings:

Gained experience in upfront UI component planning, API contract design, and modeling frontend state schemas.

Weekly Report
Week 6: (June 28 – July 4, 2026)
Task Progress:

  • Implemented the frontend React codebase (SystemStatsView, stats tables) based on the Week 5 planned schema.
  • Integrated react-paginate for client-side pagination, interactive column sorting, and custom Stylus layout styling.
  • Seeded test datasets in db/seeds.rb to validate UI performance under heavy data volume.
  • Addressed mentor feedback regarding component modularity and layout consistency.

Learnings:

Learned practical techniques for React UI table implementation, state management, and iterating on code structure based on mentor feedback.

Weekly Report
Week 7: (July 5 – July 11, 2026)

Task Progress:

  • Studied existing CSV export patterns and worker implementations across the codebase.
  • Planned the architecture and implementation strategy for the new CSV export feature (CampaignCsvBuilder and SystemCsvBuilder).

Challenges:

Formulating an asynchronous CSV export plan that prevents memory bottlenecks during large data queries while supporting custom date and domain filters.

Learnings:

Deepened understanding of existing application architecture, background job workflow design, and strategic feature planning.