Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adapting Ravenbrook and MM group review procedure to public MPS #123

Draft
wants to merge 107 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
28b58b7
Adding draft placeholder review procedure, in part to establish a bra…
rptb1 Jan 19, 2023
99fc1a6
Adding reference to and notes about kpa.pr from the CMM.
rptb1 Jan 19, 2023
837133b
Drafting role and phases sections, based on MM group proc.review.
rptb1 Jan 20, 2023
4a9484a
Incorporating and adapting material from the One-page Inspection Hand…
rptb1 Jan 20, 2023
138ef66
Creating placeholder procedure sections and linking them from the pha…
rptb1 Jan 20, 2023
12d3463
Linking role references to role definitions.
rptb1 Jan 20, 2023
aab7903
Importing and marking up MM Group proc.review.entry.
rptb1 Jan 21, 2023
3d05815
Importing and marking up MM Group proc.review.exit.
rptb1 Jan 21, 2023
ee94771
Importing and marking up MM Group proc.review.ko.
rptb1 Jan 21, 2023
ae533f7
Importing and marking up MM Group proc.review.log.
rptb1 Jan 21, 2023
12dc2f5
Importing and marking up MM Group proc.review.brainstorm.
rptb1 Jan 21, 2023
704cef8
Importing and marking up MM Group proc.review.check.
rptb1 Jan 21, 2023
7f43b01
Referencing MM Group process.review for adaptation, and fix markup er…
rptb1 Jan 21, 2023
0d55f43
Minor markup fixes spotted by viewing on GitHub.
rptb1 Jan 21, 2023
b834c5d
Incorporating role descriptions from MM Group process.review.
rptb1 Jan 21, 2023
01f5052
Removing misleading numbering from entry procedure.
rptb1 Jan 21, 2023
b842c2c
Importing MM Group process.review document contents.
rptb1 Jan 21, 2023
8468fa9
Importing MM Group guide.review.edit.
rptb1 Jan 21, 2023
5a9c662
Adding some general points to the introduction.
rptb1 Jan 21, 2023
bc68746
Adding more general points to the introduction, including references …
rptb1 Jan 21, 2023
2f9e4cb
Locating entry and exit criteria and noting where to find them.
rptb1 Jan 21, 2023
d4ef690
Locating checking roles and adding a note to incorporate them.
rptb1 Jan 21, 2023
05ddffa
Fixing minor tagging error.
rptb1 Jan 22, 2023
8a6d0ed
Adding time-to-execute placeholder.
rptb1 Jan 23, 2023
c5a10e5
Adding definition of "major defect" with source.
rptb1 Jan 23, 2023
4fd5037
First pass at updating roles section (proc.review.role).
rptb1 Jan 23, 2023
1054bd0
First pass at updating entry procedure (proc.review.entry), separatin…
rptb1 Jan 23, 2023
9cadb2d
First pass at updating the planning procedure (proc.review.plan).
rptb1 Jan 23, 2023
627d826
Reducing the phases overview by focussing on purpose, and moving deta…
rptb1 Jan 23, 2023
489f487
Clarifying how a review is requested.
rptb1 Jan 23, 2023
51de4d8
Further reduction and clarification of the phases section, and initia…
rptb1 Jan 23, 2023
18db56c
Clarifying that checking and logging overlap. Separating process imp…
rptb1 Jan 23, 2023
5ab925a
Minor improvements from reading through the GitHub presentation of th…
rptb1 Jan 23, 2023
ee4d788
Integrating MM Group review entry and exit criteria into branch/2023-…
rptb1 Jan 23, 2023
fed8c90
Marked up review entry and exit criteria as reStructuredText without …
rptb1 Jan 23, 2023
a192287
Adding MPS document leader and trailer to entry and exit criteria.
rptb1 Jan 24, 2023
9dfea1a
Cross-referencing the review procedure from entry and exit criteria.
rptb1 Jan 24, 2023
1bbef95
First pass over entry and exit criteria content, making comments abou…
rptb1 Jan 24, 2023
f9c56b6
Better target of cross-reference based on GitHub presentation.
rptb1 Jan 25, 2023
d19bcaa
Lifting calculations to their own section and referencing from proced…
rptb1 Jan 26, 2023
eceaccd
Fixing markup of headings to correct section nesting.
rptb1 Jan 26, 2023
ddc8f7f
Integrating current Ravenbrook rulesets into branch/2023-01-19/review…
rptb1 Jan 26, 2023
8316bd1
Updating reStructuredText markup of rules already in RST for the publ…
rptb1 Jan 26, 2023
ff7c167
Converting rule.style from HTML to reStructuredText via pandoc and ma…
rptb1 Jan 26, 2023
c03d858
Converting rule.code.style from HTML to reStructuredText via pandoc a…
rptb1 Jan 26, 2023
ced1765
Converting rule.code.python from HTML to reStructuredText via pandoc …
rptb1 Jan 26, 2023
9ae2d3d
Oops. Adding document history entries for reStructuredText conversion.
rptb1 Jan 26, 2023
6a079bc
Adding note about training requirement.
rptb1 Jan 26, 2023
67a18fa
Linking unimported references to mminfo for now, so that the procedur…
rptb1 Jan 26, 2023
07f6b93
Importing checking roles from MM Group mminfo documents.
rptb1 Jan 26, 2023
b2050e2
Importing issue classification from MM Group mminfo documents.
rptb1 Jan 26, 2023
16d1297
Importing some material from MM Group mminfo:book.gilb93.proc.* inclu…
rptb1 Jan 26, 2023
d62587b
Lifting some TODO items and fixing some references.
rptb1 Jan 28, 2023
d293031
Developing the rationale. Tidying up comments about things to do.
rptb1 Jan 28, 2023
854622f
Minor clarifications in phases section.
rptb1 Jan 28, 2023
ac1c965
Clarifying proc.review.entry.
rptb1 Jan 28, 2023
20fa281
Clarifying proc.review.planning.
rptb1 Jan 28, 2023
645200a
Updating and clarifying proc.review.ko.
rptb1 Jan 28, 2023
3dc898e
Adding caution about using GitHub's review tool.
rptb1 Jan 28, 2023
31d6ac0
Adding note about use of GitHub comments as a review log.
rptb1 Jan 28, 2023
1325407
Referencing review procedure and rules from contributing guidelines.
rptb1 Jan 28, 2023
de6159a
Updating and clarifying proc.review.exit.
rptb1 Jan 28, 2023
11d967f
Adding reference to Fagan inspection.
rptb1 Jan 28, 2023
4e49b69
Adding review procedure to index.
rptb1 Jan 28, 2023
c0016ae
Revising documents section.
rptb1 Jan 29, 2023
cc8b126
Fixing reference strings so they work nicely on GitHub.
rptb1 Jan 29, 2023
064e733
Fixing the markup of the documents section.
rptb1 Jan 29, 2023
f0c17e3
Fixing planning tags for consistency.
rptb1 Jan 29, 2023
42f4fda
Updating and clarifying proc.review.check.
rptb1 Jan 29, 2023
50de9dd
Updating and clarifying proc.review.log.
rptb1 Jan 29, 2023
48a6708
Ensuring each procedure's purpose is tagged.
rptb1 Jan 29, 2023
92ab8d8
Updating and clarifying proc.review.brainstorm.
rptb1 Jan 29, 2023
9cdd2ec
Using review procedure tags for review records, and improving recordi…
rptb1 Jan 30, 2023
6468297
Adding first time-to-execute estimate based on <https://github.com/Ra…
rptb1 Jan 30, 2023
29d7190
Revising proc.review.plan based on review test run feedback <https://…
rptb1 Jan 31, 2023
94fc54a
Revising proc.review.check based on review test run feedback <https:/…
rptb1 Jan 31, 2023
49bb09b
Revising proc.review.log based on review test run feedback <https://g…
rptb1 Jan 31, 2023
12160d6
Noting that not every checker needs to understand everything thoroughly.
rptb1 Jan 31, 2023
b210134
Revising proc.review.log based on review test run feedback <https://g…
rptb1 Jan 31, 2023
8dd0a8a
Renaming proc.review.doc.issue to proc.review.doc.log and clarifying …
rptb1 Jan 31, 2023
f8b6c94
Adding proc.review.plan.homework in response to <https://github.com/R…
rptb1 Feb 1, 2023
dd2258f
Updating and clarifying proc.review.edit. Revising based on review t…
rptb1 Feb 1, 2023
da35ace
Adding specific instructions to proc.review.pi and reducing redundanc…
rptb1 Feb 1, 2023
314e08e
Implementing proc.review.express after express dev and test <https://…
rptb1 Feb 1, 2023
cc2d961
Tidying up and clarifying proc.review.express.
rptb1 Feb 2, 2023
b4b7765
Lifting entry.universal.reason out of proc.review.
rptb1 Feb 2, 2023
830d67c
Lifting entry.universal.feasible out of proc.review. Adding metrics …
rptb1 Feb 2, 2023
88038ec
Miscellaneous fixes.
rptb1 Feb 2, 2023
847613d
Using tags for more natural references to proc.review.purpose.
rptb1 Feb 3, 2023
f7f00ef
Removing out-of-date caveats from the introduction, and reducing the …
rptb1 Feb 3, 2023
6949ee7
Giving GitHub entities their official names and linking to GitHub doc…
rptb1 Feb 3, 2023
cd97206
Removing excessive GitHub instruction now that we have GitHub docs li…
rptb1 Feb 3, 2023
9f9fc53
Updates from running spelling checker.
rptb1 Feb 3, 2023
88f4561
Referencing [Gilb-93] and defining proc.review.role.leader.experienced.
rptb1 Feb 6, 2023
936f058
Adding a reminder that PI can be a simple as changing a personal habit.
rptb1 Feb 6, 2023
01288a6
Fixing markup.
rptb1 Feb 15, 2023
6fa80f4
Adding reminder to save review record <https://github.com/Ravenbrook/…
rptb1 Feb 17, 2023
539c687
Adding step to label pull requests containing PI as "pending" to prev…
rptb1 Feb 17, 2023
8848b70
Adding proc.review.brainstorm.new in response to <https://github.com/…
rptb1 Feb 19, 2023
abaa937
Removing some TODOs that are done.
rptb1 Feb 19, 2023
4634a33
Adopting requirement keywords from RFC 2119 and clarifying.
rptb1 Feb 19, 2023
39fbd18
Adding reminder for checkers to open and apply proc.review.check <htt…
rptb1 Feb 23, 2023
2f78464
Moving and renaming old review guides from design to procedure direct…
rptb1 Feb 26, 2023
586336a
Adding reminder not to check using diffs, and comment to work on this…
rptb1 Feb 28, 2023
654c24c
Catch-up merge from master into branch/2023-01-19/review-procedure
rptb1 Nov 9, 2023
0ee19ff
Working with JPH to remove comments and prepare proc.review for review.
rptb1 Nov 9, 2023
ce06e09
Adding justification for rule.code.minimal based on Hyrum's Law.
rptb1 Nov 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions contributing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,22 @@ Review

