|
| 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