The Rust Project needs much better visibility into important metrics


#34

@dikaiosune

Some more ideas based on recent conversations.

What are the prospects for expanding our data collection to rust-lang projects beyond rust-lang/rust? We put comparatively little effort into these repositories, so making it easier to see what’s going on in them at a glance could help us identify projects that need attention.

As an example we might create a page that graphs the open PRs in each project. Other metrics that could be helpful are open issues, untriaged issues, issues/PRs that haven’t been updated since X days.

Another thing I’m interested in is who is working on what. We’ve always been terrible at tracking resource allocation (knowing what people are and should be working on). If we had the existing information displayed in a more useful way I think we could potentially be better at it:

Imagine a page that displays information about all issues (across the entire org) that have assignments. It shows a list of all users (and their avatars) that have assignments, and next to that shows the linked issue number and description. That’s the whole thing.

From there you could get a strong sense of what the project is working on. Of course to start it would not be great because our data isn’t good and we don’t use assignments effectively. But once we have the visualization to monitor we’ll have a lot more motivation to use issue assignments. Somebody (I volunteer) could go through periodically and just review that all the assignments are still fresh. For moco employees this would be yet another attempt to track what we are working on - just seeing that everybody has some assigned task is :cool:. cc @aturon.

Another idea. There are lots of ways to configure github to display useful aggregations of information, but they are pretty hard to discover and remember. It would be great to have these cryptic formulas in one place, and linking them from our metrics site seems like it.


#35

We should also think about integrating http://perf.rust-lang.org/index.html, if not importing the data and re-visualizing it, then at least linking to it.


#36

Just wanted to link to:

It’s a suggestion to use bitrust’s data to display information about how frequently breaking changes occur.

What are the prospects for expanding our data collection to rust-lang projects beyond rust-lang/rust?

It’d require some refactoring and a DB migration or two, but certainly not a big deal. Which repos would be good to track? What about nursery repos?

open issues, untriaged issues, issues/PRs that haven’t been updated since X days

Like a triage dashboard, not just a metric dashboard? I can see that being very useful.

Imagine a page that displays information about all issues (across the entire org) that have assignments. It shows a list of all users (and their avatars) that have assignments, and next to that shows the linked issue number and description.

Another idea. There are lots of ways to configure github to display useful aggregations of information, but they are pretty hard to discover and remember. It would be great to have these cryptic formulas in one place, and linking them from our metrics site seems like it.

The average issue/PR age number link to pages like this, sorted by age (maybe should change to last activity?). The issue label counts link to pages like this. What other types of searchs do you see being useful? I’ll try to include them wherever I see them as I’m adding things, but if there are specific ones it isn’t hard to throw them on there.

http://perf.rust-lang.org/index.html


So, at current count there are 30 issues open on the repo, which doesn’t include a few deployment things like HTTPS and maybe eventually a better backup plan than digital ocean’s weekly plan. @brson, any interest in helping me triage the priority a bit? It’s not that much stuff, but my time is unfortunately a bit constrained. So, it might be a few weeks before I get traction on more than a few of these suggestions, which are the highest priority to work on right now?


#37

Good idea.

All repos in rust-lang, rust-lang-nursery and rust-lang-deprecated.

Yes, though I see it as metrics about triage.

I was particularly thinking of aggregations of PRs and issues across all org projects. Open PRs especially.[quote=“dikaiosune, post:36, topic:3367”] @brson, any interest in helping me triage the priority a bit? It’s not that much stuff, but my time is unfortunately a bit constrained. So, it might be a few weeks before I get traction on more than a few of these suggestions, which are the highest priority to work on right now? [/quote]

I will put it on my triage schedule. After using rustc-perf this morning I think it probably doesn’t make sense to try to re-visualize it, and more to just fix the UI problems it has. Still I think it should be linked from here.

I’ve done some solicitation for more ideas and have a bunch more important stuff I’ll write up soon. So excited.

I think we’re going to need to make this site multiple pages, and try really hard to make the front page contain just a few really important visualizations.


#38

Here’s another one that would make a huge impact


#39

And another:


#40

Just deployed an updated version to http://rusty-dash.com/. Nothing too exciting here, paying down a little debt, converting the UI to tabs to make new additions cleaner, and merging a PR from @chriskrycho (yay!).

Now that the main front-end blocker to adding new metrics has cleared, I need to take care of a few things on the backend (multiple repo support is needed for many of the new ideas), and hopefully I’ll be back to pushing features later this week.


#41

Strong +1. I think there’s a ton of potential here, and organizing it in this way is going to be essential.


#42

