{"id":13805,"date":"2017-12-08T10:00:48","date_gmt":"2017-12-08T18:00:48","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/powershell\/?p=13805"},"modified":"2021-09-20T08:23:41","modified_gmt":"2021-09-20T16:23:41","slug":"dsc-resource-naming-and-support-guidelines","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/dsc-resource-naming-and-support-guidelines\/","title":{"rendered":"DSC Resource Naming Guidelines"},"content":{"rendered":"<p><div class=\"alert alert-info\"><p class=\"alert-divider\"><i class=\"fabric-icon fabric-icon--Info\"><\/i><strong>Important<\/strong><\/p>The intention of this article is to clarify that you cannot determine supportability by the name of a module. Indicators such as &#8220;x&#8221; DO NOT imply whether the module is supported or not supported. If the module is supported (Microsoft, 3rd party, or by an open source project) it should be documented in the ReadMe file, or made clear in product documentation.<\/div><\/p>\n<p>When DSC was\u00a0<a href=\"https:\/\/channel9.msdn.com\/Events\/TechEd\/NorthAmerica\/2013\/MDC-B302\" rel=\"nofollow\">announced<\/a>\u00a0at TechEd 2013, one of the\u00a0<a href=\"https:\/\/view.officeapps.live.com\/op\/view.aspx?src=http%3a%2f%2fvideo.ch9.ms%2fsessions%2fteched%2fna%2f2013%2fMDC-B302.pptx\" rel=\"nofollow\">goals<\/a>\u00a0was to &#8220;Create an ecosystem&#8221;.<\/p>\n<p>The ecosystem for DSC has grown tremendously in the last 4 years.<\/p>\n<p>At worldwide events for PowerShell (<a href=\"https:\/\/powershell.org\/summit\/\" rel=\"nofollow\">PowerShell + DevOps Global Summit<\/a>,\u00a0<a href=\"http:\/\/www.psconf.eu\/\" rel=\"nofollow\">PowerShell Conference EU<\/a>,\u00a0<a href=\"http:\/\/www.psconf.asia\/\" rel=\"nofollow\">PowerShell Conference Asia<\/a>) there have been presentations lead by people actively using DSC to discuss real world, success, challenges, and community projects to resolve common issues. In addition there are community projects to build solutions for DSC entirely driven by the community, such as\u00a0<a href=\"https:\/\/github.com\/gaelcolas\/Datum\">Datum<\/a>\u00a0to manage configuration data at scale,\u00a0<a href=\"https:\/\/github.com\/Microsoft\/BaselineManagement\">BaselineManagement<\/a>\u00a0to convert Group Policy to DSC configurations, and\u00a0<a href=\"https:\/\/github.com\/Microsoft\/ReverseDSC\">ReverseDSC<\/a>\u00a0to replicate known environments.<\/p>\n<p>The\u00a0<a href=\"https:\/\/www.powershellgallery.com\/\" rel=\"nofollow\">PowerShell Gallery<\/a>\u00a0includes 1100 DSC Resources across 254 unique modules. Of those 1100 DSC Resources, 411 are currently released by the DSC team from the DSC Resource Kit.<\/p>\n<p>During events and the monthly DSC Resource Kit community calls over the past year, I have heard consistently that\u00a0<strong>the naming convention for DSC Resources is ready for an update.<\/strong>\u00a0Most notably, the\u00a0<a href=\"https:\/\/blogs.msdn.microsoft.com\/powershell\/2013\/12\/26\/holiday-gift-desired-state-configuration-dsc-resource-kit-wave-1\/\" rel=\"nofollow\">experimental &#8220;x&#8221; prefix<\/a>\u00a0and\u00a0<a href=\"https:\/\/github.com\/PowerShell\/DscResources\/blob\/master\/HighQualityModuleGuidelines.md\">HQRM<\/a> guidance could be confusing and does not match the approach used in other similar community ecosystems.<\/p>\n<h2>The Old Naming Convention<\/h2>\n<p>The original recommendation was to name resources using the following prefixes:<\/p>\n<ul>\n<li>&#8220;x&#8221; to identify a resource that is experimental and not supported<\/li>\n<li>&#8220;c&#8221; to identify a community modification<\/li>\n<\/ul>\n<p>Resources that met a community agreed upon quality bar, or &#8220;High Quality Resource Modules&#8221;, have been using a naming suffix &#8220;Dsc&#8221;.<\/p>\n<h2>The New Naming Convention<\/h2>\n<p>The community has discussed and agreed upon a new simplified standard, explained in a recent update to the\u00a0<a href=\"https:\/\/github.com\/PowerShell\/DscResources\/blob\/master\/Naming.md\">documentation<\/a>.<\/p>\n<p><strong>DSC Resources going forward are no longer required to use the &#8220;x&#8221; or &#8220;c&#8221; naming conventions.<\/strong><\/p>\n<p>Instead, the guideline is that resources should use either the existing module name (if DSC Resources are combined with an existing module containing PowerShell functions) or the &#8220;Dsc&#8221; suffix. The best practices for finding a DSC Resource module is to search the PowerShell Gallery using the &#8220;DSC Resource&#8221; filter, or use the cmdlet:<\/p>\n<div class=\"highlight highlight-source-powershell\">\n<pre><span class=\"pl-c1\">Find-DscResource<\/span><\/pre>\n<\/div>\n<p>The project name will not have any relationship with how or whether the project is supported.\u00a0The\u00a0<a href=\"https:\/\/github.com\/PowerShell\/DscResources\/blob\/master\/Supportability.md\">documentation<\/a>\u00a0merged today also addresses this topic.<\/p>\n<h2>Why is it the right time to make this change<\/h2>\n<p>This is only possible because the DSC community, especially the DSC Resource project maintainers, are so passionate and actively working with DSC users to make the ecosystem better for everyone. The maintainers hold each other accountable to quality and technically enforce this through test automation.<\/p>\n<p>The first community contributions to the DSC Resource Kit contained only the PowerShell code for the DSC module. The expectation for a contribution today includes following <a href=\"https:\/\/github.com\/PowerShell\/DscResources\/blob\/master\/BestPractices.md\">best practices<\/a>, <a href=\"https:\/\/github.com\/PowerShell\/DscResources\/blob\/master\/StyleGuidelines.md\">style guidelines<\/a>, documentation, and <a href=\"https:\/\/github.com\/PowerShell\/DscResources\/blob\/master\/TestsGuidelines.md\">test<\/a> automation to demonstrate quality. As an example, the SharePointDsc module includes 2102 tests that must pass to accept a new contribution, and anyone can review the\u00a0<a href=\"https:\/\/ci.appveyor.com\/project\/PowerShell\/xsharepoint\/branch\/master\" rel=\"nofollow\">results of a new build<\/a>. Similarly,\u00a0<a href=\"https:\/\/github.com\/PowerShell\/sqlserverdsc\">SQLServerDsc<\/a>\u00a0includes 2507 tests (and has already adopted the new naming standard),\u00a0<a href=\"https:\/\/github.com\/PowerShell\/xwebadministration\">xWebAdministration<\/a>\u00a0has 1032, and\u00a0<a href=\"https:\/\/github.com\/PowerShell\/xactivedirectory\">xActiveDirectory<\/a>\u00a0includes 653.<\/p>\n<h2>How do I know if a DSC Resource is supported<\/h2>\n<p>The old naming convention using &#8220;x&#8221; and &#8220;c&#8221; prefixes required users to modify their code when switching from experimental to stable versions of a module.\u00a0 Support for DSC Resources should come from the organization supporting the technology that is being managed. The best way to make that clear is to express it in the project Readme. Just as someone interested in consuming the resource should review the project code and make sure it is suitable for their environment, they should review the entire project documentation.<\/p>\n<h2>When will this change happen<\/h2>\n<p>Finally, this change does not need to be implemented &#8220;overnight&#8221;. As maintainers release future versions of their projects and determine they are ready, they can choose to retire the &#8220;x&#8221; convention. The PowerShell Gallery will provide access to future releases by the new name and the history of previous releases by the old name. The project repository will be the source of truth.<\/p>\n<p>Thank you!\nMichael Greene\u00a0<a href=\"http:\/\/twitter.com\/migreene\" rel=\"nofollow\">@migreene<\/a>\nPrincipal Program Manager\nPowerShell DSC, Azure Automation DSC, and Azure Management Community<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When DSC was\u00a0announced\u00a0at TechEd 2013, one of the\u00a0goals\u00a0was to &#8220;Create an ecosystem&#8221;. The ecosystem for DSC has grown tremendously in the last 4 years. At worldwide events for PowerShell (PowerShell + DevOps Global Summit,\u00a0PowerShell Conference EU,\u00a0PowerShell Conference Asia) there have been presentations lead by people actively using DSC to discuss real world, success, challenges, and [&hellip;]<\/p>\n","protected":false},"author":658,"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-13805","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"acf":[],"blog_post_summary":"<p>When DSC was\u00a0announced\u00a0at TechEd 2013, one of the\u00a0goals\u00a0was to &#8220;Create an ecosystem&#8221;. The ecosystem for DSC has grown tremendously in the last 4 years. At worldwide events for PowerShell (PowerShell + DevOps Global Summit,\u00a0PowerShell Conference EU,\u00a0PowerShell Conference Asia) there have been presentations lead by people actively using DSC to discuss real world, success, challenges, and [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/13805","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\/658"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=13805"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/13805\/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=13805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=13805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=13805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}