logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

github-refuses-to-help-me-unsubscribe.md (11260B)


  1. ---
  2. title: GitHub refuses to help me unsubscribe from thousands of notifications
  3. date: 2021-03-09
  4. ---
  5. Well, here we are again, relying on the court of public opinion to fix a problem
  6. with some company's bad support. Today we look at GitHub.
  7. **tl;dr** I am subscribed to thousands of discussions on GitHub that I no
  8. longer participate in, and I receive several unwanted emails per week as a
  9. consequence. After two weeks of frustrating negotiation with support, GitHub
  10. ultimately suggests that I manually unsubscribe from each of 80+ pages of
  11. notifications, then tells me they forwarded a request to improve the interface to
  12. the product team, where it may or may not be addressed, and they will not be
  13. getting back to me regardless.
  14. *Disclaimer: I represent a company which competes with GitHub. However, I
  15. frequently contribute to hundreds of FOSS projects, many of which are hosted on
  16. GitHub, and as such I use GitHub in some respect almost every day.*
  17. I started the [sway](https://github.com/swaywm/sway) and
  18. [wlroots](https://github.com/swaywm/wlroots) projects back in 2015 and 2017
  19. respectively, and oversaw them as their maintainer/BDFL up until [October of
  20. last year][1], when I handed maintenance over to Simon Ser. Together these
  21. projects have almost 9,000 issues and pull requests on GitHub, and I'm
  22. subscribed to notifications for most of them.
  23. [1]: https://drewdevault.com/2020/10/23/Im-handing-wlroots-and-sway-to-Simon.html
  24. Since I handed over the reins and don't work directly with these projects
  25. anymore, I have no reason to receive these notifications. I "unwatched" the
  26. project, which stops automatically subscribing me to new threads unless I'm
  27. explicitly mentioned[^1], but it does not unsubscribe me from all of the threads
  28. I have participated in to date — i.e. most of them. I still receive
  29. several emails per week for these projects, none of which require my attention,
  30. and I reached out to GitHub support to find a way to address the problem.
  31. [^1]: Even if I don't work with the projects anymore, I would like to know if I'm explicitly mentioned in discussion, so I can clarify the intent behind a decision, how some code I wrote works, etc. This is why I don't want to use GitHub's "ignore" option outright.
  32. I opened a ticket with support, in the first contact of what would ultimately
  33. take 13 days. After the requisite complaint about not being able to reach
  34. support via email anymore, I explained:
  35. > I am subscribed to a lot of individual discussions that I have participated in
  36. > on the swaywm/sway and swaywm/wlroots issues. I have unsubscribed from the
  37. > repos as a whole, but I still want to be notified when I'm explicitly
  38. > mentioned in new discussions. However, I want to unsubscribe from all
  39. > discussions that I'm already subscribed to - to start with a clean slate, as
  40. > it were. There are thousands of issues so manually unsubscribing from each is
  41. > not practical. Can you help?
  42. GitHub agrees to forward my complaint about emailing support to the appropriate
  43. team and then gets to work:
  44. > You can unsubscribe using your inbox or on the subscriptions page:
  45. >
  46. > https://github.com/notifications/subscriptions
  47. >
  48. > On this page you can select all your current subscriptions and unsubscribe from being notified in one go. This means that you will only be notified when explicitly mentioned in issues, comments and PRs - unless you ignored the repository.
  49. >
  50. > By default, anytime you gain access to a new repository, you will automatically begin watching that repository. Anytime you join a new team, you will automatically be subscribed to updates and receive notifications when that team is @mentioned. If you don't want to automatically be subscribed, you can unselect the automatic watching options. You can disable the automatic watching feature here:
  51. >
  52. > https://github.com/settings/notifications
  53. >
  54. > You can also choose to ignore a repository. If you ignore a repository, you won't receive any notifications. We don't recommend ignoring repositories as you won't be notified if you're @mentioned.
  55. >
  56. > https://github.com/watching
  57. >
  58. > I hope this helps! Please feel free to reach out to me if you have further questions about this request.
  59. I will spare you from the full 27 message exchange that follows, and just give
  60. the highlights. The page they recommend has a bug which prevents me from
  61. selecting the repositories in question from their filter list. They explain how
  62. to use the UI, and I reiterate that the UI does not work as expected. Then they
  63. hit me with this:
  64. > I dug into the notification logs generated from swaywm/sway and swaywm/wlroots
  65. > and neither show any notification sent to your account, ddevault, within the
  66. > last 30 days. You are also not in any of the two repositories' watchlists.
  67. >
  68. > Can you check the X-GitHub-Recipient and X-GitHub-Recipient-Address headers of
  69. > one of those emails? This link explains how to find email headers if you're
  70. > not sure how:
  71. >
  72. > https://support.google.com/mail/answer/22454
  73. I share one such email, and they give this:
  74. > I took a look at the file and it appears these emails are being forwarded from a user $redacted[^2].
  75. >
  76. > X-GitHub-Sender: $redacted
  77. > X-GitHub-Recipient: ddevault
  78. >
  79. > You may have to reach out to the user to disable this forwarding rule. Let me know how you get along.
  80. [^2]: I have redacted the username that appeared here.
  81. ...what?
  82. > I don't understand. How is a user "forwarding" GitHub notifications to me?
  83. > What is their remedy? This came from smtp.github.com. What the heck are you
  84. > talking about?
  85. The support tech realizes the mistake and apologises, then asks me for more
  86. recent notifications. Given that I usually delete them right away, I have
  87. nothing to offer, so I re-explain the cause of the issue — these are
  88. discussions that I have previously participated in and was auto-subscribed to as
  89. such — instead. The second of several times that I will end up restating
  90. the same problem.
  91. The reply from GitHub on this is a short essay which first explains the solution
  92. I said upfront that I don't want (ignoring the whole repo), followed by four
  93. curl commands and links to API documentation which supposedly will help me write
  94. some kind of script myself to address the problem.
  95. ---
  96. This is a good time to share an example of how this typically goes when a user
  97. of my own company's services asks for help unsubscribing from things:
  98. > Subject: Can’t unsubscribe from srht-discuss
  99. >
  100. > I’ve tried the u. unsubscribe address but the system says I’m not
  101. > subscribed, though I am. 
  102. >
  103. > I can’t use the tilde address. HEY.com doesn’t support it. 
  104. >
  105. > Also, the web interface says I’m not subscribed. 
  106. >
  107. > I’m at a bit of a loss of what to do. 
  108. >
  109. > Could you unsubscribe me manually?
  110. ---
  111. > I've just removed your subscription. You can thank me by writing to
  112. > your mail provider to complain about their broken address parsing :)
  113. ---
  114. > Haha! I will do, Drew. Thank you.
  115. ---
  116. Back to GitHub. After expressing incredulity that they would expect me to write
  117. a custom script myself to deal with the problem of simply unsubscribing from
  118. unwanted emails, and being rewarded with a fifth suggested curl command, I
  119. begrudgingly start to go through the motions. And none of them work! The
  120. commands show that there are no subscriptions for these repositories. I tell
  121. them as much, and:
  122. > Hi Drew,
  123. >
  124. > > Both of these examples you gave me return no results, i.e. an empty JSON array.
  125. >
  126. > If you got no results, it would indicate that you are currently not subscribed
  127. > to any threads on the repositories, and therefore you will not receive any
  128. > notifications unless you comment on the thread or get an @mention.
  129. So, I'm a liar. I simply await the next unwanted email and bump the thread again
  130. a few days later.
  131. > I just received a notification for this repository. I was not mentioned.
  132. >
  133. > > If you got no results, it would indicate that you are currently not
  134. > > subscribed to any threads on the repositories, and therefore you will not
  135. > > receive any notifications unless you comment on the thread or get an @mention.
  136. >
  137. > There is now one result for the GraphQL query you suggested, and it is the
  138. > notification in question. If I'm not subscribed to anything, then why did I
  139. > receive another notification?
  140. GitHub unexplains how notifications work again, and suggests I unsubscribe from
  141. the specific discussion in question.
  142. > Yes, I understand. Please review my earlier communications in which I outlined
  143. > the issue and desired resolution in detail.
  144. After several more comments repeating much of the discussion we already had a
  145. few days prior (with the same support person — they signed all of their
  146. responses with the same name), they forward it to the engineering team and will
  147. get back to me, without "a specific ETA". Thankfully that just means "tomorrow",
  148. and with this, we arrive at the conclusion of our support exchange.
  149. > Thank you for your patience while the team looked into this.
  150. >
  151. > We've found that we do have a limitation on the /notifications/subscriptions
  152. > page which is why the subscriptions for the repositories in question weren't
  153. > showing up when filtered by the repository names. This is a something that we
  154. > will be adding to our backlog for a fix.
  155. >
  156. > In the meantime, the current workaround for you would be to use the links
  157. > below to list subscriptions for a specific repository and unsubscribe from
  158. > them. You can also substitute the repository_name with any other repository
  159. > you may want to unsubscribe from.
  160. >
  161. > [URLs removed]
  162. >
  163. > Please check and let me know if you get better results this time. If the situation is unchanged, please give us a shout and we'll continue looking into this.
  164. I check the URLs, and respond with the following:
  165. > I'm not going to unsubscribe from "1,000+" notifications, 25 at a time.
  166. >
  167. > ![](https://l.sr.ht/bQlK.png)
  168. GitHub clarifies that they do, in fact, expect me to manually unsubscribe from a
  169. minimum of 80 pages of subscriptions (likely much more: "1,000+" appears to be
  170. the max number this UI will display, and there are nearly 9,000 issues and PRs
  171. between these repos). I make a vague threat about invoking the CAN-SPAM act and
  172. they helpfully tell me that these are not considered commercial emails and the
  173. CAN-SPAM act does not apply. The support tech closes with this:
  174. > I understand how frustrating it can be to go through the list 25 at a time but
  175. > as I explained, this is a system limitation that only our Product team is
  176. > better suited to help you out. We have forwarded your ticket to the Product
  177. > team who reads and evaluates all feedback, however we cannot guarantee a
  178. > response to every submission.
  179. >
  180. > Please note that this means the Developer Support team will no longer be able
  181. > to see changes to the ticket, so if you have a follow up that requires further
  182. > support, please create a new ticket. Thank you again for your feedback!
  183. In closing, I wrote the following, then fired up my editor to write this blog
  184. post.
  185. > What's your work email address? I will set up a filter which forwards each
  186. > unwanted email to you. I will prepare a web page where you can unsubscribe to
  187. > them 25 issues at a time.
  188. 13 days and counting since I first reached out to support.