Skip to content

Commit aa83fea

Browse files
jkingdondigama0
andauthored
Add CONTRIBUTING.md file (#42)
* Add CONTRIBUTING.md file Most of the content here is adapted from various comments by various people on github issues and pull requests. It isn't intended to be a significant departure from how we have been working for the past month or so. * say why Norm isn't maintaining it Co-authored-by: Mario Carneiro <[email protected]>
1 parent 2d85a12 commit aa83fea

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed

CONTRIBUTING.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# Contributing and Acceptance
2+
3+
We're a friendly community, and we would love to have more collaborators!
4+
5+
## Maintenance mode
6+
7+
We view metamath-exe as being in maintenance mode. Although we do envisage
8+
fixing bugs (at least serious ones) and making small updates to reflect
9+
ongoing changes to our processes or metamath proof databases (especially
10+
those in the https://github.com/metamath/set.mm repository), we do not
11+
encourage developing significant new functionality in metamath-exe.
12+
13+
Why? metamath.exe is the oldest of the metamath tools and is showing its
14+
age in a lot of ways including that C is probably not the language that
15+
anyone would choose for this kind of code today.
16+
17+
Here's what Norm Megill, who wrote metamath-exe and did almost all of
18+
its maintenance until his passing in 2021, said:
19+
20+
> Another issue with the metamath program that people have requested is
21+
> putting it on GitHub. However, strange as it may seem I actually don't
22+
> want to encourage major contributions at this point in time. Almost
23+
> every unsolicited patch I've been sent has had to be rewritten by me
24+
> to fix memory leaks and other issues, and it can take a lot of my time
25+
> to analyze them in complete detail. C is a dangerous language if you
26+
> don't have intimate knowledge of all details of the program's data
27+
> structures etc. If I put it on GitHub, I would dread having someone
28+
> make a massive change that would require a week or more of my time
29+
> to analyze. Ensuring bug-free code can take more time than it took
30+
> to write it. (metamath mailing list, 2017)
31+
32+
Although metamath-exe is now on github, we endorse the general sentiment
33+
about hazards of making major contributions to metamath-exe.
34+
35+
Are we saying we want no major contributions to metamath tools? Not at
36+
all! Some work on metamath tools (for example, the only
37+
implementation to date of the rather important definition checker) have been
38+
done in [mmj2](https://github.com/digama0/mmj2) (although that code
39+
has its own issues), and a lot of the recent work towards community
40+
maintained metamath tools has focused on the
41+
[metamath-knife](https://github.com/david-a-wheeler/metamath-knife)
42+
verifier and/or tools built on top of it.
43+
44+
Having said that, metamath.exe does a lot of things which are not covered
45+
by other tools, and we expect that replacements, for example based on
46+
metamath-knife, will not be written overnight. We aren't making a rigid
47+
"never change metamath-exe" rule but we are saying that we expect such
48+
changes will be primarily to tweak parts of metamath-exe which are getting
49+
in our way, more so than expand what it can do.
50+
51+
## Coding standards
52+
53+
No need to worry about versions of the C language older than C99.
54+
We would like to have our code usable by the
55+
[CompCert C compiler](https://compcert.org/compcert-C.html) (as
56+
described on that page it supports almost full C11, so this isn't
57+
a big constraint). We think other compilers people are using probably
58+
support C11 but if you want to use a feature not found in C99
59+
this might be work asking about in your pull request description.
60+
61+
Some existing parts of metamath-exe have commented out code as a way of
62+
showing alternative possibilities or old versions of the code. Now that
63+
it is in git, we plan to remove most or all of this.
64+
65+
We suspect some features of metamath-exe are being used lightly if at
66+
all. We are potentially open to removing them to make maintenance
67+
easier, but this should be done carefully (for example by proposing a
68+
github issue, trying to find existing users, suggesting alternatives,
69+
and the like). We'd hate to have this sort of thing prevent anyone
70+
from upgrading to the latest version of metamath-exe.
71+
72+
## What are the requirements for acceptance (merging)?
73+
74+
We don't have as many automated checks on this repository as
75+
would be ideal. So unless/until we add that, some of the following
76+
may need to be checked manually.
77+
78+
We expect all code merged to compile and not break existing
79+
functionality.
80+
81+
To be merged, a pull request must be approved by a different existing
82+
contributor (someone who's already had some previous contributions accepted).
83+
You can approve a change by viewing the pull request, selecting
84+
the tab "Files Changed", clicking on the "Review Changes" button,
85+
clicking on "Approve", and submitting the review.
86+
You can also approve by using the comment "+1".
87+
Feel free to approve something others have approved, that makes it clear
88+
there's no serious issue.
89+
90+
Once a pull request is approved (other than the person
91+
originally proposing the change), any maintainer can merge it,
92+
including the approver.
93+
A maintainer is a member or owner of the Metamath GitHub organization.
94+
95+
We especially encourage discussion and, perhaps, letting a bit of time
96+
pass before merging, if a change seems large or risky (given the general
97+
philosophy described in the "Maintenance mode" section above).
98+
99+
We encourage changes to be smaller, focusing on a single logical idea.
100+
That makes changes much easier to review.
101+
It also makes it easy to accept some changes while not accepting others.
102+
103+
The following people are active and are willing to be contacted
104+
concerning metamath-exe. Please propose a change to this file if you want
105+
to be listed here.
106+
107+
* Mario Carneiro (@digama0)
108+
109+
## For more information
110+
111+
For more general information, see the [README.md](README.md) file.

0 commit comments

Comments
 (0)