Uploaded a mutli-view version last night. Deep links (like http://rusty-dash.com/issues) are broken because of the nginx config, but I’ll fix that this evening.


#43

Ahha, I missed that – looks awesome, well done!

Once we’ve gotten all the info on tabs that we want, then we can maybe work out what should go on the front page (as a kind of “overview”).


#44

Once we’ve gotten all the info on tabs that we want

That could be a little while :slight_smile: – I’ve got 37 issues open in the repo, and ~18 of them will require adding new data sources or analysis in addition to the presentation work. Several more will just need new views from existing data. An initial guess at what might be most useful for teams to have on the front page could be a very good way to help me prioritize which data sources & analyses to prioritize (hint hint).

EDIT: And thanks!


#45

I read through the issues and prioritized them per my own preferences.

These are high-priority and small:

  1. User-defined date range. Completing existing features.
  2. Link to day’s build failures. Ditto.
  3. Release cadence. Just an easy thing to do, and an easy way to answer a common question.

These are high priority and big:

  1. Assignees tab. Useful for project management and for users.
  2. Hot issues. Relatively easy to implement.
  3. Feature pipeline dashboard. This is probably what many of us want the most, but it’s quite involved.

#46

Hi ! Sorry for the drive-by comment, but I’m fascinated by all the things in the metrics world. Most of the stuff I’ve seen is based on some combination of Grafana+timeseries db (like InfluxDB). Do you think this combo might be useful here ? Either from just looking at how Grafana implemented things to actually using Grafana as a frontend and possibly joining forces with them on improving the graphing capabilities if needed ?

Grafana allows for the specified group of users to edit the dashboards, this might allow for the load on the changes to be spread a bit between people. Not sure if all the other requirements mentioned are met (e.g. histograms seem to be in the works still)

Hope this helps more than disrupts your flow.


#47

Sounds like a plan, and thanks for taking the time to go over the issues!

I’m getting some help from @chriskrycho on how to wire up the date pickers in Ember, should have that done soon. In the meantime:

  • Added a list to recent buildbot failures (scroll down, at the bottom of the Buildbots page). Definitely needs a nicer way to present it, but this is a start.
  • Fixed “deep” links in the nginx configuration
  • Deployed the “Triage” tab with the GitHub search links, will expand this with new metrics soon
  • Added benchmarks game link to useful links page.
  • Merged a PR from @chriskrycho to start the process of putting in the tests which I’ve very negligently not-built while putting this together.

#48

Grafana does look super slick! I will have to take a closer look, so thank you for sharing.

I see three main issues with adopting something like Grafana:

  1. Their SQL support doesn’t seem to be done yet (but I may be wrong here). Postgres performance, deployment, backup, etc. are just so stable, well understood, and supported on cloud platforms like AWS, and SQL is a second tongue for any data junkie. Having to move away from an RDBMS (basically Postgres) would be a very tough sell in my opinion, not just because of familiarity, but also because the data we’re collecting isn’t purely time series.
  2. It turns out that throwing some graphs up is the easy part of this project! I do think that having community-editable visualizations would be awesome (and I have an open pipe-dream issue to build something rudimentary along those lines). But, as you can see in this thread, the most dire needs are for visualizations/reports which combine time series data with non-time-series relational analysis (see @brson’s issue about a “hot” issues tab or a feature pipeline tracker). Which really makes the work here spill outside the traditional definition of “dashboard metrics.”
  3. Rust is really quite good at a lot of this work (a bit verbose for some, yes), and building something in Rust means that a) it can more easily get contributors from its own community, and b) we have yet another showcase of an area where Rust can excel. Both of which are great value-adds for a project like this on top of the useful information it can provide.

All that said, I’m not ideologically opposed to Grafana or any other off the shelf tool for that matter, I just haven’t seen one which meets all of the needs here.


#49

Indeed, the focus is on non-rdbms, timeseried databases.

Cool :)[quote=“dikaiosune, post:48, topic:3367”] Rust is really quite good at a lot of this work (a bit verbose for some, yes), and building something in Rust means that a) it can more easily get contributors from its own community, and b) we have yet another showcase of an area where Rust can excel. [/quote]

I wholeheartedly agree.

Thanks a lot !


#50

From IRC, regarding the build failure list:

“exception interrupted” is how buildbot stops everyone else when one fails, so they should never be listed


#51

Thanks for posting this here so I didn’t forget. Just deployed a new version which ignores failed builds with messages matching LIKE "%xception%nterrupted". The tweaked version is live (ping @brson).


#52

Links to build failures (for nightlies on that tab and for auto builders on the buildbots tab) are done, as is a simple release cadence tracker on the landing page. Fresh code deployed to http://rusty-dash.com. @chriskrycho has promised to help me grok Ember a bit better to properly implement user-defined date ranges.

The scraper will take some time to grab all the data from the nightly builders, so that tab should be accurate by the morning.


#53

Oh man I love seeing new progress on the dashboard.

The nightly failure links are perfect.

The failed build metrics on the buildbot page seem suspect. Only 4 in 24 hours? The graphs (particularly linux) look like there may be some gaps in the data.