Functional Specifications Document
Table of Contents
This document will outline the functional requirements of 检查.
Review Commentary
The review commentary should provide nearly real time discussion of suggested changes as well as provide alternative suggestions.
The commentary approach may require users to super-impose a review on top of another. This may quickly become very difficult to handle if not properly approached and necessarily optimized from the beginning. For instance, applying a 10 level deep series of patches to patches in order to display not only a review but it's suggested changes could quickly become a runtime responsiveness challenge.
Note: This may not be worthwhile for initial release, to be determined
Review Process
The goal the actual process is for it to be re-definable and have a variable amount of ceremony. Low ceremony isn't precisely the goal, but flexible ceremony is. It's desired to offer a re-arrangable review process, for the time being I believe this may be accomplished from creating a powerful and flexible enough rules engine alone.
Rules Engine
A part of Jian Cha is a required rules engine. This rules engine must read a configuration (static, or dynamic) which is user managed to dictate the requirements for review submission and the unconditional requirements for approval. There also should more than likely be atleast some level of "warnings", a way to create a criteria that flags an approved commit as fitting all unconditional requirements but not all suggested requirements.
The complexity of this rules engine can grow rapidly and this is quite obviously a screaming area for the introduction of feature creep. For the time being and to avoid feature creep the rules engine is required to do very little other than provide required criteria based upon specific data stored about each review, such as it's flags — number of comments — approvals (and level(s) of approval) — and similar rules that are static and low overhead in nature. The initial rules engine should do no source code analysis, no negative keyword or other scanning, but allow flexible rules to be defined.
This should hopefully be a flexible enough engine to introduce in the near future the ability to greatly extending the rules engine, however nothing is currently required of it other than a well planned API that can be maintained and hopefully will not require major revision when more flexibility is introduced to the engine.