Transferring a module to another owner is pretty simple when you break it down. See puppetlabs-nginx for an example.
Basically, you want to avoid surprising existing users of your module by raising a number of signals that will get their notice. It's as easy as 1-2-3!
- Transfer the GitHub repository to the puppet-community organization
- Prepare and release the "warning" Forge release to the existing namespace
- Publish the first "normal" Forge release to the puppet namespace
If you're using GitHub, this step is simple. Simply read and follow this guide on how to do it, coordinating with an owner of puppet-community to handle the transfer.
This step is the most critical. Because the Puppet Forge does not provide the same transfer capabilities as GitHub, you are responsible for signaling the transfer to your users.
Your two main tools are the version number and the README.
The pattern established by puppetlabs-nginx is three-fold. a) Increment the version to something dramatic, like 99.99.99. b) Replace the contents of your README with a warning about the transfer, including where to find the new module (link to forge.puppetlabs.com/puppet/yourmodule). c) Leave the content of your module (manifests/extensions/etc) unchanged so that mindless upgrades from the previous version to 99.99.99 causes least harm.
<placeholder for nibalizer's description of Forge publishing>
Do you think it would be useful to also add a notify {"This puppetlabs-foobar module has changed ownership, please consider using puppet/foobar instead" loglevel => warning}