Commercial Plugin Requirements v0.1
NexentaStor is used in critical production enviromment. As such, NexentaStor plugins have to adhere to strict requirements of quality and usability. The below list explains these requirements.
The plugin has to install and uninstall cleanly. In order to ensure that users and customers can utilize the functionality provided by your plugin, you will need to ensure that the plugin installs in different conditions like Trial version of the appliance, the enterprise version, versions with other plugins installed. The plugin also has to remove cleanly, without any undesired effects on the underlying storage or the appliance software.
The plugin, when required should not require the appliance or the system to be restarted (unless absolutely essential by the plugin functionality). In general plugins have to be independent of other modules of the storage system, and when removed should still leave the system and storage usable (albeit without the functionality provided by the plugin).
Reporting and Logging
In order to help with the support process, the plugin should always report logging information to the system log. Critical errors, or departures from expected behavior, should be logged and notified. The logging information should include all essential information that would be required to diagnose issues. In short, include information that would help a support team to look at the log and pinpoint the issue.
NexentaStor uses the debian packaging system for package management (plugins are a collection of debian packages). Commercial plugins are certified before release to the wider userbase, and each version has to thus be vetted. Your package should maintain version-ed tree of the source (this site provides repository hosting, for example). Subsequent versions should always be higher than the previous version. Package dependencies should be maintained the same across versions, and any change will have to go through complete review of the package. In general, plugins seldom change their dependency, and this would be the expected behavior.
Usabilty and Interface
NexentaStor's management console is known for it usability. Your plugin should utilize the underlying input and output modules provided for any interaction with the user. This helps in maintaining the underlying console behavior, and the reduce the learning curve for end users. During the development of a commercial plugin, the appliance team can provide input on possible methods to expose functionality to end users.
NexentaStor plugin licensing document is available at Licensing.