How to not get overwhelmed by github

Hey,

I find myself trapped in a loop - once I do not check out github for a single day, I get so many notification stacked up that I start coming back late for my reviews or other threads. I feel terrible not getting enough feedback and I do apologize all the time, but I think I have a problem.

What is not helping is that github puts the most recent discussion to the front by default, I am not sure if there is a setting I can permanently flip or something. So this makes some threads buried down on the bottom of the stack.

And I am not even mentioning my own PRs, some of them are lying there for years as I am not finding time to come back. That problem I identified some time ago and I started opening less of my own PRs and focusing more on finishing existing ones. But it is tough, if I see a small bug you can immediately fix I just go for it. But things can turn into bigger patches quite quickly.

I would like to hear feedback from others? How many repositories are you subscribed to? You can get the number from this page:

I do have 288, granted many of these are some of my dead projects where I do not get any notifications at all. It is hard to find now many active repositories I am subscribed too.

How do you handle the load?

Do you reserve a time in a day when you just do github reviews?

Do you put some hard limit on how many our own PRs you should open?

Or is this normal and my feel of guilt is not real? (Please confirm this :slight_smile: )

I don’t use github notifications, I use email notifications. That allows me to filter, delete, reorder based on my needs, get back to events when I have time. Since you asked, I’m “watching 250 repos”. I’d be happy to hear from others, who are more involved in PRs than I am these days.

Btw I also feel guilty when someone asks me to review and I reply I will once I have time. Sometimes it takes me weeks to get to it.

1 Like

I suffer from the same thing. That page tells me I’m watching 630 repos.

I’m not sure I handle it well. I mostly watch emails and delete irrelevant ones and treat it like a queue. I find that reading them in an email client works better than in the UI though I open relevant ones and comment.

This is why I’ve been hammering people to use a very descriptive message when opening a PR. If there is no interesting summary, I’m very likely to give it a low priority. It’s unlikely that I open a PR and then click through to the Redmine issue just to find out what it’s trying to solve. This is because I need to prioritize what I review; there’s just too much out there that requires my attention.

Not reserve, but it does eat a significant chunk of my time.

I should because I recognize what you describe. The problem that I do have is that I end up spending so much time on reviewing and helping others that I feel like I barely get any work done. To address that I’ve been making time to actually ignore all inputs (email, notifications, etc) and try to solve problems.

My last few Fridays have been used to dive into some bigger enhancements where I need to do some research into (technical) possibilities. For example, I’ve been working on the websockify process. While working on that, I ended up fixing 2 bugs (1 merged, other in review). I still need to finish the actual PR(s) to implement the RFC. I partly feel guilty that I haven’t finished it because I feel I’m very close and know exactly what needs to be done but I just don’t have the time.

Now for solutions. One of the things I had to teach myself was to let go of various areas. For example, I try to ignore UI/UX unless I’m specifically asked.

Another is that I’ve been working hard to get people to understand how to write better changes. As mentioned earlier, good descriptions help reviewers. Another is that I try to get people to understand concepts and trade offs as I view them. This doesn’t always mean that we agree, but it can make discussions quicker. I should note that this works a lot better for my direct team than for a random community member, but there’s also more to gain from people you work with all the time.

A good example of that was when I was on vacation for a week and saw someone wrote a PR review that picked up exactly the points I would have commented on. That means I can actually mentally let go because I’m not worried I have to clean up things afterwards.

I’m not sure it helps you, but the short summary:

  • Yes, I recognize your problems
  • IMHO, the best solution is reducing the amount of work needed
    • Work on better quality from contributors
    • More reviewers to share the burden
3 Likes

I don’t watch any repository, only PRs I’m mentioned on or assigned to. If I want to look at all open PRs I will go to that repo directly. For tracking my own, I use https://github.com/pulls and try to keep that list short as well.
Like @Marek_Hulan I also use email notifications to track and filter any discussions, if there is some action needed on my part I will either keep the mail as unread or open a tab with the PR so I will get to it soon. If I’m no longer relevant to a discussion on a certain PR I will unfollow it and trust other reviewers to take it to the finish line.
It’s not perfect and sometimes things do get missed, but I feel like the amount of mails I get is manageable for me.

3 Likes

That one is so important.

Looks like i’m only watching 80 repositories (surprisingly low…). I am trying to get the github notifications emptied in the morning, and yes it takes a significant amount of time. But my impression is that a quota on my own open PR is much more important, as rebasing them regularly (usually with conflicts) is taking progressively more time as the list grows. So I am trying to keep that list short, and if needed tell people I wouldn’t continue with a new one until the existing ones are resolved.

1 Like

I have 420 watched repositories. Here is my workflow.

I use email as my queue for processing through Github work primarily. I break down the repositories by contextual categories that help me cycle through them and prioritize. I do this through filters and labels in Gmail. I have the following:

  • Core
  • Ansible Modules
  • Infra
  • Installer
  • Katello
  • Mentions
  • Packaging
  • Plugins

I use Mentions to capture all instances of ‘@ehelms’ to single them out as specifically important. I view it as if someone felt the need to ping me directly I should address it quicker than I might others.

On any given day I will always attempt to clear through installer, infra, mentions and packaging multiple times throughout the day (~3-5). For other categories, I may do those once a day or every other day as they are often more informational than actionable. I do the following:

  1. Open email
    a) Decide if it is something I might need to review - open the PR in a new tab and delete the email
    b) If it is a merged PR notification, I acknowledge what got merged mentally and delete the email. Sometimes if this affects another PR, that is if the PR hat was merged was blocking another PR, I will go open that other PR in a tab and return to my email.
    c) If it’s a large comment, or large PR I may set the email to unread to return to it.
    d) If its a PR that others are reviewing and have it handled, nothing for me to add, I just delete the email.
  2. Repeat through all emails
  3. Go through all open tabs I have opened either reviewing or reading and then closing the tab

For each repository I try to ask myself should I be in Participating and @mention mode or All activity. I tend towards the latter for repositories I primarily help maintain and the latter for all others.

Side note, for Discourse I apply a similar workflow. To sum it up:

  • Break things down into smaller, contextual chunks that are easier and quicker to process
  • Process through a single list and build up a to-do list
  • Process through that to-do list
  • Move on to the next conceptual area
  • Focus on lists for my primary responsibilities and branch out as I have time

If you are wondering how I do it multiple times a day, I try to do it after submitting a PR or completing some other task. So that when something else has a logical end point, I swap over, process a list and then go tackle coding/meeting/etc. This works for me, as I do things in small chunks and it prevents things from growing to an overwhelming size – that’s what vacations are for.

5 Likes