The MPS is highly engineered and rigorously controlled in order to
prevent defects. This approach has lead to an extremely small number of
bugs in production since its first commercial use in 1997. There are a
fairly large number of rules, both low- and high-level that your code
must follow in order to be accepted. These rules are the result of
continuous process improvement to prevent defects. Unfortunately, we do
not have many of them published at present. We apologise if you find it
frustrating that we do not accept your changes as they are.
bugs in production since its first commercial use in 1997.

In order to be accepted your change must pass the `MPS review
procedure`_ (proc.review_). To do so it must follow rules, both low-
and high-level, that can be found in the `procedure directory`_.
These rules are the result of continuous process improvement to
prevent defects.

We apologise if you find it frustrating that we do not accept your
changes as they are.

The style guide in guide.impl.c.format_ contains basic rules for style.

.. _MPS review procedure: proc.review_
.. _proc.review: procedure/proc.review.rst
.. _procedure directory: procedure/
.. _guide.impl.c.format: design/guide.impl.c.format.txt


Expand Down
3 changes: 0 additions & 3 deletions manual/source/design/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@ Design
freelist
guide.developer
guide.hex.trans
guide.impl.c.format
guide.impl.c.naming
guide.review
interface-c
keyword-arguments
land
Expand Down
78 changes: 78 additions & 0 deletions procedure/entry.design.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
================================================================
Memory Pool System entry criteria for review of design documents
================================================================

