In the IDempiere_workshop_2019 we had the idea to implement guidelines for plugins.
This is part of a list of all possible contributions, you can check those in Contributing to iDempiere.
These guidelines allow us to evaluate and judge plugins. It will also improve documentation. These guidelines are not static and will be updated with time. If you have any suggestions please contact us in the forums.
As a first step, every community plugin should have the following:
- How to Install - check the list below.
- What does it do? What is the purpose of the plugin?
- Include screenshots and videos - if possible. The idea is to show the community what they will get when installing the plugin.
- Technical Documentation - It there are special aspects to consider when trying to extend or contribute to the plugin, please document those technical aspects.
- Access to the source code (no broken links) - mandatory. Please note we want to support real open source, not those repositories that are update publicly every year, outdated against a private repository that gets frequent updates and is not visible for community.
- Access to the source code of the documentation (e.g. not only a pdf).
- List of plugin dependencies.
- List of similar or related solutions.
- It must be easy to install in existing iDempiere instances (plugins that require a modified core to install must be considered a fork or a distro, not a real plugin) - via the OSGi or Felix consoles with no extra steps is preferred. If there are more steps needed or additional configurations that cannot be done through 2packs, they should be well justified and documented.
- Includes 2pack
- Just install in the OSGi or Felix console and start it.
- The Binaries are available
- One-click start
- If Chuck prefers to separate the plugin into several files we allow him to do up to four-click-installation if it is very well documented.
- Plugin status
- Is the plugin compatible with the latest stable version of iDempiere?
- Date and version of the last review.
For best practices when developing community plugins you can follow the tutorials here Plug-In Development, in there it is well explained how to extend iDempiere without affecting the core.
Additionally, the community could asses the plugin quality with the following information:
- Is there someone who tested it other than the developer/sponsor?
- Who uses it and how?
- Code quality peer review / make sure that the plugin follows best practices (f.e. closing prepare statements to avoid memory leaks).
- Someone (not the developer) has to review the code
- Don't use hardcoded IDs
- Close cursors in "finally" blocks
- Security peer review - does the plugin open security breaches?