Note that this README (the manifesto) is a work in progress and is meant to be collaboratively improved. Please contribute!*
OCaml-community is a GitHub organization dedicated to the collaborative and community-driven long-term maintenance of OCaml packages.
In other words, the organization provides a place to host open source OCaml packages that benefit from collective maintenance.
Unmaintained packages that are of significant interest can be adopted by ocaml-community. Maintenance will then be performed collaboratively by the community. An official maintainer will be assigned to individual packages to make decisions about pull requests where possible.
At minimum, maintenance consists of updating software to keep it working over time, as well as maintaining the corresponding OPAM package. It also includes adding needed features, refactoring code, adding and improving documentation, improving the style of the code, adding tests, etc.
Changes made during maintenance should take into account the needs of the existing user community, including the need for backward compatibility.
This organization is run by volunteers from the OCaml community. Everyone is welcome (you don't need to be a very experienced OCaml programmer to participate).
We currently follow (roughly) the following process:
meta repository. The issue must contain:
ocaml-community
organization. This will preserve things like existing issues and
pull requests.ocaml-community organization, they will be added as collaborators
on that repository with commit privileges.dune.CODEOWNERS are expected to
handle pull requests and submitted issues with reasonable speed,
and are expected to keep the package compiling as new versions of
OCaml are released. If a maintainer cannot continue such duties, or
requires assistance, they should ask by filing an issue on the
meta repository.Why the name ocaml-community?
The ocaml-community organization takes its inspiration from the similarly-named elm-community and coq-community projects.
What is the difference between this and the ocaml organization's repositories?
The official ocaml organization is for maintaining the OCaml compiler itself, OPAM, odoc, and other key infrastructural software. The ocaml-community GitHub organization is for adopting and maintaining packages that are of widespread use but might lack active maintainers.
Can I propose ocaml-community adopt a project I wrote?
Yes, you can propose a project you wrote, as a way of preparing to pass on the maintenance to other community members.
How can I propose changes to a package, or to community documentation like this very file?
Simply make a pull request. You can also open an issue requesting commit access.
Will all projects in ocaml-community have some Continuous Integration (CI) set up?
CI and automated testing is important for keeping code well
maintained. We currently make use of the
GitHub Actions system,
and we suggest that all repositories added to ocaml-community
have a workflow set up to build and run tests.
Contributors to our repositories are expected to behave in a friendly and welcoming manner. When people contribute fixes to a project you're helping to maintain, remember that they're spending time and effort improving open source software, often with no compensation other than the thanks and good-will of other people. Be nice, and thank them for the work they've done.
If you don't like some technical aspect of a proposal or contribution, then try to convey that in a polite and friendly manner. We're all trying to make the best possible technical decisions to improve software used by the OCaml community, and being rude to others interferes with making clear decisions, alienates valuable contributors, and makes everyone's life more stressful.
If, say, someone is angry and irate when they post a bug report, there is no reason to reply in a like manner — de-escalate the situation, don't throw fuel on the fire. (Everyone has bad days, and there's no reason to turn someone else's bad mood into a sustained argument.)
It is especially important to never make a technical discussion personal. Don't make personal attacks against other people, and in fact, avoid discussing other people when you should be discussing technical issues. When posting in the issue and pull request trackers, stick to discussion of the technical merits of a request, and be polite while you're doing it. Don't stray away from technical topics. Never call an idea "stupid"; it's both insulting and uninformative. Instead, politely explain what the problems with a proposal are.
If the other person isn't being polite, don't respond in kind, it only escalates things. At most, very, very, gently point them at this text. If the other person's bad behavior is difficult to ignore, or is habitual, or they have become a problem for the community, ask the owners of the OCaml-community organization to intervene. We will not disclose that you have complained without your permission. We will attempt to get the person in question to change their behavior, or, if that appears to be futile, we will ban them from further participation in the community.
(None of this should need saying, as you should probably try to be polite throughout your life regardless of the situation. Being nice, even when you're under stress or the other person isn't being nice, is always the best policy.)
We expect contributors:
We expect our administrators:
We expect our project maintainers:
Note that this README (the manifesto) is a work in progress and is meant to be collaboratively improved. Please contribute!*
OCaml-community is a GitHub organization dedicated to the collaborative and community-driven long-term maintenance of OCaml packages.
In other words, the organization provides a place to host open source OCaml packages that benefit from collective maintenance.
Unmaintained packages that are of significant interest can be adopted by ocaml-community. Maintenance will then be performed collaboratively by the community. An official maintainer will be assigned to individual packages to make decisions about pull requests where possible.
At minimum, maintenance consists of updating software to keep it working over time, as well as maintaining the corresponding OPAM package. It also includes adding needed features, refactoring code, adding and improving documentation, improving the style of the code, adding tests, etc.
Changes made during maintenance should take into account the needs of the existing user community, including the need for backward compatibility.
This organization is run by volunteers from the OCaml community. Everyone is welcome (you don't need to be a very experienced OCaml programmer to participate).
We currently follow (roughly) the following process:
meta repository. The issue must contain:
ocaml-community
organization. This will preserve things like existing issues and
pull requests.ocaml-community organization, they will be added as collaborators
on that repository with commit privileges.dune.CODEOWNERS are expected to
handle pull requests and submitted issues with reasonable speed,
and are expected to keep the package compiling as new versions of
OCaml are released. If a maintainer cannot continue such duties, or
requires assistance, they should ask by filing an issue on the
meta repository.Why the name ocaml-community?
The ocaml-community organization takes its inspiration from the similarly-named elm-community and coq-community projects.
What is the difference between this and the ocaml organization's repositories?
The official ocaml organization is for maintaining the OCaml compiler itself, OPAM, odoc, and other key infrastructural software. The ocaml-community GitHub organization is for adopting and maintaining packages that are of widespread use but might lack active maintainers.
Can I propose ocaml-community adopt a project I wrote?
Yes, you can propose a project you wrote, as a way of preparing to pass on the maintenance to other community members.
How can I propose changes to a package, or to community documentation like this very file?
Simply make a pull request. You can also open an issue requesting commit access.
Will all projects in ocaml-community have some Continuous Integration (CI) set up?
CI and automated testing is important for keeping code well
maintained. We currently make use of the
GitHub Actions system,
and we suggest that all repositories added to ocaml-community
have a workflow set up to build and run tests.
Contributors to our repositories are expected to behave in a friendly and welcoming manner. When people contribute fixes to a project you're helping to maintain, remember that they're spending time and effort improving open source software, often with no compensation other than the thanks and good-will of other people. Be nice, and thank them for the work they've done.
If you don't like some technical aspect of a proposal or contribution, then try to convey that in a polite and friendly manner. We're all trying to make the best possible technical decisions to improve software used by the OCaml community, and being rude to others interferes with making clear decisions, alienates valuable contributors, and makes everyone's life more stressful.
If, say, someone is angry and irate when they post a bug report, there is no reason to reply in a like manner — de-escalate the situation, don't throw fuel on the fire. (Everyone has bad days, and there's no reason to turn someone else's bad mood into a sustained argument.)
It is especially important to never make a technical discussion personal. Don't make personal attacks against other people, and in fact, avoid discussing other people when you should be discussing technical issues. When posting in the issue and pull request trackers, stick to discussion of the technical merits of a request, and be polite while you're doing it. Don't stray away from technical topics. Never call an idea "stupid"; it's both insulting and uninformative. Instead, politely explain what the problems with a proposal are.
If the other person isn't being polite, don't respond in kind, it only escalates things. At most, very, very, gently point them at this text. If the other person's bad behavior is difficult to ignore, or is habitual, or they have become a problem for the community, ask the owners of the OCaml-community organization to intervene. We will not disclose that you have complained without your permission. We will attempt to get the person in question to change their behavior, or, if that appears to be futile, we will ban them from further participation in the community.
(None of this should need saying, as you should probably try to be polite throughout your life regardless of the situation. Being nice, even when you're under stress or the other person isn't being nice, is always the best policy.)
We expect contributors:
We expect our administrators:
We expect our project maintainers: