The below document is now deprecated and partially incorrect. It is in the process of being integrated into:
TheZenPack Development Process Guide
The entire process can be described in four steps:
When you have a new or updated ZenPack that you would like to publish, please help the community by following as many of the steps below as possible. We can process ZenPacks faster and more accurately when you, ZenPack developers, help become part of the process. When you have followed as many steps as you can below, we invite you to send notification to email@example.com and we'll help get it added to the list of Community ZenPacks available from our ZenPacks subcommunity.
As you can see below this is an elaborate process. The real goal is to make sure that the Zenoss Community has visibility to new and updated ZenPacks as they're made available. We appreciate any and all updates for Community ZenPacks!
- The first step for posting a new ZenPack is that Zenoss Inc requests that the author fill out the Contribution Form at http://community.zenoss.org/community/developers, which will allow Zenoss to relicense any ZenPacks you submit under the GPL and consider them for repackaging within Zenoss. You only have to fill out the form once. We will then merge your changes into the official http://github.com/zenoss/Community-Zenpacks repo (for this and any other ZenPacks). Note that this is a requirement for accepting patches to Zenoss.
- Update the list at The specified document was not found. to put the ZenPack in the queue.
Note: A supplemental community-created PDF document that may provide additional understandng is located here:
- Check out the http://github.com/zenoss/Community-Zenpacks source tree if you don't already have it. Git Instructions if you don't already have a $ZENPACKS directory.
your $ZENPACKS directory.
git fetch upstream git merge upstream/master
- Unzip the .egg file to a temporary directory ($EGGDIR).
- If the ZenPack doesn't already exist in the Git repository that you've checked out as your $ZENPACKS directory, make a directory for it (ie. $ZENPACKS/ZenPacks.community.NEWZENPACK) and copy over the $EGGDIR/ZenPacks directory. You'll need to add a setup.py, a MANIFEST.in and a COPYRIGHT.txt file to the new ZenPack. These can be copied over from another existing ZenPack and updated for the new ZenPack.
- If the ZenPack already exists in the Git repository, use a command like "dirdiff $EGGDIR <zenpackdir>" and merge in the changes. The build, dist and any *egg-info directories are not to be checked in from the source directory. Any .pyc or .pyo files are also not to be checked in. The EGG-INFO directory from the unzipped $EGGDIR is not checked into version control either.
- unzip the contents of the ZenPacks.community.NEWZENPACK*.egg into another temporary directory (ie. $EGGDIR2)
- Diff the $EGGDIR with the $EGGDIR2 and verify the contents match.
- After verifything that the ZenPack has all the changes, go and install it on the version of Zenoss it was built for. py2.4.eggs are for Zenoss 2.5 and earlier, py2.6.eggs are for Zenoss 3.0.
- If the ZenPack does not install cleanly, note this for the document we'll be adding later. 'zopectl restart' and restart any other Zenoss daemons that may need restarting
- Click on the ZenPack page and check the details, see what it installs. Click around and take screenshots for the document. Test if possible (usually don't have the hardware).
- Uninstall the zenpack.
- If the ZenPack is supposed to work with Zenoss 2.5 and 3.0, change versions of Python and build again, repeating steps 9-12 on the proper Zenoss version. ZenPacks do not need to be tested for compatibility with previous releases.
- Back in the $ZENPACKS directory:
or add any new files if it's an update.
git add ZenPacks.community.NEWZENPACK
- 'git status' to verify the changes you wish to commit.
- Commit the ZenPack with a good description:
git commit -m "NEWZENPACK description 1.0"
- Tag this release as well:
git tag -a newzenpack1.0 -m "NEWZENPACK description 1.0"
- Once you've pushed your changes into your repository with:
git push --tags origin master
you can send a pull request to have your changes pulled into the official ZenPack repository. A Zenoss developer will review the changes and work with you to get them accepted.
- Go to the ZenPacks Documents page and select 'Create a document'. Select ' and title it whatever the ZenPack is called (ie. "BLAH DEVICE")
- Open another browser tab and go to the New ZenPack Template. Click 'Edit Document', toggle to HTML-mode and Select All the HTML source. Copy this to your clipboard.
- Back on the new ZenPack document, toggle to HTML-mode and paste in the template source. Toggle back to HTML.
- Fill in any documentation that was provided by the author and link the author. Note any configuration requirements and add screenshots that were created during smoketesting (steps 12-14). Add links to the ZenPack source and the tagged releases.
- Copy the newly created .egg file to http://dev.zenoss.org/zenpacks/
(Community Manager does most of this)
- Add the new ZenPack to the ZenPacks page list.
- Add to the Zenoss Blog "New and Updated ZenPacks for XXX" post that gets posted at the end of the month.
- Add to the internal "Community ZenPacks" Google doc.
- Post the ZenPack on the Zenoss Twitter account.
- Upload to http://dev.zenoss.com/zenpacks/
- Add to the internal "Community Contributions" Google doc.
- Post on the zenoss-zenpacks forum.
- Add to the New ZenPacks in the Community thread.
- Post the ZenPack in the Zenoss IRC channel