ZenPack names consist of at least three strings joined by periods. The first of these strings is always "ZenPacks." Each of these strings must start with a letter and contain only letters, numbers and underscores. The reason for this naming scheme is that the ZenPack will setup namespaces in Python that reflect these names. There is a python namespace called ZenPacks. Within that namespace are packages representing the second part of all the installed ZenPack and so on. So for example if you have a ZenPack named ZenPacks.MyCompany.MyZenPack then it is importable in Python (and zendmd) as
import ZenPacks.MyCompany.MyZenPack
And a datasource class provided by this example might be accessed as
from ZenPacks.MyCompany.MyZenPack.datasources.MyDataSourceClass import MyDataSourceClass
The advantage of these namespaces is that they help prevent namespace conflicts between different organizations authoring ZenPacks. So if a third party wants to develop an http monitoring ZenPack they could name it ZenPacks.OurCompany.HttpMonitor and it would not conflict with the ZenPacks.zenoss.HttpMonitor core ZenPack.