Skip to content

Draft governance model #3188

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Abstract

The purpose of this document is to formalize the governance process used by the
tskit-dev community for core software projects, to clarify who has what responsibilities,
and how decisions are made on changes to those responsibilities.

tskit-dev is an open and inclusive community. Anyone with an interest in the
software and science is welcome to contribute discussion, and propose changes to code,
documentation or website content, as long as they follow the
code of conduct](https://github.com/tskit-dev/.github/blob/main/CODE_OF_CONDUCT.md).

# Scope

The governance model described in this document applies to the core
repositories of the tskit software ecosystem. These are:

- [tskit - C and Python API](http://github.com/tskit-dev/tskit)
- [msprime - coalescent simulator](http://github.com/tskit-dev/msprime)
- [tszip - compression library for tskit](http://github.com/tskit-dev/tszip)
- [tskit-site - website for the ecosystem](http://github.com/tskit-dev/tskit-site)
- [kastore - key-value store](http://github.com/tskit-dev/kastore)
- [administrative](http://github.com/tskit-dev/administrative)
- [.github - common config](http://github.com/tskit-dev/.github)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great to have this laid out. Do we want explicitly say the other repos on the tskit-dev workspace (e.g. tscompress, tsinfer) may become the responsibility of other maintainers if need be, or is that too prescriptive?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about this, but decided, as they are out of scope for this document, that it shouldn't say anything about them.


# Roles

## Contributors

Anyone is welcome to contribute to the tskit-dev project by, for example,

- proposing, discussing, or reviewing a change to the code, documentation, or specification
via a GitHub pull request to the above repositories;
- reporting a GitHub issue or starting a discussion on the above repositories;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the process for someone getting added to the github org? (I don't know, just asking the question for visibility)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to set this up and have a clean out of permissions across the repos. It's under settings on the org page.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I meant what's the process for deciding whether someone should be in the Org or not. That's something we should document

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds good but in vague terms; too prescriptive might go out of date (as for instance perhaps possible github roles change)

perhaps some general principles - like "the steering committee will choose roles in the github org so that X Y and Z"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah I see this has been added below


Contributors must abide by the [CODE OF CONDUCT](https://github.com/tskit-dev/.github/blob/main/CODE_OF_CONDUCT.md).


## Maintainers

Maintainers are those who have the "Maintain" role on a given repository. They are able
to merge pull requests, manage issues, and perform other administrative tasks on
that repository. Maintainers are added and removed by a decision of the tskit
Steering Council (TSC). This role is defined on a per-repository basis.


## tskit Steering Council

The tskit Steering Council (TSC) has the following responsibilities:

- Management of the tskit-dev GitHub organization, including the addition and removal of members.
- Administration of the repositories listed above.
- Addition and removal of maintainers to those repositories.
- Addition and removal of members of the tskit-dev Slack.
- Addition and removal of repositories from this governance model.
- Approval of changes to this governance model.
- Resolution of disputes between maintainers and contributors.
- Response to emails on the admin@tskit.dev address.
- Management of release artifacts on package indexes such as PyPI, conda-forge.

The steering council consists of a small number of people. This should always be an odd number to ensure a simple majority vote outcome is always possible. Currently this is:

* [Jerome Kelleher](https://github.com/jeromekelleher)

* [Peter Ralph](https://github.com/petrelharp)

* [Yan Wong](https://github.com/hyanwong)


TSC members may be removed by consensus of the remaining TSC members, or may resign voluntarily. New TSC members are added by unanimous consent of existing TSC members.

# Decision Making Process

Decisions about the future of the project are made through discussion with all
members of the community. All non-sensitive project management discussion takes
place in the issue trackers of the appropriate repositories or other public forums.
Where possible decisions and discussions of the steering council should be documented as issues on the [administrative](https://github.com/tskit-dev/administrative) repository.

tskit uses a "consensus-seeking" process for making decisions. The group tries to
find a resolution that has no open objections among maintainers and the TSC. All
are expected to distinguish between fundamental objections to a proposal and minor perceived flaws that they can live with and not hold up the decision-making process for the latter. If no option can be found without objections, the decision is escalated to the TSC, which will use consensus to come to a resolution. In the unlikely event that consensus cannot be reached within the TSC, the proposal will move forward if it has the support of a simple majority of the TSC.

Loading