:tag: entry.design
:type: rule
:status: incomplete
:author: Gavin Matthews
:organization: Harlequin Limited
:date: 1998-04-14
:confidentiality: public
:copyright: See `C. Copyright and License`_
:readership: MPS developers

_`.scope`: These entry criteria are to be used for reviews of design
documents (`proc.review.entry.criteria`_).

.. _`proc.review.entry.criteria`: review.rst#51-review-entry

_`.rfc`: Any design document entering formal review must have
previously been reviewed informally, e.g. by e-mail RFC, or design
brainstorm. [This worked in the MM Group, but in public, by whom?
With what outcome? RB 2023-01-24]


A. References
-------------

.. [Gilb_93] "Software Inspection"; Tom Gilb, Dorothy Graham; Addison
Wesley; 1993; ISBN 0-201-63181-4; book.gilb93.


B. Document History
-------------------

Full document history before to 2001 has been lost because this
document was maintained in "Spring", a Lotus Notes information system
at Harlequin Limited. Ravenbrook Limited did not receive a full
revision history when it acquired the MPS from Harlequin's successor.

========== ===== ==================================================
1998-04-14 GRM Created.
2001-10-09 NDL Imported to Perforce.
2023-01-24 RB_ Integrated to MPS Git and prepared for public use.
========== ===== ==================================================

.. _RB: mailto:rb@ravenbrook.com


C. Copyright and License
------------------------

Copyright © 2023 `Ravenbrook Limited <https://www.ravenbrook.com/>`_.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

.. end
83 changes: 83 additions & 0 deletions procedure/entry.impl.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
=================================================
Memory Pool System entry criteria for source code
=================================================

