{"id":26659824,"url":"https://github.com/rocq-community/manifesto","last_synced_at":"2025-04-11T15:11:12.765Z","repository":{"id":27620064,"uuid":"114664048","full_name":"rocq-community/manifesto","owner":"rocq-community","description":"Documentation on goals of the Rocq-community organization, the shared contributing guide and code of conduct.","archived":false,"fork":false,"pushed_at":"2025-03-31T14:02:25.000Z","size":218,"stargazers_count":68,"open_issues_count":37,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-01T02:44:20.915Z","etag":null,"topics":["community-driven","coq","manifesto"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rocq-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-18T16:37:22.000Z","updated_at":"2025-03-31T14:02:26.000Z","dependencies_parsed_at":"2024-05-03T03:00:28.889Z","dependency_job_id":null,"html_url":"https://github.com/rocq-community/manifesto","commit_stats":null,"previous_names":["rocq-community/manifesto"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Fmanifesto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Fmanifesto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Fmanifesto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocq-community%2Fmanifesto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rocq-community","download_url":"https://codeload.github.com/rocq-community/manifesto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248429111,"owners_count":21101783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["community-driven","coq","manifesto"],"created_at":"2025-03-25T11:15:29.801Z","updated_at":"2025-04-11T15:11:12.749Z","avatar_url":"https://github.com/rocq-community.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Contributing][contributing-shield]][contributing-link]\n[![Code of Conduct][conduct-shield]][conduct-link]\n[![Zulip][zulip-shield]][zulip-link]\n\n[contributing-shield]: https://img.shields.io/badge/contributions-welcome-%23f7931e.svg\n[contributing-link]: https://github.com/rocq-community/manifesto/blob/master/CONTRIBUTING.md\n\n[conduct-shield]: https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-%23f15a24.svg\n[conduct-link]: https://github.com/rocq-community/manifesto/blob/master/CODE_OF_CONDUCT.md\n\n[zulip-shield]: https://img.shields.io/badge/chat-on%20zulip-%23c1272d.svg\n[zulip-link]: https://rocq-prover.zulipchat.com/#narrow/stream/237663-rocq-community-devs.20.26.20users\n\n# [\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./logo-white.svg\"\u003e\u003cimg alt=\"Rocq-community logo\" src=\"logo.svg\"\u003e\u003c/picture\u003e](https://github.com/rocq-community) #\n\nA project for a collaborative, community-driven effort for the long-term\nmaintenance and advertisement of packages for the [Rocq Prover][rocq-prover].\n\n*Note that this README (the manifesto) is a work in progress and is meant to be\ncollaboratively improved. Please contribute!*\n\n## Who runs this organization? ##\n\nThis organization is run by volunteer Rocq users. Everyone is welcome\n(you don't need to be a very experienced Rocq user to participate).\nPlease [get involved](CONTRIBUTING.md)!\n\n## What are its goals? ##\n\n### Collaborative maintenance of Rocq packages and tools ###\n\nProjects can be hosted in Rocq-community whenever any of the following is the case:\n\n- the initial author has stopped maintaining the project and someone else is\n  volunteering to do so;\n- the project has become a collective work (several community members are\n  actively working on it);\n- the initial author is still maintaining the project but they want to\n  encourage other community members to participate in the maintenance and\n  possibly take over (and the project is indeed raising interest from the\n  community);\n- the project is a tool of general interest and it makes sense to develop it\n  collaboratively.\n\nEach project under the umbrella of Rocq-community has one or several official\nmaintainer(s), but the maintenance effort is done collaboratively. Users need\nnot be afraid of volunteering to be the official maintainer of a Rocq-community\nproject because they can step down at anytime. Changing the maintainer of a\nRocq-community project can be done very easily without the hassle of moving its\nlocation too.\n\nMaintenance is allowed to go much further than just updating the package to\nkeep it compiling with newer Rocq versions. It can also include refactorization\nof the code, uniformization of the style, merging with other packages, taking\npieces out to put them in other libraries, and even removal of some parts that\nare not raising sufficient interest. These changes must, nonetheless, always be\ndone with consideration for compatibility as soon as the package is a library,\nplugin or tool that has users.\n\n### Collaborative writing of documentation ###\n\nSome Rocq proofs present a particular pedagogical interest because their\nstatements are easy to understand, but they require some non-trivial\nmathematical tools and their mechanization illustrates interesting proof\npatterns, or demonstrate the use of specific libraries. They can be used as\nthe basis for tutorials which explain the tricks and interesting parts.\n\nRocq-community hosts several such documentation projects. Among them,\n[Hydras \u0026 Co.](https://github.com/rocq-community/hydra-battles)\ncollects libraries of formalized mathematics for inspiration and entertainment,\nincluding detailed documentation and exercises. Your contributions are welcome!\n\n### Advertising interesting packages ###\n\nNot all the packages that are transferred to Rocq-community have the same initial\nquality. While this should not stop packages from being taken over, and new\nmaintainers should strive to improve the package quality, some editorial work\nis also required to put forward the most interesting packages, be it for\ntheir usefulness as a library or plugin, because they demonstrate interesting\nproof techniques, or because they represent an important achievement.\n\nCurrently, the [website](https://rocq-community.org) highlights a selection of\npackages with ⭐ and warns about some others with ⚠️ to inform users\nthat some packages are more recommended for reuse than others.\nCome [chat with us][zulip-link] if you want to participate in this\neditorial work.\n\n## FAQ ##\n\n### Contributing ###\n\n- **How can I contribute?**\n\n  We have a shared contributing guide, see [CONTRIBUTING.md](CONTRIBUTING.md).\n  Some specific projects may have additional contributing guidelines.\n\n- **How to propose a new package?**\n\n  This process is documented [here](https://github.com/rocq-community/manifesto/blob/master/CONTRIBUTING.md#proposing-a-new-package).\n\n- **Can I propose a project of which I am the author?**\n\n  Yes, you can propose a project of which you are the author, as a way of\n  preparing to pass on the maintenance to other community members. You can\n  start up by proposing yourself as the primary maintainer for this project;\n  but if you become less available for this task, we'll be able to pass on this\n  role to someone else.\n\n### Position in the Rocq ecosystem ###\n\n- **What is the relation to Rocq's Continuous Integration (CI)?**\n\n  [Rocq's CI][rocq-ci] systematically tests a collection of external libraries\n  and plugins for regression and compatiblity breakage with each proposed change to\n  Rocq before integration. When a library or plugin in Rocq's CI breaks, Rocq developers\n  or contributors will send patches or give instructions how to adapt to the proposed\n  change. A [subset][rocq-community-ci] of Rocq-community packages are included in\n  Rocq's CI, and the process of fixing such packages that break is straightforward\n  since Rocq developers can themselves integrate the required changes.\n\n- **What is the relation to the Rocq package index?**\n\n  The [Rocq package index][package-index] is the present\n  way of distributing Rocq packages using [opam][opam]. As such, all packages of\n  Rocq-community are meant to be listed in the Rocq package index.\n\n- **What is the relation to the Rocq Platform?**\n\n  The [Rocq Platform][platform] is a continuously developed opam-based distribution of\n  Rocq together with a curated selection of generally useful packages. The\n  Platform is currently the officially recommended way to install Rocq. To ensure\n  that packages are compatible with Rocq over time, Platform package maintainers\n  must agree to a form of social contract that, e.g., entails making timely\n  releases as Rocq evolves. While a [subset][rocq-community-platform] of Rocq-community\n  packages are also part of the Rocq Platform and thus conform to Platform rules,\n  Rocq-community packages are not necessarily generally useful or compatible with\n  the Platform. To the Rocq Platform, Rocq-community is one organization among many\n  that host Platform packages.\n\n- **What is the relation to the Rocq Prover Archive?**\n\n  The [Rocq Prover Archive][rocq-archive] organization contains mainly repositories\n  from the old contribs distribution, compatibility testing and maintenance model for Coq.\n  There used to be a form allowing users to submit a package that the Coq development\n  team would then maintain. While distribution now happens through the Rocq package\n  index and compatibility testing is done via Rocq's CI, maintenance of legacy contribs\n  is not done regularly.\n\n  Rocq-community is a proposed replacement for the long-term maintenance of\n  Rocq packages. Whereas contribs were maintained by the Coq development team,\n  Rocq-community is managed by the user community. We encourage users to\n  “adopt” a package (including a legacy contrib) and to push the meaning of\n  “maintenance” further than simply ensuring that the package continues to\n  compile with newer Rocq versions.\n\n### Best practices ###\n\n- **Do the projects of Rocq-community need to have some Continous Integration (CI) setup?**\n\n  Yes, CI plays a big role in keeping code projects more stable over time. In\n  the case of a Rocq package, it helps to ensure that the project stays\n  compatible with the various versions of Rocq that are claimed to be supported\n  (as well as various versions of OCaml in the case of a Rocq plugin).\n\n  Templates for CI and other Rocq-related configuration files are\n  maintained in the [templates][templates] repository.\n\n- **Which versions of Rocq must be supported by projects of Rocq-community?**\n\n  At least the last stable version of Rocq must be supported at any given time.\n  Support for older versions or the development version of Rocq can be decided\n  project by project. Note that supporting the development version of Rocq is\n  a requirement to get into [Rocq's CI][rocq-ci], which can be interesting to get\n  patches from Rocq developers when they introduce a breaking change (this is\n  particularly recommended for plugins).\n\n- **What license to use for a Rocq-community project?**\n\n  The only strict requirement is to use a license that is either\n  [approved as an open source license by OSI][osi-approved-license]\n  or [considered a free software license by FSF][fsf-free-software-license].\n  However, if you create a new project or propose to transfer a project\n  of which you are the sole copyright owner, we strongly encourage you\n  to (re)license your project under one of the following two licenses:\n\n  - [MIT license](https://choosealicense.com/licenses/mit/): a very\n    permissive and popular open source license.  This is the best\n    choice if you want to maximize the reusability of your project.\n  - [MPL-2.0 license](https://choosealicense.com/licenses/mpl-2.0/): a\n    weak [copyleft](https://en.wikipedia.org/wiki/Copyleft) license.\n    You can use this license if you want to restrict the license under\n    which modified versions of your project may be distributed.  It\n    does not limit how larger works may depend on your project.  This\n    license should be preferred over the (historically more prevalent)\n    [LGPL-2.1 license](https://choosealicense.com/licenses/lgpl-2.1/)\n    because it is technically simpler to understand and abide by.\n\n  If neither of these two licenses can be used, we encourage using\n  another license that is both approved as an open source license\n  by OSI and considered a free software license by FSF.\n\n### Process / organizational aspects ###\n\n- **How to remove a package?**\n\n  When a package loses its interest because a newer, better alternative has\n  been found, or for some other reason, the package can be marked as deprecated\n  and stop being maintained. We will generally [archive][archived] the\n  repository rather than removing it completely though. It also happens that\n  we archive a repository because its content has been merged in another one.\n\n- **What kind of permissions do the members have?**\n\n  Members of the Rocq-community organization have write-access to all\n  the repositories.  This permission should be used wisely: only minor\n  fixes should be pushed without going through pull requests, and pull\n  requests should preferably be approved by the project maintainer\n  before getting merged.  Some maintainers may decide to protect\n  branches to enforce that all changes go through pull requests and\n  validate some conditions.  Maintainers are given admin-access on the\n  repositories that they maintain.  All members have the permission to\n  create or transfer new repositories, but they should only do so\n  after going through the [standard\n  process](CONTRIBUTING.md#proposing-a-new-package).  At all times,\n  there should be exactly three (active) owners of the organization.\n  The current owners are Karl Palmskog\n  ([**@palmskog**](https://github.com/palmskog)), Pierre Roux\n  ([**@proux01**](https://github.com/proux01)), and Théo\n  Zimmermann ([**@Zimmi48**](https://github.com/Zimmi48)).\n\n- **What to do in case of conflicts?**\n\n  We will have a governance process to make sure that we can handle conflicts\n  that are bound to arise about the management of specific projects. Please\n  contribute to [meta-issue #2](https://github.com/rocq-community/manifesto/issues/2)\n  which is about this.\n\n### History ###\n\n- **Why this name?**\n\n  The Rocq-community organization takes its inspiration from the similarly-named\n  [Elm Community](https://github.com/elm-community).\n  Here are some other sister organizations:\n  - [OCaml Community](https://github.com/ocaml-community) (officially inspired\n    by Elm Community and Rocq-community)\n  - [Nix community projects](https://github.com/nix-community)\n  - [reasonml-community](https://github.com/reasonml-community)\n\n- **Who made this awesome logo?**\n\n  This logo was designed by Aras from the [openlogos project][openlogos] and\n  was attributed to Rocq-community following a general mobilization of users.\n  Thanks to Aras and to the 94 people who voted for us to get this logo!\n\nIs anything still unclear? Please [open an issue][meta] or\n[chat on Zulip][zulip-link] to ask a question.\n\n[rocq-prover]: https://rocq-prover.org\n\n[osi-approved-license]: https://opensource.org/licenses/alphabetical\n\n[fsf-free-software-license]: https://www.gnu.org/licenses/license-list.html\n\n[rocq-archive]: https://github.com/rocq-archive\n\n[archived]: https://github.com/rocq-community?type=archived\n\n[rocq-ci]: https://github.com/rocq-prover/rocq/blob/master/dev/ci/README.md\n\n[meta]: https://github.com/rocq-community/manifesto/issues/new?template=meta.md\n\n[openlogos]: https://github.com/arasatasaygin/openlogos\n\n[templates]: https://github.com/rocq-community/templates\n\n[package-index]: https://rocq-prover.org/packages\n\n[platform]: https://github.com/rocq-prover/platform\n\n[rocq-community-platform]: https://github.com/search?q=topic%3Arocq-platform+org%3Arocq-community\u0026type=Repositories\n\n[rocq-community-ci]: https://github.com/search?q=topic%3Arocq-ci+org%3Arocq-community\u0026type=Repositories\n\n[opam]: https://opam.ocaml.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocq-community%2Fmanifesto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocq-community%2Fmanifesto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocq-community%2Fmanifesto/lists"}