As more and more of the .NET framework, runtime, etc. get put in the open on GitHub, the community has the opportunity to participate in the day-to-day evolution of core parts of our platform. However, given the large number of projects (which is great!) and the volume of interaction, it can be hard to keep up. This is especially true because of the all-or-nothing notification model in GitHub. If you watch a repository, you will get notified of every since action including comments, commits, etc. What I wanted was a way to get notified of new issues so that I could keep an eye on things and then elect to subscribe to additional notifications for just the ones that interested me.
To achieve this, I created a Twitter bot that scans core .NET respositories and tweets all new issues:
aspnet\Configuration#292 https://t.co/KfVNvpgrUr
Add `Exists` to IConfigurationSection
— DotNet Issues (@dotnetissues) September 21, 2015
It currently looks at the following repositores (let me know in the comments if I should add any additional ones):
- dotnet/roslyn
- dotnet/coreclr
- dotnet/corefx
- aspnet/dnx
- aspnet/Routing
- aspnet/Hosting
- aspnet/Identity
- aspnet/Razor
- aspnet/Security
- aspnet/Mvc
- aspnet/EntityFramework
- aspnet/DependencyInjection
- aspnet/Logging
- aspnet/Configuration
- aspnet/Announcements
- NuGet/Home
This lets you monitor issue creation in your Twitter timeline (which is great for me since I usually have it open during the day anyway). It also has the side benefit of making it easy to tweet about new issues by quoting from the bot.
To achieve an even greater level of automation, I currently have an IFTTT recipe configured that emails me whenever the bot tweets. This workflow is working great for me. I get email notifications for new issues, I can open them if they look interesting, and then subscribe if I want to keep up to date with them. This provides exactly the level of notification I was looking for.
Under the hood, the bot is running as an Azure WebJob via the Azure Scheduler service at 5 minute intervals. It uses LinqToTwitter for Twitter REST API access and Octokit for GitHub API access. Thanks also to this blog series on LinqToTwitter by Doug Vanderweide, it was very helpful in getting up and running with the Twitter API quickly.
Code for the bot is general, so you could use it to do something similar for any repository. IssueTweeter is hosted at GitHub (naturally). Just let me know if anyone is interested in using it for another bot, and I'd be happy to help set it up.