<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Huddled Masses &#187; Module Manifest</title>
	<atom:link href="http://huddledmasses.org/tag/module-manifest/feed/" rel="self" type="application/rss+xml" />
	<link>http://huddledmasses.org</link>
	<description>You can do more than breathe for free...</description>
	<lastBuildDate>Sat, 28 Jan 2012 21:37:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<cloud domain='huddledmasses.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>RFC: Information in PoshCode Module Manifests</title>
		<link>http://huddledmasses.org/rfc-information-in-poshcode-module-manifests/</link>
		<comments>http://huddledmasses.org/rfc-information-in-poshcode-module-manifests/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:31:25 +0000</pubDate>
		<dc:creator>Joel 'Jaykul' Bennett</dc:creator>
				<category><![CDATA[Huddled]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Module Manifest]]></category>
		<category><![CDATA[PoshCode]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://huddledmasses.org/?p=1530</guid>
		<description><![CDATA[OK, I&#8217;m putting this out there to see if I&#8217;ve missed anything that would be useful. This is the list of metadata that we&#8217;ll be storing about Modules in the PoshCode repository. It duplicates most of the information in the PowerShell Manifests, but it adds more of information that we feel is important for searching, [...]]]></description>
			<content:encoded><![CDATA[	<p>OK, I&#8217;m putting this out there to see if I&#8217;ve missed anything that would be useful.  This is the list of metadata that we&#8217;ll be storing about Modules in the PoshCode repository. It duplicates most of the information in the PowerShell Manifests, but it adds more of information that we feel is important for searching, sorting and organizing &#8230; and in the PoshCode Module manifests, wildcards are not allowed for any of the &#8220;export&#8221; values.  The export information in the module is intended to represent the initial state of the module after import: listing all the cmdlets, functions, variables and aliases &#8230;</p>

	<h2>PoshCode Module Manifest Format:</h2>

	<h4><span class="caps">GUID</span></h4>

	<p>The globally unique identifier for this module. Helps us tell modules apart  <img src='http://huddledmasses.org/wordpress/wp-includes/' alt=':)' class='wp-smiley' /> </p>

	<h4>Name</h4>

	<p>The name of this module. Helps us find modules, and helps you guess what they&#8217;re for.</p>

	<h4>ModuleVersion</h4>

	<p>The version of this module.  Together with the <span class="caps">GUID</span>, this is the unique key for the module. It should be incremented whenever you release it.</p>

	<h4>Description</h4>

	<p>A short description of the module. What it is, what it does, what it&#8217;s for.</p>

	<h4>ModuleType</h4>

	<p>Tells whether the module is a Script module or a Binary module (if they are both, then they are Binary).</p>

	<h4>Author</h4>

	<p>The <strong>person(s)</strong> who created this module. No organizations here, just people.</p>

	<h4>Company</h4>

	<p>A company (if there is one) that created this module or provides support for it.</p>

	<h4>Copyright</h4>

	<p>The copyright statement. You should always fill this out and assign copyright to the correct author, group or corporation.</p>

	<h4>License</h4>

	<p>The software license(s) that this module can be licensed under. It&#8217;s enough to use an acronym like &#8220;<span class="caps">GPL</span> v2&#8221; or &#8220;MIT&#8221; or &#8220;Ms-PL&#8221; ... but if you have a custom license you can specify a description of it or the full text of it. Multiple entries are allowed.</p>

	<h4>LicenseUri</h4>

	<p>The url(s) for a full copy of the license. If you&#8217;re using an open source license you can link to it&#8217;s page on <a href="http://opensource.org/licenses/">opensource.org</a></p>

	<h4>Category</h4>

	<p>We&#8217;ll publish our official category list later, but the category is intended to be an assignment to a single category in a hierarchical tree. </p>

	<h4>Tags</h4>

	<p>A collection of user-assigned free-text keywords that help to categorize the module and serve as additional search terms.</p>

	<h4>Homepage</h4>

	<p>If the module has a home page on the internet, this is the <span class="caps">URL</span>. You can use the link to the PoshCode Docs page (which our cmdlets will generate for you) if you don&#8217;t have your own page.</p>

	<h4>Download</h4>

	<p>This is the link to download the module. If you&#8217;re hosting it on PoshCode, we will fill this in. If you&#8217;re hosting it elsewhere, this must be a <strong>download</strong> link. If it&#8217;s a commercial module that requires payment, you should leave this link empty unless you have a free trial download.  Note: I&#8217;m still working on the commercial angle.  Would it be helpful to include the price here? If we offered a way to sell your modules through PoshCode, would you use it?</p>

	<h4>RequiredAssemblies</h4>

	<p>Assembly names (or relative paths, if the assemblies are included in the module folder) for assemblies that must be loaded before the module will work. These should be the Assembly FullName, not a partial name.</p>

	<h4>RequiredModules</h4>

	<p>The names and versions (and GUIDs) of any modules that this module depends on.</p>

	<h4>PowerShellVersion</h4>

	<p>The version of Powershell required (2.0, for now).</p>

	<h4>FrameworkVersion</h4>

	<p>The version of the .Net Framework required. The framework version implies the <span class="caps">CLR</span> version, so we&#8217;ll just stick to this.  I&#8217;m still toying with the idea of saying the list is 2.0, 3.0, 3.5, 3.5.1, and 4.0 &#8230; rather than allowing the normal version with the full four digits.</p>

	<h4>VersionChanges</h4>

	<p>This is either the list of changes in this version, or a complete list of the changes in previous versions.</p>

	<h4>Exported Cmdlets</h4>

	<p>The list of (binary) cmdlets exported by this module.</p>

	<h4>Exported Functions</h4>

	<p>The list of script functions exported by this module.</p>

	<h4>Exported Aliases</h4>

	<p>The list of aliases exported by this module.</p>

	<h4>Exported Variables</h4>

	<p>The list of variables exported by this module.</p>

	<h3>Deprecated things &#8230;</h3>

	<p>I&#8217;m leaning against having these items in the PoshCode manifest &#8212; they don&#8217;t seem to be helpful for finding or sorting or understanding a module.</p>

	<ul>
		<li>ModuleFile</li>
		<li>ModuleToProcess</li>
		<li>FormatsToProcess</li>
	</ul>
	<ul>
		<li>TypesToProcess</li>
	</ul>

	<h2>Comments Requested</h2>

	<p>I&#8217;m hoping for feedback about this list, what I might be missing, or if there&#8217;s anything in here I should leave out &#8230;  let me hear it!</p>]]></content:encoded>
			<wfw:commentRss>http://huddledmasses.org/rfc-information-in-poshcode-module-manifests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A question about PowerShell Module Manifests</title>
		<link>http://huddledmasses.org/a-question-about-powershell-module-manifests/</link>
		<comments>http://huddledmasses.org/a-question-about-powershell-module-manifests/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 05:44:23 +0000</pubDate>
		<dc:creator>Joel 'Jaykul' Bennett</dc:creator>
				<category><![CDATA[Huddled]]></category>
		<category><![CDATA[CPAN]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Module Manifest]]></category>
		<category><![CDATA[Modules]]></category>
		<category><![CDATA[PoshCode]]></category>
		<category><![CDATA[Windows PowerShell]]></category>

		<guid isPermaLink="false">http://huddledmasses.org/?p=1382</guid>
		<description><![CDATA[So, I&#8217;m building the next PoshCode around modules, with CPAN as my model &#8230; Scripts are still there, but they&#8217;re still basically done the way they are now: you just upload a single file. Modules, however, will be treated specially. You&#8217;ll have to have an account to upload, but you&#8217;ll be able to just upload [...]]]></description>
			<content:encoded><![CDATA[	<p>So, I&#8217;m building the next PoshCode around modules, with <span class="caps">CPAN</span> as my model &#8230; </p>

	<p>Scripts are still there, but they&#8217;re still basically done the way they are now: you just upload a single file. </p>

	<p>Modules, however, will be treated specially. You&#8217;ll have to have an account to upload, but you&#8217;ll be able to just upload a .zip file of your module folder using your login and not fill in any other forms. Our system will take care of parsing the metadata out of the <a href="http://msdn.microsoft.com/en-us/library/dd878337%28VS.85%29.aspx">manifest</a> in your module folder.</p>

	<p>The problem is that I need a little data that isn&#8217;t a part of the <a href="http://msdn.microsoft.com/en-us/library/dd878337%28VS.85%29.aspx">standard module manifest</a> format&#8230; and I can&#8217;t add it because PowerShell won&#8217;t load a module with extra fields in the manifest metadata hashtable: https://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=421837 &#8212; My request was closed &#8220;by design&#8221; early in the beta cycle and I wasn&#8217;t able to convince them to rethink that.</p>

	<p>At a minimum, PoshCode <strong>requires</strong> a <span class="caps">LICENSE</span> field, and a <span class="caps">CATEGORY</span> field (think of the categories on <span class="caps">CPAN</span> or TechNet Script Center).</p>

	<p>So I&#8217;m having an informal poll. (you&#8217;ll have to &#8220;vote&#8221; by commenting or tweeting to me, because I want more than just &#8220;I choose A&#8221;).</p>

	<p>Which option do you prefer, or can you think of a better way:</p>

	<h4>Require the License and Category to be part of the <span class="caps">PRIVATEDATA</span> field in the standard manifest</h4>

	<p>This might require authors to rewrite parts of their modules, because we&#8217;d be forcing PrivateData to be a Hashtable, and to contain keys that they don&#8217;t need in the module.</p>

	<p>Some existing modules use an array in PrivateData, or even a simple string, rather than a Hashtable. However, it&#8217;s not a <strong>huge</strong> difference, and might be the cleanest method: it wouldn&#8217;t require you to manage a second file of data, and the additional data will be easily available to users and scripts via the standard Get-Module output.</p>

	<h4>Add a &#8220;doc comment&#8221; system for Module manifest files.</h4>

	<p>The upside of this is that PoshCode wants to create module-level documentation anyway. If we use documentation comments like those used on functions we would be able to just create our own standard for them, and add any extra fields we need. It would be guaranteed not to conflict with anything you&#8217;re already doing, and in addition to missing metadata, you could have some module-level documentation beyond just the Description field of the metadata.  </p>

	<p>The problem with this is that there&#8217;s no built-in way to parse that, and doing so isn&#8217;t trivial, so you would need to just read it on our website, or read the source of the file, or have our PoshCode cmdlets in order to make any sense of it once you had a module on your system. It doesn&#8217;t integrate with PowerShell in any meaningful way.</p>

	<h4>Embed the extra data right in the manifest hashtable, using a special comment to hide it from Get-Module</h4>

	<p><code lang=&#8220;posh&#8221;<br />
@{<br />
author=&#8220;Joel Bennett&#8221;<br />
description=&#8220;My latest crazy module&#8221;<br />
<#!PoshCode<br />
License=&#8220;Ms-PL&#8221;<br />
Category=&#8220;WPF&#8221;,&#8220;GUI&#8221;,&#8220;Toolkit&#8221;
#><br />
CompanyName=&#8220;Huddled Masses&#8221;<br />
...<br />
}<br />
</code></p>

	<p>I like this because it&#8217;s fairly trivial for us to strip out the comment and just turn that into a plain-old <span class="caps">DATA</span> section.  It also lends itself to reminding the PowerShell team that these fields are missing, and maintains the existing simple syntax of the manifest.  </p>

	<p>The problem here is, again, that the data doesn&#8217;t appear using any of the standard PowerShell tools &#8212; but getting it out is significantly easier than getting out document comments&#8230;</p>

	<h4>Require a separate &#8220;ReadMe.psd1&#8221; (or &#8220;PoshCode.pds1&#8221; or &#8220;Metadata.psd1&#8221;) metadata file</h4>

	<p>You could start with a copy of your module manifest, and then add the extra stuff that PoshCode needs. This would be nice because we would be able to add any extra fields we wanted as mandatory members, and we could include the &#8220;documentation&#8221; stuff I mentioned earlier&#8230;</p>

	<p>But the downside is that it would be a third file (second manifest) that authors would have to maintain and keep current.</p>

	<p>Any thoughts? Suggestions? </p>

	<p>I&#8217;ve put some further thoughts <a href="http://wiki.poshcode.org/PoshCode_Project/CPAN_and_PoshCode_vNext">about CPAN</a> and the <a href="http://wiki.poshcode.org/PoshCode_Project/Module_Upload_System">data problem</a> on the wiki.</p>

<div class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/afd48ed4-ce64-4ce4-a1a3-9d7daffc69ed/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=afd48ed4-ce64-4ce4-a1a3-9d7daffc69ed" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>]]></content:encoded>
			<wfw:commentRss>http://huddledmasses.org/a-question-about-powershell-module-manifests/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

