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
Comments
New rule to contribute
I have a new rule that I have created. It finds DISPLAY statements with no previously defined frame (DEFINE FRAME or FORMAT WITH FRAME).
I have never used subversion, and don't know how to go about creating a help page or how to upload the file. Could you please give me some guidance on next steps?
Thanks,
Barbara
re: new rule to contribute
Hi Barbara,
Great, thanks! I will try to write some guidelines later today. But I have to warn you: the above "proposed feature: contributed rules" is not finished, the current version of Prolint does not run contributed rules yet. So what I will do is write some guidelines for the current version of Prolint so people can use your new rule right now, and I promise I will hurry with the new Prolint release that does look at contributed rules. I will be back later today.
Thanks,
Jurjen.
re: new rule to contribute
Hi Barbara,
I have made a mini instruction how to create a help page: http://www.oehive.org/node/1227
I have also been thinking about how to continue with the actual rule upload: the proposal says that each contributes rule should be a pair of files: one file is the sourcecode (xyz.p) and the second is some sort of manifest (xyz.rule) that defines some properties of the rule. But now I don't like that idea anymore. What I'd prefer is to have one single file instead of a pair. So I am toying with the idea to define a structured comment in the header of the sourcefile.
I could give you instructions now how to upload your stuff into Subversion, but then when I keep changing my mind about the format... I think it is better for you when I make up my mind first, implement the changes so it actually works, and then publish how to do it. Ok? I promise I will do it asap.
Thanks,
Jurjen
You might want to consider
You might want to consider having a separate root node for the help for the contributed rules so that there is a clear separation.
Otherwise, sounds like a great idea.