:tag: entry.impl
:type: rule
:status: incomplete
:author: Gavin Matthews
:organization: Harlequin Limited
:date: 1996-07-24
:confidentiality: public
:copyright: See `C. Copyright and License`_
:readership: MPS developers

_`.scope`: These entry criteria are to be used for reviews of code
(see `proc.review.entry.criteria`_).

.. _`proc.review.entry.criteria`: review.rst#51-review-entry.

_`.author`: In the case of code there is often not a clear author. In
this case, the leader may select one or more people who have edited
the file recently, at their discretion. [This is out of place. By
the time entry criteria are being selected, the author role has been
indentified. See proc.review.role.author. RB 2023-01-24]

_`.auto-check`: Source code must compile without errors. Lint should
have been run where available. [Seems like there are three criteria
here: errors, warnings, and lint. RB 2023-01-24]


A. References
-------------

.. [Gilb_93] "Software Inspection"; Tom Gilb, Dorothy Graham; Addison
Wesley; 1993; ISBN 0-201-63181-4; book.gilb93.


B. Document History
-------------------

Full document history before to 2001 has been lost because this
document was maintained in "Spring", a Lotus Notes information system
at Harlequin Limited. Ravenbrook Limited did not receive a full
revision history when it acquired the MPS from Harlequin's successor.

========== ===== ==================================================
1996-07-24 GRM Created.
2001-10-09 NDL Imported to Perforce.
2023-01-24 RB_ Integrated to MPS Git and prepared for public use.
========== ===== ==================================================

.. _RB: mailto:rb@ravenbrook.com


C. Copyright and License
------------------------

Copyright © 2023 `Ravenbrook Limited <https://www.ravenbrook.com/>`_.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

.. end
119 changes: 119 additions & 0 deletions procedure/entry.universal.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
=================================================
Memory Pool System entry criteria for all reviews
=================================================

:tag: entry.universal
:type: rule
:status: incomplete
:author: Gavin Matthews
:organization: Harlequin Limited
:date: 1996-07-24
:confidentiality: public
:copyright: See `C. Copyright and License`_
:readership: MPS developers

_`.scope`: These entry criteria are to be used for all reviews (see
`proc.review.entry.criteria`_).

_`.author`: The author_ of the document agrees to the review.

_`.reason`: The change must include, or permanently link to as a
`source`_, the reason the change is needed, expressed in terms of
requirements.

- On GitHub, this can be the GitHub issue linked via the pull request.

_`.reviewable`: It must be feasible to review the change using the
review procedure (`proc.review`_). See `proc.review.plan.tactics`_.

_`.source-available`: The `source documents`_ are available in
writing. [What is the purpose of "in writing" here and how to express
it now? RB 2023-01-24]

_`.source-approved`: The `source documents`_ will have `exited review`_.
Failing this, they should be mini-reviewed and the fact noted.
Failing this, they should be marked as "UNREVIEWED".

_`.rules-available`: The relevant rules are available in writing.

_`.rules-approved`: The rule documents have exited review. Failing
this, see `.source-approved`_.

_`.brief-check`: The leader has performed a cursory examination and
has found no more than one major defect (see guide.review.class.major
[Needs importing and reference. RB 2023-01-23]) per page. [This
should go further up the list. RB 2023-01-24]

_`.plan`: There is a procedure for the review, including checking
rates for this type of document.

_`.training`: The leader has been formally trained and certified in
Inspection. [This is unrealistic in the public MPS. What can we say?
RB 2023-01-24]

_`.auto-check`: All automatic checks have been performed on the
product document, and it has passed. [What counts as "all"? This
means all the ones that are implemented in the MPS, e.g.
``make test``, CI checks, checks in ``tool/*``, etc. RB 2023-01-24]

.. _`proc.review`: review.rst
.. _`proc.review.entry.criteria`: review.rst#51-review-entry
.. _author: review.rst#3-review-roles
.. _source: review.rst#6-documents
.. _source documents: source_
.. _exited review: review.rst#58-review-exit


A. References
-------------

.. [Gilb_93] "Software Inspection"; Tom Gilb, Dorothy Graham; Addison
Wesley; 1993; ISBN 0-201-63181-4; book.gilb93.


B. Document History
-------------------

Full document history before to 2001 has been lost because this
document was maintained in "Spring", a Lotus Notes information system
at Harlequin Limited. Ravenbrook Limited did not receive a full
revision history when it acquired the MPS from Harlequin's successor.

========== ===== ==================================================
1996-07-24 GRM Created.
2001-10-09 NDL Imported to Perforce.
2023-01-24 RB_ Integrated to MPS Git and prepared for public use.
========== ===== ==================================================

.. _RB: mailto:rb@ravenbrook.com


C. Copyright and License
------------------------

Copyright © 2023 `Ravenbrook Limited <https://www.ravenbrook.com/>`_.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

.. end
Loading
Loading