{"id":17763,"date":"2015-12-02T09:12:11","date_gmt":"2015-12-02T17:12:11","guid":{"rendered":"http:\/\/devblogs.microsoft.com\/powershell\/?p=17763"},"modified":"2019-06-05T09:15:08","modified_gmt":"2019-06-05T17:15:08","slug":"powershell-language-design-request-for-comments","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/powershell-language-design-request-for-comments\/","title":{"rendered":"PowerShell Language Design \u2013 Request for Comments"},"content":{"rendered":"<div class=\"OutlineElement Ltr SCX101480874\">\n<p class=\"Paragraph SCX101480874\"><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">For a while now, we&#8217;ve&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">been thinking about how to&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">better incorporate the&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">community in<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">to the&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Language-RFC\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">PowerShell language design&nbsp;<\/span><\/span><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">proces<\/span><\/span><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">s<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">.&nbsp;&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">We believe this would improve PowerShell by<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">:<\/span><span class=\"EOP SCX101480874\">&nbsp;<\/span><\/p>\n<ul>\n<li><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">Ensur<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">ing<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;we prioritize on language&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">features&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">that the community cares about.<\/span><\/li>\n<ul>\n<li><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">Helps us&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">understand where to focus&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">our&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">efforts on features most important to the community and&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">not spend&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">time&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">building language features that won&rsquo;t be used.<\/span><\/li>\n<\/ul>\n<li><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">Get<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">ting<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;diverse feedback&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">during design and not after&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">features have already been coded and released.<\/span><\/li>\n<ul>\n<li><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">Helps us to consider alternative design proposals and avoid making breaking changes due to late feedback&nbsp;<\/span><span class=\"EOP SCX101480874\">&nbsp;<\/span><\/li>\n<\/ul>\n<\/ul>\n<\/div>\n<div class=\"OutlineElement Ltr SCX101480874\">\n<p class=\"Paragraph SCX101480874\"><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">A Request for Comments (<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/en.wikipedia.org\/wiki\/Request_for_Comments\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">RFC<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">) is a&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">type of&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">document&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">used&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">broadly<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;in the industry, in various forms,<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;as a way to collect feedback from customers and partners<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">.&nbsp; We are adopting th<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">is<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;concept as a way to get feedback on language design documents.<\/span><span class=\"EOP SCX101480874\">&nbsp;<\/span><\/p>\n<\/div>\n<div class=\"OutlineElement Ltr SCX101480874\">\n<p class=\"Paragraph SCX101480874\"><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">This is something&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">that<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;is<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">new to us, so we<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;are<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;starting small<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;(t<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">hink of it as a minimal viable product)<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">.&nbsp; For this&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">initial<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">release&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">we&rsquo;re not soliciting external drafts of proposa<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">ls for language features.&nbsp; W<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">e<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">would<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">like to do a trial run with a single draft proposal to iron out any issues with th<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">e process. The PowerShell language team is relatively small<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">, so I want to ensure we are capable of actively reviewing and responding to feedback on a timely basis.&nbsp; Once we agree we have a good process in place,&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">we<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&#8216;ll&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">l<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">o<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">ok<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">at&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">open<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">ing<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;it up for&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">public draft proposals as well as&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">consider&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">having specific community members help as moderators and editors.<\/span><span class=\"EOP SCX101480874\">&nbsp;<\/span><\/p>\n<\/div>\n<div class=\"OutlineElement Ltr SCX101480874\">\n<p class=\"Paragraph SCX101480874\"><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">We&rsquo;ve seen other teams and projects&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">(<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/dotnet\/roslyn\/issues?q=label%3A%22Design+Notes%22+\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">C#<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;and&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/fsharp\/FSharpLangDesign\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">F#<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">)&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">use this approach successfully, and we&rsquo;ve modeled ourselves off of the&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/chef\/chef-rfc\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">Chef RFC<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;process with some learnings from my previous experience&nbsp;<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">as<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;a member of the&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"http:\/\/www.dmtf.org\/\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">DMTF<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">.&nbsp;&nbsp;<\/span><span class=\"EOP SCX101480874\">&nbsp;<\/span><\/p>\n<\/div>\n<div class=\"OutlineElement Ltr SCX101480874\">\n<p class=\"Paragraph SCX101480874\"><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">Currently, we have just one&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Language-RFC\/tree\/master\/1-Draft\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">draft proposal<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;available for&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Language-RFC\/issues\/2\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">comments<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">.&nbsp; We are doing this on&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">GitHub<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;and the tooling is more suited for code than for specifications so the current thinking is to use an issue per document to track comments.&nbsp; We are particularly interested in&nbsp;<\/span><a class=\"Hyperlink SCX101480874\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Language-RFC\/issues\/5\"><span class=\"TextRun Underlined SCX101480874\" xml:lang=\"EN-US\"><span class=\"NormalTextRun SCX101480874\">feedback<\/span><\/span><\/a><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp;on this process.<\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">&nbsp; Thank you!<\/span><span class=\"EOP SCX101480874\">&nbsp;<\/span><\/p>\n<\/div>\n<div class=\"OutlineElement Ltr SCX101480874\">\n<p class=\"Paragraph SCX101480874\"><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">Steve Lee<\/span><span class=\"LineBreakBlob BlobObject SCX101480874\"><span class=\"SCX101480874\">&nbsp;<\/span><br class=\"SCX101480874\" \/><\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">Principal Software Engineer Manager<\/span><span class=\"LineBreakBlob BlobObject SCX101480874\"><span class=\"SCX101480874\">&nbsp;<\/span><br class=\"SCX101480874\" \/><\/span><span class=\"TextRun SCX101480874\" xml:lang=\"EN-US\">PowerShell<\/span><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>For a while now, we&#8217;ve&nbsp;been thinking about how to&nbsp;better incorporate the&nbsp;community into the&nbsp;PowerShell language design&nbsp;process.&nbsp;&nbsp;We believe this would improve PowerShell by:&nbsp; Ensuring&nbsp;we prioritize on language&nbsp;features&nbsp;that the community cares about. Helps us&nbsp;understand where to focus&nbsp;our&nbsp;efforts on features most important to the community and&nbsp;not spend&nbsp;time&nbsp;building language features that won&rsquo;t be used. Getting&nbsp;diverse feedback&nbsp;during design and not after&nbsp;features [&hellip;]<\/p>\n","protected":false},"author":685,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-17763","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"acf":[],"blog_post_summary":"<p>For a while now, we&#8217;ve&nbsp;been thinking about how to&nbsp;better incorporate the&nbsp;community into the&nbsp;PowerShell language design&nbsp;process.&nbsp;&nbsp;We believe this would improve PowerShell by:&nbsp; Ensuring&nbsp;we prioritize on language&nbsp;features&nbsp;that the community cares about. Helps us&nbsp;understand where to focus&nbsp;our&nbsp;efforts on features most important to the community and&nbsp;not spend&nbsp;time&nbsp;building language features that won&rsquo;t be used. Getting&nbsp;diverse feedback&nbsp;during design and not after&nbsp;features [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/17763","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/685"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=17763"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/17763\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=17763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=17763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=17763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}