{"id":759,"date":"2020-10-29T15:28:40","date_gmt":"2020-10-29T22:28:40","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-sdk\/?p=759"},"modified":"2020-10-29T15:28:40","modified_gmt":"2020-10-29T22:28:40","slug":"github-issue-support-process","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-sdk\/github-issue-support-process\/","title":{"rendered":"Azure SDK GitHub Issue Support Process"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>In this blog post, you&#8217;ll see what process the Azure SDK team has implemented to ensure that your issue is reviewed promptly and by the right team. The hope is that by gaining some insight into this process, you&#8217;ll have a better experience interacting with us on GitHub and a smoother issue resolving process.<\/p>\n<p>The process as described here currently applies to the following repositories:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-net\">Azure\/azure-sdk-for-net<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-java\">Azure\/azure-sdk-for-java<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-python\">Azure\/azure-sdk-for-python<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-js\">Azure\/azure-sdk-for-js<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-ruby\">Azure\/azure-sdk-for-ruby<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-go\">Azure\/azure-sdk-for-go<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-powershell\">Azure\/azure-powershell<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-cli\">Azure\/azure-cli<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-cli-extensions\">Azure\/azure-cli-extensions<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-rest-api-specs\">Azure\/azure-rest-api-specs<\/a><\/li>\n<\/ul>\n<p>We also have plans to add the process to these repositories:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-c\">Azure\/azure-sdk-for-c<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-cpp\">Azure\/azure-sdk-for-cpp<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-android\">Azure\/azure-sdk-for-android<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-ios\">Azure\/azure-sdk-for-ios<\/a><\/li>\n<\/ul>\n<h2>A label driven process<\/h2>\n<h3>1&#46; Triage and routing<\/h3>\n<p>New issues are automatically labeled with the following:<\/p>\n<table>\n<thead>\n<tr>\n<th>Tag<\/th>\n<th>Purpose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>needs-triage<\/code><\/td>\n<td>To indicate that the issue needs to be reviewed by triage team<\/td>\n<\/tr>\n<tr>\n<td><code>customer-reported<\/code><\/td>\n<td>To distinguish community created issues from those created by the SDK team for development tracking purposes<\/td>\n<\/tr>\n<tr>\n<td><code>question<\/code><\/td>\n<td>To indicate issue type. (The assumption is that the issue is a question.)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The triage team will go through the issues and assess who might be the best owner to assign to an issue and whether an issue needs to be routed to another team to be resolved. More labels will be added as necessary or removed if the issue turns out to be about a bug (for example) rather than a question:<\/p>\n<table>\n<thead>\n<tr>\n<th>Tag<\/th>\n<th>Purpose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>&lt;Service Name&gt;<\/code><\/td>\n<td>To indicate what service the issue is referring to<\/td>\n<\/tr>\n<tr>\n<td><code>Service Attention<\/code><\/td>\n<td>Added if the issue needs to be routed to another team<\/td>\n<\/tr>\n<tr>\n<td><code>bug<\/code>, <code>feature-request<\/code><\/td>\n<td>These are the other issue types<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For issues that need to be routed to teams best able to assist, i.e. those tagged <code>Service Attention<\/code>, there will be a comment that says the following:<\/p>\n<pre><code>Thanks for the feedback! We are routing this to the appropriate team for follow-up. cc @GitHubHandle\n<\/code><\/pre>\n<p>This will bring attention to the mentioned GitHub handle(s) that they need to help resolve the issue. As the engineers gain more insight into the issue during their investigations, they&#8217;ll also adjust the labels accordingly.<\/p>\n<p>Note that for issues that need routing, sometimes it may take a while to find the right contacts, and so response will be slower than usual. When this happens, we encourage you to leave us a comment.<\/p>\n<h3>2&#46; Response and follow ups<\/h3>\n<p>Depending on the nature of the issue, several rounds of back-and-forth may be needed to resolve the problem after the initial response, which we do our best to provide <em>within 3 business days<\/em> of issue creation. You may also be asked for more information \u2014 for instance error logs or code to replicate the problem \u2014 to help with the investigation. To facilitate this back-and-forth process, we use two labels, <code>needs-author-feedback<\/code> and <code>needs-team-attention<\/code>.<\/p>\n<p>When asking you for more input, we also add the <code>needs-author-feedback<\/code> label to the issue. When tagged as such, our bot will remind either you or us to look at the issue depending on which side has responded: &#8211; when you respond, it adds <code>needs-team-attention<\/code> to get our attention (and removes <code>needs-author-feedback<\/code>) &#8211; when you don\u2019t respond <em>7 days after<\/em> <code>needs-author-feedback<\/code> is added, it&#8217;ll add <code>no-recent-activity<\/code> and send you a friendly reminder &#8211; if there\u2019s no response from you after <em>another 14 days<\/em> (so total 21 days), it&#8217;ll close the issue &#8211; if you respond <em>within 7 days<\/em> of issue closure, it&#8217;ll reopen the issue<\/p>\n<h2>Issue types and when they&#8217;re resolved<\/h2>\n<p>Most of the issues in the repositories are questions. Questions can be addressed without a change in the product; they also include suggestions. As such, questions can be expected to be resolved faster than bugs and feature requests.<\/p>\n<p>Bugs and feature requests are issues that require a change to an existing behavior or an addition of a new behavior in the product (documentation, code, samples, etc.) to be resolved. We may or not have estimates of when these issues will be resolved. When we do, we add milestones to them. When we don&#8217;t, we follow up as often as possible to provide updates.<\/p>\n<h2>Issues not under consideration<\/h2>\n<p>Sometimes there are requests or suggestions that we don&#8217;t feel align with the direction of the product or would positively impact the majority of customers. When that is the case, we close the issue with an explanation.<\/p>\n<p>There are also cases where an issue is about something that we will not and\/or cannot fix \u2014 for example, libraries that have been deprecated or endpoints that have been removed. This is especially true for older issues; we&#8217;ve seen 2+ year-old issues about older versions of a product that we no longer have sufficient knowledge on. When that is the case, we close the issue with a brief explanation.<\/p>\n<p>Finally, it&#8217;s also possible that the problem brought up in an issue is not considered in the short term. In this case, the issue is put in the backlog. This means other work items are prioritized first, and we&#8217;re uncertain about when the issue will be resolved.<\/p>\n<h2>Reopening issues<\/h2>\n<p>Our current support process has room for improvement. Sometimes we or the bot might make the wrong judgment and close an issue prematurely. If that&#8217;s the case, you&#8217;re welcome to reopen the issue and ping us to help by leaving a comment.<\/p>\n<h2>Feedback<\/h2>\n<p>We&#8217;re always looking for ways to improve this process, so please feel free to leave us any feedback and\/or suggestion here or in any of the repositories above!<\/p>\n<p><!-- FOOTER: DO NOT EDIT OR REMOVE --><\/p>\n<h2>Azure SDK Blog Contributions<\/h2>\n<p>Thank you for reading this Azure SDK blog post! We hope that you learned something new and welcome you to share this post. We are open to Azure SDK blog contributions. Please contact us at <a href=\"&#109;&#x61;&#105;&#x6c;&#116;&#x6f;&#58;&#x61;z&#115;&#x64;&#107;&#x62;&#108;&#x6f;&#103;&#x40;&#109;&#105;&#x63;&#114;&#x6f;&#115;&#x6f;&#102;&#x74;&#46;&#x63;o&#109;\">&#x61;z&#115;&#x64;&#107;&#x62;&#108;&#x6f;&#103;&#x40;&#109;&#105;&#x63;&#114;&#x6f;&#115;&#x6f;&#102;&#x74;&#46;&#x63;o&#109;<\/a> with your topic and we&#8217;ll get you setup as a guest blogger.<\/p>\n<h2>Azure SDK Links<\/h2>\n<ul>\n<li>Azure SDK Website: <a href=\"https:\/\/aka.ms\/azsdk\">aka.ms\/azsdk<\/a><\/li>\n<li>Azure SDK Intro (3 minute video): <a href=\"https:\/\/aka.ms\/azsdk\/intro\">aka.ms\/azsdk\/intro<\/a><\/li>\n<li>Azure SDK Intro Deck (PowerPoint deck): <a href=\"https:\/\/aka.ms\/azsdk\/intro\/deck\">aka.ms\/azsdk\/intro\/deck<\/a><\/li>\n<li>Azure SDK Releases: <a href=\"https:\/\/aka.ms\/azsdk\/releases\">aka.ms\/azsdk\/releases<\/a><\/li>\n<li>Azure SDK Blog: <a href=\"https:\/\/aka.ms\/azsdk\/blog\">aka.ms\/azsdk\/blog<\/a><\/li>\n<li>Azure SDK Twitter: <a href=\"https:\/\/twitter.com\/AzureSDK\">twitter.com\/AzureSDK<\/a><\/li>\n<li>Azure SDK Design Guidelines: <a href=\"https:\/\/aka.ms\/azsdk\/guide\">aka.ms\/azsdk\/guide<\/a><\/li>\n<li>Azure SDKs &amp; Tools: <a href=\"https:\/\/azure.microsoft.com\/downloads\">azure.microsoft.com\/downloads<\/a><\/li>\n<li>Azure SDK Central Repository: <a href=\"https:\/\/github.com\/azure\/azure-sdk#azure-sdk\">github.com\/azure\/azure-sdk<\/a><\/li>\n<li>Azure SDK for .NET: <a href=\"https:\/\/github.com\/azure\/azure-sdk-for-net\">github.com\/azure\/azure-sdk-for-net<\/a><\/li>\n<li>Azure SDK for Java: <a href=\"https:\/\/github.com\/azure\/azure-sdk-for-java\">github.com\/azure\/azure-sdk-for-java<\/a><\/li>\n<li>Azure SDK for Python: <a href=\"https:\/\/github.com\/azure\/azure-sdk-for-python\">github.com\/azure\/azure-sdk-for-python<\/a><\/li>\n<li>Azure SDK for JavaScript\/TypeScript: <a href=\"https:\/\/github.com\/azure\/azure-sdk-for-js\">github.com\/azure\/azure-sdk-for-js<\/a><\/li>\n<li>Azure SDK for Android: <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-android\">github.com\/Azure\/azure-sdk-for-android<\/a><\/li>\n<li>Azure SDK for iOS: <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-ios\">github.com\/Azure\/azure-sdk-for-ios<\/a><\/li>\n<li>Azure SDK for Go: <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-go\">github.com\/Azure\/azure-sdk-for-go<\/a><\/li>\n<li>Azure SDK for C: <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-c\">github.com\/Azure\/azure-sdk-for-c<\/a><\/li>\n<li>Azure SDK for C++: <a href=\"https:\/\/github.com\/Azure\/azure-sdk-for-cpp\">github.com\/Azure\/azure-sdk-for-cpp<\/a><\/li>\n<\/ul>\n<p><!-- FOOTER: DO NOT EDIT OR REMOVE --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>See how the Azure SDK team&#8217;s issue support process works and how you can help us help you resolve your issue faster.<\/p>\n","protected":false},"author":42940,"featured_media":756,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[750,774],"class_list":["post-759","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-sdk","tag-azure-sdk","tag-github"],"acf":[],"blog_post_summary":"<p>See how the Azure SDK team&#8217;s issue support process works and how you can help us help you resolve your issue faster.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/users\/42940"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/comments?post=759"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/posts\/759\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media\/756"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/media?parent=759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/categories?post=759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sdk\/wp-json\/wp\/v2\/tags?post=759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}