A few months ago Vincent Thoulé of Minyaa and I were discussing the different kinds of changes we've done to JIRA. We came up with the following list different levels of changes.
Levels0. Client side install, no JIRA restart required, e.g. a JIRA CLI
1. One plugin jar file, no JIRA restart required - mostly not possible yet but can happen for groovy scripts
2. One plugin jar files and JIRA restart required - the common case
3. One plugin jar file, some custom jsp files, JIRA restart required
4. One plugin jar file, modified system jsp, vm or XML files, JIRA restart required
5. One plugin jar file, modified system files with possible recompilation, JIRA restart required
6. More than one plugin jar file, new language installation required, first-born child required.
No classification is perfect, but some are more useful than others. It would great to have each of the public plugins for JIRA fall into one of these categories, to help give a sense of what you're in for if you try to get it running.
What do you think?