Summary
Wiki Education Dashboard is a Ruby on Rails application with a mixed React and server-rendered fronted. It provides tracking and statistics for hundreds of thousands of editors on Wikipedia and other Wikimedia wikis.
The Dashboard codebase is used in two independent production servers: outreachdashboard.wmflabs.org and dashboard.wikiedu.org. A wide variety of errors, delayed or incorrect updates, and unexpected behavior can happen on either of these servers — sometimes because of performance problems on those servers, sometimes because of problems with external services (such as Wikimedia APIs), and sometimes because of bugs. We use the Sentry service to collect error reports and other custom events, and we also have New Relic integration with the dashboard.wikiedu.org for performance monitoring. However, our Sentry dashboards do not reliably detect common service disruptions, and they are too noisy to easily surface new bugs and regressions.
This project will focusing on improving the observability of the Dashboard and making it easier for system adminstrators — and possibly end-users as well — to detect and understand problems with the system. It will involve a mix of exploring existing data and observability tools, analyzing and testing the behavior of particular areas of the Dashboard's Ruby and/or JavaScript code, and coding to fix bugs, modify event reporting and error handling and/or display system status to users.
Possible areas of work include:
- Analyzing Sentry data to identify bugs that generate significant noise, and fixing them
- Analyzing Sentry data to identify custom events and expected errors that should be handled differently on the Dashboard server
- Improving the Sentry configuration to detect import failure modes more easily
- Implementing new event detection so that common failure modes are reported to Sentry
- Analyzing New Relic or other performacne data to isolate the source if performance problems
- Building a user-facing UI to present system status and performance information
Skills
- Strong general programming skills and some familiarity with distributed systems will be very helpful for this project. An intern will be expected to explore and understand error reports and stack traces, and to develop an understanding of how those artifacts relate to the Dashboard codebase or other elements of the software environment — possibly including application and database servers, browsers, and network traffic.
- Familiarity with JavaScript and Ruby will be helpful for understanding and modifying Dashboard code, but no prior experience in these languages is necessary.
Possible mentor(s):
Microtasks / Exploring the Project
See: