Please review this proposal and add comments.
Current situation:
Currently Prolint supports two groups of rules: standard rules and custom rules. Standard rules are installed as part of the Prolint distribution. Custom rules don't come from the Prolint website; a custom rule is created by the Prolint user and never committed to the Prolint website and hence not available to other users.
When someone wants to share their custom rules, they have to be accepted by project admin (=Jurjen) and then wait until the next Prolint release.
Proposed new situation:
In addition to standard rules and custom rules, a new layer "contrib rules" will be added. Everyone can contribute their rules to the website and everyone can decide to download any number of contributed rules. Contributed rules are not installed as part of Prolint distribution, unless a contributed rule is "upgraded" to a standard rule.
This is more attractive for people who have custom rules to share, because these rules do not have to wait for acceptance and are published immediately. It is also attractive to Prolint users to be able to choose from a public collection of custom rules, and it is attractive for myself because I won't have the burden to accept/review/reject rules.
Subversion:
In te subversion repository for prolint, a path "/trunk/contribs/rules" will be added and user "guest" will be authorized to read/write in this path. The password for "guest" will be announced here, so anyone can commit their rules to this path. The guest user is not authorized to commit anything outside the "/trunk/contribs/rules" path.
Definitions:
Each rule (example.p) must come with its own definition file (example.rule). The definition file contains the definitions for this one rule, e.g. description, severity, category, useProparse, useXref, etc.
Users will download the rule+definition pair to their "prolint/contribs/rules" directory - no need to maintain rules.d.
The format of the definition file must be something that can be imported very quickly yet easy to understand for humans.
Help:
Someone who contributes a rule should also add a help page, which is a child-page of http://www.oehive.org/prolint/rules
That help page should describe the purpose of the rule and should also identify the rule as a contributed rule that can be downladed from the subversion contribs path.
In addition, the help page should be attached to the "contributed rules" keyword, so all contributed rules can be easily listed.
Shop for rules:
Visitors will be able to discover contributed rules in several ways:
Search order:
Prolint will search rule definitions in the following order:
1. prolint/contribs/rules
2. extend and override the results from (1) by prolint/rules
3. extend and override the results from (2) by prolint/custom/rules
Execution order:
Prolint will search rule code in the following order:
1. prolint/custom/rules
2. when not found, search the rule in turbolint
3. when not found, search the rule in prolint/rules
4. when not found, search the rule in prolint/contribs/rules
Please comment??
Thanks, Jurjen