Devember: RepoRoulette

My Devember project is called RepoRoulette, a game-show style webapp where meeting attendees might be selected at random to explain git commit they made to an audience of peers.

I’m attempting to build this in Python and Svelte since I’ve spent most of my career building with .NET/Java and Angular. The goal is to create a game which can be used to let developers present their work with peers, unprepared.

At any large software company, you’d have hundreds/thousands of git repositories in e.g. BitBucket/GitHub/Gitlab etc. Each repo will have many branches and commits - these represent the actual productive output of software developers. I want people to join a meeting with a decent chance that they will be selected at random to present one of their commits to a repo. What they explain is up to them, what does the change do, why was in necessary etc. Since it’s randomly selected, no one will be prepared - making it more fun. There will be a “spin the wheel” feel where a random developer (in the meeting) will get selected, along with a commit he/she made. Everyone will then see the diff of the commit they made.

Many of these commits will have fairly mundane changes, that’s the reality of being a developer sometimes. Others will be great conversation-starters around architectural patterns, performance optimization or even security risks. A good session will have a few of those and expose people to others’ way of thinking.

Primary Goals:

  1. Increases awareness of skills across teams, e.g. if I attended a session where Kyle had to explain some change he made to an Angular app, I know I can ask him about Angular when I have a problem.
  2. Improves team spirit, we always say don’t be touchy about your code - this will help us live it.
  3. Get junior developers comfortable with presenting their work to an audience of developers with various skillsets and experience levels.

Secondary Goals:

By pulling in all this commit data, I want to do some analytics on it to look at team health, e.g.

  1. Identify developers who might need a project change; they’ve only committed to a handful of repos for years.
  2. Identify developers who use to be very productive, and haven’t been contributing as much code. Did they transition to a new role, are they committing to client repositories or is there a problem to investigate?
  3. Identify siloed teams, people who have only collaborated with the same group of people for years.

Repo link:

4 Likes

I will totally use this at the devops standups for my team.

This is incredible!

2 Likes

This is absolutely horrifying. I love it lol :rofl:

I’d be super interested in seeing this one. I’ve always kinda wondered why there aren’t any more popular analytics tools for GitHub… there are all sorts of dashboards for project activity as a whole but I’ve never seen anything that gives useful reports on individuals for something like an enterprise team.

1 Like

Yes I’m testing the first rudimentary version with my team this week - I’ll try and take their feedback. The code is still icky POC code but it’s functional enough for some feedback.

1 Like

Agreed, we’ve got plenty of pilot programmes at our company for assessing team health through self-reporting but many people don’t use it, the people burning out often don’t bother with these because they’re just frantically trying to catch up and none of the tools I’ve seen seem geared towards developers specifically. If I can extract even one half-decent answer from the data I’d consider it a success - it’d be sick if someone with better data science skills than I can build on it and do more.

Initial progress update, tested it with one of my team members (blurred out details).

I’ve adapted the default page generated by SvelteKit and used winwheeljs for the spin-wheel component.

The idea so far is that you enter the email, and spin the repo wheel - then spin the commit wheel. It’s a bit clunky UX-wise, too many clicks but I can tell the story.

Unfortunately the BitBucket API doesn’t give you the git diff data itself, so I’m displaying the link instead. Maybe that’s fine as it doesn’t expose any code - you need to be logged into Bitbucket.

Want to focus on the analytics side a bit and then get back to improving the app itself

1 Like

This is a bit hard to showcase without an actual BitBucket account to point it at.

I’ve recorded a short demonstration but I’ve had to blur out a ton of the details since it contains details of private codebases: