Installation (and uninstallation)
✔ Your extension should support new installations as well as upgrades from previous versions of the extension.
✔ Use bootstrapped configuration, module version handlers and light content to handle both new installations and updates to an older version of your extension.
✔ Use light development to make your extension easier to install and uninstall.
✔ Use YAML configurations wherever possible as it makes migrations and module deployment more efficient and manageable as version handlers are not required.
✔ Use light development configuration (yaml) for settings that are project specific like endpoint URLs.
✔ Use decoration instead of configuration bootstrapping or version handlers to modify the configuration of other modules when possible.
✚ If you must use version handlers to modify the configuration of your extension or other extensions, use node and property predicate tasks in your version handler to check for expected values before modifying configuration.
✔ If you have to use bootstrapping to set up your configuration, your extension should contain a basic configuration to get the extension up and running.
✚ Basic JCR configuration during a fresh installation should be installed from mgnl-bootstrap, additional configuration, including demonstrating advanced features of your extension, should be installed from mgnl-bootstrap-samples.
Light development can make your extension easier to develop, maintain and easier to install, as well as easier to customize for your users.
✔ Use light development to define templates and dialogs in your extension.
Unlike JCR configuration, light templates and dialogs are automatically removed when your extension is removed.
✔ Avoid using label and description properties in template and dialog YAML definitions.
✚ When possible, use autogenerated names and message bundles to define labels and descriptions in your template and dialog YAML definitions.
✔ Make sure no errors are reported in the Definitions app for your light definitions.
✔ Your extension should provide informative logging messages for system administrators, support providers, system integrators and developers.
✚ Trace and debug log messages should be directed to developers.
✚ Warning and info log messages should be directed to support providers and system integrators.
✚ Fatal, error and warning log messages should be directed to system administrators.
✔ Your extension should contain definitions of any custom security roles or groups for operation.
✔ Your custom roles should be as restricted as possible.
Make sure your custom roles provide access to only functionality needed by your extension.
✔ Your extension should provide at least a README describing the basic configuration and operation of the extension.
✔ Your README should describe how to install and uninstall your extension.
✚ Your README should have links to documentation of advanced features and configuration of your extension.