This is for analyzing the results of the experiment in exercism/discussions#123.
Implements #3445; see also the preliminary discussion there.
Goal: Measure review participation quantity and quantity (length) before, during, and after gamification is applied.
This branch contains DB migrations.
This replaces the /stats redirect to the first track. See exercism/discussions#123 Feature flag: participation_stats This introduces a new plotting library, Plotly.js. See discussion in #3445. The migration introduces postgres to the crc32 hashing function, so it can determine which users are in the experiment group and not. This branch will close #3445.
The new Track Stats header provides for a better empty state. We don't particularly want people to opt out of participation tracking. I intentionally leave unsaid that this is how you can see the statistics, so as not to reward curiosity during the experiment.
Performance tests complete. With 50k users and 1M comments, the statistics query for each experiment group (2) takes under 200ms. I chose not to make a few other optimizations that brought the query time down to 100ms, because the complexity of pre-calculated columns that would need to be updated using triggers isn't worth the performance gain. I may revisit these though for long-term stats. With sub-second request times and no obvious existing cache mechanism, I'm also not concerned with application-level caching for this low-traffic page.
This is ready to go! (release notes)