aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Dénès2019-03-11 11:14:35 +0100
committerMaxime Dénès2019-03-11 11:14:35 +0100
commitaf5582cbfd91aacd5515e5e6fef6bec0107a0049 (patch)
tree7ca6d98762c7b0f305fe76f1dde148a23a6d9f8f
parent660732f055021bb4ed3d0a4613aac719cb8f3556 (diff)
parentc5ea163f16392e230c6791275fc192da9c524dcb (diff)
Merge PR #9570: Refresh contributing guide and README.
Ack-by: Zimmi48 Ack-by: ejgallego Reviewed-by: maximedenes
-rw-r--r--CONTRIBUTING.md196
-rw-r--r--README.md22
2 files changed, 154 insertions, 64 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bb0e388cdd..31fa3d2c4a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,34 +1,72 @@
# Contributing to Coq
-Thank you for your interest in contributing to Coq! There are many ways to contribute, and we appreciate all of them.
+Thank you for your interest in contributing to Coq! There are many ways to
+contribute, and we appreciate all of them. Please make sure you read and
+abide by the [Code of Conduct](CODE_OF_CONDUCT.md).
## Bug Reports
-Bug reports are enormously useful to identify issues with Coq; we can't fix what we don't know about. To report a bug, please open an issue in the [Coq issue tracker](https://github.com/coq/coq/issues) (you'll need a GitHub account). You can file a bug for any of the following:
-
-- An anomaly. These are always considered bugs, so Coq will even ask you to file a bug report!
-- An error you didn't expect. If you're not sure whether it's a bug or intentional, feel free to file a bug anyway. We may want to improve the documentation or error message.
-- Missing documentation. It's helpful to track where the documentation should be improved, so please file a bug if you can't find or don't understand some bit of documentation.
-- An error message that wasn't as helpful as you'd like. Bonus points for suggesting what information would have helped you.
-- Bugs in CoqIDE should also be filed in the [Coq issue tracker](https://github.com/coq/coq/issues). Bugs in the Emacs plugin should be filed against [ProofGeneral](https://github.com/ProofGeneral/PG/issues), or against [company-coq](https://github.com/cpitclaudel/company-coq/issues) if they are specific to company-coq features.
-
-It would help if you search the existing issues before reporting a bug. This can be difficult, so consider it extra credit. We don't mind duplicate bug reports.
-
-When it applies, it's extremely helpful for bug reports to include sample code, and much better if the code is self-contained and complete. It's not necessary to minimize your bug or identify precisely where the issue is, since someone else can often do this if you include a complete example. We tend to include the code in the bug description itself, but if you have a very large input file then you can add it as an attachment.
-
-If you want to minimize your bug (or help minimize someone else's) for more extra credit, then you can use the [Coq bug minimizer](https://github.com/JasonGross/coq-tools) (specifically, the bug minimizer is the `find-bug.py` script in that repo).
+Bug reports are enormously useful to identify issues with Coq; we can't fix
+what we don't know about. To report a bug, please open an issue in the
+[Coq issue tracker][] (you'll need a GitHub
+account). You can file a bug for any of the following:
+
+- An anomaly. These are always considered bugs, so Coq will even ask you to
+ file a bug report!
+- An error you didn't expect. If you're not sure whether it's a bug or
+ intentional, feel free to file a bug anyway. We may want to improve the
+ documentation or error message.
+- Missing documentation. It's helpful to track where the documentation should
+ be improved, so please file a bug if you can't find or don't understand some
+ bit of documentation.
+- An error message that wasn't as helpful as you'd like. Bonus points for
+ suggesting what information would have helped you.
+- Bugs in CoqIDE should also be filed in the
+ [Coq issue tracker][].
+ Bugs in the Emacs plugin should be filed against
+ [ProofGeneral](https://github.com/ProofGeneral/PG/issues), or against
+ [company-coq](https://github.com/cpitclaudel/company-coq/issues) if they are
+ specific to company-coq features.
+
+It would help if you search the existing issues before reporting a bug. This
+can be difficult, so consider it extra credit. We don't mind duplicate bug
+reports. If unsure, you are always very welcome to ask on our [Discourse forum][]
+or [Gitter chat][] before, after, or while writting a bug report
+
+When it applies, it's extremely helpful for bug reports to include sample
+code, and much better if the code is self-contained and complete. It's not
+necessary to minimize your bug or identify precisely where the issue is,
+since someone else can often do this if you include a complete example. We
+tend to include the code in the bug description itself, but if you have a
+very large input file then you can add it as an attachment.
+
+If you want to minimize your bug (or help minimize someone else's) for more
+extra credit, then you can use the
+[Coq bug minimizer](https://github.com/JasonGross/coq-tools) (specifically,
+the bug minimizer is the `find-bug.py` script in that repo).
+
+### Triaging bug reports
+
+Triaging bug reports (adding labels, closing outdated / resolved bugs)
+requires you to be granted some permissions. You may request members of the
+**@coq/core** team to add you to the contributors team. They can do so using
+this link: <https://github.com/orgs/coq/teams/contributors/members?add=true>.
## Pull requests
**Beginner's guide to hacking Coq: [`dev/doc/README.md`](dev/doc/README.md)** \
**Development information and tools: [`dev/README.md`](dev/README.md)**
-If you want to contribute a bug fix or feature yourself, pull requests on the [GitHub repository](https://github.com/coq/coq) are the way to contribute directly to the Coq implementation. We recommend you create a fork of the repository on GitHub and push your changes to a new "topic branch" in that fork. From there you can follow the [GitHub pull request documentation](https://help.github.com/articles/about-pull-requests/) to get your changes reviewed and pulled into the Coq source repository.
+If you want to contribute a bug fix or feature yourself, pull requests on
+the [GitHub repository](https://github.com/coq/coq) are the way to contribute
+directly to the Coq implementation. We recommend you create a fork of the
+repository on GitHub and push your changes to a new "topic branch" in that
+fork. From there you can follow the
+[GitHub pull request documentation](https://help.github.com/articles/about-pull-requests/)
+to get your changes reviewed and pulled into the Coq source repository.
Documentation for getting started with the Coq sources is located in various
files in [`dev/doc`](dev/doc) (for example, [debugging.md](dev/doc/debugging.md)).
-For further help with the Coq sources, feel free to join
-the [Coq Gitter chat](https://gitter.im/coq/coq) and ask questions.
Please make pull requests against the `master` branch.
@@ -41,10 +79,10 @@ get one—, and the year of your contribution).
It's helpful to run the Coq test suite with `make test-suite` before submitting
your change. Our CI runs this test suite and lots of other tests, including
-building external Coq developments, on every pull request, but these results
+building external Coq projects, on every pull request, but these results
take significantly longer to come back (on the order of a few hours). Running
the test suite locally will take somewhere around 10-15 minutes. Refer to
-[`dev/ci/README.md`](dev/ci/README.md#information-for-developers) for more
+[`dev/ci/README-developers.md`](dev/ci/README-developers.md) for more
information on CI tests, including how to run them on your private branches.
If your pull request fixes a bug, please consider adding a regression test as
@@ -53,19 +91,30 @@ well. See [`test-suite/README.md`](test-suite/README.md) for how to do so.
If your pull request fixes a critical bug (a bug allowing a proof of `False`),
please add an entry to [`dev/doc/critical-bugs`](/dev/doc/critical-bugs).
-Don't be alarmed if the pull request process takes some time. It can take a few days to get feedback, approval on the final changes, and then a merge. Coq doesn't release new versions very frequently so it can take a few months for your change to land in a released version. That said, you can start using the latest Coq `master` branch to take advantage of all the new features, improvements, and fixes.
+Don't be alarmed if the pull request process takes some time. It can take a
+few days to get feedback, approval on the final changes, and then a merge.
+Do not hesitate to ping the reviewers if it takes longer than this.
+Coq doesn't release new versions very frequently so it can take a few months
+for your change to land in a released version. That said, you can start using
+the latest Coq `master` branch to take advantage of all the new features,
+improvements, and fixes.
-Whitespace discipline (do not indent using tabs, no trailing spaces, text files end with newlines) is checked by the `lint` job on GitLab CI (using `git diff --check`). We ship a [`dev/tools/pre-commit`](/dev/tools/pre-commit) git hook which fixes these errors at commit time. `configure` automatically sets you up to use it, unless you already have a hook at `.git/hooks/pre-commit`.
+Whitespace discipline (do not indent using tabs, no trailing spaces, text
+files end with newlines) is checked by the `lint` job on GitLab CI (using
+`git diff --check`). We ship a [`dev/tools/pre-commit`](/dev/tools/pre-commit)
+git hook which fixes these errors at commit time. `configure` automatically
+sets you up to use it, unless you already have a hook at `.git/hooks/pre-commit`.
-Here are a few tags Coq developers may add to your PR and what they mean. In general feedback and requests for you as the pull request author will be in the comments and tags are only used to organize pull requests.
+Here are a few tags Coq developers may add to your PR and what they mean. In
+general feedback and requests for you as the pull request author will be in
+the comments and tags are only used to organize pull requests.
- [needs: rebase][rebase-label] indicates the PR should be rebased on top of
the latest base branch (usually `master`). See the
[GitHub documentation](https://help.github.com/articles/about-git-rebase/)
for a brief introduction to using `git rebase`.
- This label will be automatically added if you open or synchronize your PR and
- it is not up-to-date with the base branch. So please, do not forget to rebase
- your branch every time you update it.
+ We generally ask you to rebase only when there are merge conflicts or if
+ the PR has been opened for a long time and we want a fresh CI run.
- [needs: fixing][fixing-label] indicates the PR needs a fix, as discussed in the comments.
- [needs: benchmarking][benchmarking-label] and [needs: testing][testing-label]
indicate the PR needs testing beyond what the test suite can handle.
@@ -76,45 +125,86 @@ Here are a few tags Coq developers may add to your PR and what they mean. In gen
To learn more about the merging process, you can read the
[merging documentation for Coq maintainers](dev/doc/MERGING.md).
-## Documentation
-
-Currently the process for contributing to the documentation is the same as for changing anything else in Coq, so please submit a pull request as described above.
+[rebase-label]: https://github.com/coq/coq/pulls?utf8=%E2%9C%93&q=is%3Aopen%20is%3Apr%20label%3A%22needs%3A%20rebase%22
+[fixing-label]: https://github.com/coq/coq/pulls?q=is%3Aopen+is%3Apr+label%3A%22needs%3A+fixing%22
+[benchmarking-label]: https://github.com/coq/coq/pulls?q=is%3Aopen+is%3Apr+label%3A%22needs%3A+benchmarking%22
+[testing-label]: https://github.com/coq/coq/pulls?q=is%3Aopen+is%3Apr+label%3A%22needs%3A+testing%22
-Our issue tracker includes a flag to mark bugs related to documentation. You can view a list of documentation-related bugs using a [GitHub issue search](https://github.com/coq/coq/issues?q=is%3Aopen+is%3Aissue+label%3A%22kind%3A+documentation%22). Many of these bugs can be fixed by contributing writing, without knowledge of Coq's OCaml source code.
+[jenkins-doc]: https://github.com/coq/coq/wiki/Jenkins-(automated-benchmarking)
-The sources for the [Coq reference manual](https://coq.inria.fr/distrib/current/refman/) are at [`doc/sphinx`](/doc/sphinx). These are written in reStructuredText and compiled to HTML and PDF with [Sphinx](http://www.sphinx-doc.org/).
+## Documentation
-You may also contribute to the informal documentation available in [Cocorico](https://github.com/coq/coq/wiki) (the Coq wiki), and the [Coq FAQ](https://github.com/coq/coq/wiki/The-Coq-FAQ). Both of these are editable by anyone with a GitHub account.
+Currently the process for contributing to the documentation is the same as
+for changing anything else in Coq, so please submit a pull request as
+described above.
-## Following the development
+Our issue tracker includes a flag to mark bugs related to documentation.
+You can view a list of documentation-related bugs using a
+[GitHub issue search](https://github.com/coq/coq/issues?q=is%3Aopen+is%3Aissue+label%3A%22kind%3A+documentation%22).
+Many of these bugs can be fixed by contributing writing, without knowledge
+of Coq's OCaml source code.
-If you want to follow the development activity around Coq, you are encouraged
-to subscribe to the [Coqdev mailing list](https://sympa.inria.fr/sympa/info/coqdev).
-This mailing list has reasonably low traffic.
+The sources for the [Coq reference manual](https://coq.inria.fr/distrib/current/refman/)
+are at [`doc/sphinx`](/doc/sphinx). These are written in reStructuredText
+and compiled to HTML and PDF with [Sphinx](http://www.sphinx-doc.org/).
-You may also choose to use GitHub feature to
-["watch" this repository](https://github.com/coq/coq/subscription), but be
-advised that this means receiving a very large number of notifications.
-GitHub gives [some advice](https://blog.github.com/2017-07-18-managing-large-numbers-of-github-notifications/#prioritize-the-notifications-you-receive)
-on how to configure your e-mail client to filter these notifications.
-A possible alternative is to deactivate e-mail notifications and manage your
-GitHub web notifications using a tool such as [Octobox](http://octobox.io/).
+You will find information on how to build the documentation in
+[`doc/README.md`](doc/README.md) and information about the specificities of
+the Coq Sphinx format in [`doc/sphinx/README.rst`](doc/sphinx/README.rst).
-## Contributing outside this repository
+You may also contribute to the informal documentation available in
+[Cocorico](https://github.com/coq/coq/wiki) (the Coq wiki), and the
+[Coq FAQ](https://github.com/coq/coq/wiki/The-Coq-FAQ). Both of these are
+editable by anyone with a GitHub account.
-There are many useful ways to contribute to the Coq ecosystem that don't involve the Coq repository.
+## Where to get help (with the Coq source code, or anything else)
-Tutorials to teach Coq, and especially to teach particular advanced features, would be much appreciated. Some tutorials are listed on the [Coq website](https://coq.inria.fr/documentation). If you would like to add a link to this list, please make a pull request against the Coq website repository at https://github.com/coq/www.
+We have a [Discourse forum][] (see in particular the [Coq development category][])
+and a [Gitter chat][]. Feel free to join any of them and ask questions.
+People are generally happy to help and very reactive.
-External plugins / libraries contribute to create a successful ecosystem around Coq. If your external development is mature enough, you may consider submitting it for addition to our CI tests. Refer to [`dev/ci/README.md`](/dev/ci/README.md) for more information.
+[Coq development category]: https://coq.discourse.group/c/coq-development
-Ask and answer questions on [Stack Exchange](https://stackexchange.com/filters/299857/questions-tagged-coq-on-stackexchange-sites) which has a helpful community of Coq users.
+## Watching the repository
-Hang out on the Coq IRC channel, `irc://irc.freenode.net/#coq`, and help answer questions.
+["Watching" this repository](https://github.com/coq/coq/subscription)
+can result in a very large number of notifications. We advise that if
+you do, either [confifure your mailbox](https://blog.github.com/2017-07-18-managing-large-numbers-of-github-notifications/#prioritize-the-notifications-you-receive)
+to handle incoming notifications efficiently, or you read your
+notifications within a web browser. You can configure how you receive
+notifications in [your GitHub settings](https://github.com/settings/notifications),
+you can use the GitHub interface to mark as read, save for later or
+mute threads. You can also manage your GitHub web notifications using
+a tool such as [Octobox](http://octobox.io/).
-[rebase-label]: https://github.com/coq/coq/pulls?utf8=%E2%9C%93&q=is%3Aopen%20is%3Apr%20label%3A%22needs%3A%20rebase%22
-[fixing-label]: https://github.com/coq/coq/pulls?q=is%3Aopen+is%3Apr+label%3A%22needs%3A+fixing%22
-[benchmarking-label]: https://github.com/coq/coq/pulls?q=is%3Aopen+is%3Apr+label%3A%22needs%3A+benchmarking%22
-[testing-label]: https://github.com/coq/coq/pulls?q=is%3Aopen+is%3Apr+label%3A%22needs%3A+testing%22
+## Contributing outside this repository
-[jenkins-doc]: https://github.com/coq/coq/wiki/Jenkins-(automated-benchmarking)
+There are many useful ways to contribute to the Coq ecosystem that don't
+involve the Coq repository.
+
+Tutorials to teach Coq, and especially to teach particular advanced features,
+are much appreciated. Some tutorials are listed on the
+[Coq website](https://coq.inria.fr/documentation). If you would like to add
+a link to this list, please make a pull request against the Coq website
+repository at <https://github.com/coq/www>.
+
+External plugins / libraries contribute to create a successful ecosystem
+around Coq. If your external development is mature enough, you may consider
+submitting it for addition to our CI tests. Refer to
+[`dev/ci/README-users.md`](dev/ci/README-users.md) for more information.
+
+Some Coq packages are not maintained by their authors anymore even if they
+were useful (for instance because they changed jobs). The coq-community
+organization is a place for people to take over the maintenance of such
+useful packages. If you want to contribute by becoming a maintainer, you can
+find a list of packages waiting for a maintainer [here](https://github.com/coq-community/manifesto/issues?q=is%3Aissue+is%3Aopen+label%3Amaintainer-wanted).
+You can also propose a package that is not listed. Find out more about
+coq-community in [the manifesto's README](https://github.com/coq-community/manifesto).
+
+Ask and answer questions on our [Discourse forum][], on [Stack Exchange][],
+and on the Coq IRC channel (`irc://irc.freenode.net/#coq`).
+
+[Coq issue tracker]: https://github.com/coq/coq/issues
+[Discourse forum]: https://coq.discourse.group/
+[Gitter chat]: https://gitter.im/coq/coq
+[Stack Exchange]: https://stackexchange.com/filters/299857/questions-tagged-coq-on-stackexchange-sites
diff --git a/README.md b/README.md
index f332bf5db0..ef80736e1a 100644
--- a/README.md
+++ b/README.md
@@ -68,25 +68,25 @@ and the [Coq FAQ](https://github.com/coq/coq/wiki/The-Coq-FAQ),
for additional user-contributed documentation.
## Changes
+
There is a file named [`CHANGES.md`](CHANGES.md) that explains the differences and the
incompatibilities since last versions. If you upgrade Coq, please read
it carefully.
-## The Coq Club
-The Coq Club moderated mailing list is meant to be a standard way
-to discuss questions about the Coq system and related topics. The
-subscription link can be found at [coq.inria.fr/community](http://coq.inria.fr/community).
+## Questions and discussion
+
+We have a number of channels to reach the user community and the
+development team:
-The topics to be discussed in the club should include:
+- Our [Discourse forum](https://coq.discourse.group).
+- Our mailing list, the [Coq-Club](https://sympa.inria.fr/sympa/info/coq-club).
+- Our [Gitter channel][gitter-link], which is a good way to reach
+ developers for quick chat and development questions.
-* technical problems;
-* questions about proof developments;
-* suggestions and questions about the implementation;
-* announcements of proofs;
-* theoretical questions about typed lambda-calculi which are
- closely related to Coq.
+See also [coq.inria.fr/community](https://coq.inria.fr/community.html).
## Bugs report
+
Please report any bug / feature request in [our issue tracker](https://github.com/coq/coq/issues).
To be effective, bug reports should mention the OCaml version used