##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 areasFirst, evaluate the test suite and its recent history of work include:continuous integration (CI) logs to identify:
* Analyzing Sentry data to identify bugs that generate significant noise,1. tests that fail intermittently
2. tests (or sets of tests, or aspects of test suite configuration) that contribute substantially to execution time
3. areas of the code with significant holes in test coverage
4. tests that are not easy to understand or should be refactored or rewritten
Then, choose the aspects most ripe for improvement, and fix them.
Some possible stretch goals:
1. a test suite that passes 20 consecutive runs on CI
2. 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 informationtest suite execution time under 20 minutes
3. 100% line coverage of Ruby code (current status: 11580 / 11679 LOC — 99.15% — covered)
4. 90% statement coverage of JavaScript / JSX code via browser tests (current status: 9600 / 13098 — 73.3% — covered)
## 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,Experience with automatic software testing in important. browsersThe intern will be expected to develop an understanding of the Dashboard's overall testing environment and strategy, and network trafficto make informed decisions about what aspects to improve.
* Familiarity with JavaScript and Ruby will be helpful for understanding and modifying Dashboard code, but no prior experience in these languages is necessaryExperience with Ruby and/or JavaScript are very helpful.
##Possible mentor(s):
* @Ragesoss
*
##Microtasks / Exploring the Project
See:
* https://github.com/WikiEducationFoundation/WikiEduDashboard/blob/master/CONTRIBUTING.md
* https://github.com/WikiEducationFoundation/WikiEduDashboard/blob/master/docs/students_and_interns.md