-
Notifications
You must be signed in to change notification settings - Fork 17
Add DANDI governance document #204
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
Open
kabilar
wants to merge
53
commits into
dandi:master
Choose a base branch
from
kabilar:governance-doc
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
53 commits
Select commit
Hold shift + click to select a range
6c1ad6c
Create governance document with sections 1,2,4
kabilar f49306c
Add section 3
kabilar 0cb9fd8
Add section 5
kabilar c051cfe
Update navigation
kabilar 28c50c3
Add `Amendments to Project Governance` section
kabilar 5689ba4
Add `Documentation` section
kabilar 6f635f6
Add `Communication` section
kabilar 726f856
Add `Sunset Policy` section
kabilar f7f4194
Add `Releases` section
kabilar c450e97
Add `Community` section
kabilar 3d1fd85
Add `Licenses` section
kabilar 03280c1
Add `Security` section
kabilar 64914af
Add `Pull Request Workflow` section
kabilar 55f16bd
Add `Decision-Making Model` section
kabilar 3faf19f
Add table of maintainers
kabilar ecc2a71
Update maintainers table
kabilar 3a05ed0
Add maintainer responsibility
kabilar 28392b5
Fix up indentations
yarikoptic 101af76
Update docs/terms-policies/governance.md
kabilar dff3810
Update docs/terms-policies/governance.md
kabilar cfee9a7
Update docs/terms-policies/governance.md
kabilar 48eb363
Update docs/terms-policies/governance.md
kabilar fd3646d
Update docs/terms-policies/governance.md
kabilar d876f9d
Update docs/terms-policies/governance.md
kabilar 2451780
Update docs/terms-policies/governance.md
kabilar d869748
Update docs/terms-policies/governance.md
kabilar 9da61f0
Update docs/terms-policies/governance.md
kabilar dd24798
Update docs/terms-policies/governance.md
kabilar 63a0fc7
Update docs/terms-policies/governance.md
kabilar 2666b00
Update docs/terms-policies/governance.md
kabilar d2f71ee
Update docs/terms-policies/governance.md
kabilar dc77de8
Update docs/terms-policies/governance.md
kabilar 59e5097
Update docs/terms-policies/governance.md
kabilar c0f170b
Update docs/terms-policies/governance.md
kabilar f84bf5d
Update docs/terms-policies/governance.md
kabilar 7aedf3e
Update docs/terms-policies/governance.md
kabilar e05ebd0
Update docs/terms-policies/governance.md
kabilar ee86f6f
Update docs/terms-policies/governance.md
kabilar 5b40457
Update docs/terms-policies/governance.md
kabilar 09adf62
Update docs/terms-policies/governance.md
kabilar c437b80
Merge branch 'master' of https://github.com/dandi/dandi-docs into gov…
kabilar 8f656ea
Update docs/terms-policies/governance.md
kabilar 9b70617
Fix formatting
kabilar 062d8c0
Add a description about different archive instances
kabilar 2421a1f
Merge branch 'governance-doc' of https://github.com/kabilar/dandi-doc…
kabilar 7ee5839
Update based on feedback
kabilar 08969df
Update merge policy based on feedback
kabilar 14200c4
Add link to code of conduct
kabilar 9b209c5
Update section on reverts based on feedback
kabilar d503d82
Add trailing period based on feedback
kabilar cad86da
Add trailing period
kabilar 1196627
Add a distinction between the DANDI Project codebase and DANDI Archiv…
kabilar c9f1b39
Update merge policy based on feedback
kabilar File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,267 @@ | ||
| # DANDI Project Governance | ||
|
|
||
| Version: 1.0 | ||
| Effective Date: YYYY-MM-DD | ||
| Status: Draft | ||
|
|
||
| ## 1. Purpose | ||
|
|
||
| This document defines the governance structure, roles, responsibilities, and decision‑making processes for the DANDI Project. It applies uniformly to all current and future repositories and services, including: | ||
|
|
||
| Sites: | ||
|
|
||
| - https://dandiarchive.org | ||
| - https://hub.dandiarchive.org | ||
| - https://about.dandiarchive.org | ||
|
|
||
| Code git repositories: | ||
|
|
||
| - https://github.com/dandi | ||
|
|
||
| Data git/git-annex repositories: | ||
|
|
||
| - https://github.com/dandisets | ||
| - https://github.com/dandizarrs | ||
|
|
||
| ## 2. Mission | ||
|
|
||
| DANDI (Distributed Archives for Neurophysiology Data Integration) enables FAIR (Findable, Accessible, Interoperable, Reusable) publishing, preservation, discovery, and computational reuse of neurophysiology data. DANDI provides: | ||
|
|
||
| - a cloud-based platform to store, process, and disseminate data. You can use DANDI to collaborate and publish datasets. | ||
| - open access to data to enable secondary uses of data outside the intent of the study; | ||
| - optimized data storage and access through partnerships, compression and accessibility technologies; | ||
| - facilities to encourage reproducible practices and publications through data standards such as NWB and BIDS; | ||
| - a platform that is not just an endpoint to dump data, but intended to be a living repository that enables collaboration within and across labs. | ||
|
|
||
| ## 3. Core Principles | ||
|
|
||
| 1. Openness & Transparency: Designs, discussions, and decisions are public by default. | ||
| 2. FAIR & Reproducibility: Data and code follow standards and their evolution remain open, traceable, and citable. | ||
| 3. Sustainability: Architectural and process decisions consider long-term maintainability. | ||
| 4. Inclusivity & Respect: Guided by a Code of Conduct. | ||
| 5. Stewardship: Authority derives from consistent, high‑quality contribution. | ||
| 6. Accountability: Roles carry explicit responsibilities. | ||
| 7. Security & Privacy: Responsible handling of sensitive data and credentials. | ||
|
|
||
| ## 4. Project Structure | ||
|
|
||
| The DANDI Project codebase includes the components listed in the table below: | ||
|
|
||
| | Domain | Primary Repos | | ||
| |--------|------------------------------| | ||
| | Archive | [dandi-archive](https://github.com/dandi/dandi-archive), [dandi-infrastructure](https://github.com/dandi/dandi-infrastructure) | | ||
| | Client | [dandi-cli](https://github.com/dandi/dandi-cli), [dandidav](https://github.com/dandi/dandidav) | | ||
| | Metadata | [dandi-schema](https://github.com/dandi/dandi-schema), [schema](https://github.com/dandi/schema) | | ||
| | JupterHub | [dandi-hub](https://github.com/dandi/dandi-hub), [nebari](https://github.com/dandi/nebari), [nebari-deployments](https://github.com/dandi/nebari-deployments), [nebari-docker-images](https://github.com/dandi/nebari-docker-images) | | ||
| | Documentation & Support | [dandi-docs](https://github.com/dandi/dandi-docs), [dandi-about](https://github.com/dandi/dandi-about), [helpdesk](https://github.com/dandi/helpdesk) | | ||
|
|
||
| Multiple deployments of this codebase operate as separate instances, each serving distinct research communities and datasets. The DANDI Archive instance is available at https://dandiarchive.org/, and the EMBER-DANDI Archive instance is available at https://dandi.emberarchive.org/. This document governs over the DANDI Project codebase unless otherwise specified. | ||
|
|
||
| Contributing code to DANDI repositories does not grant rights or access to the separate instances. Similarly, using the DANDI Archive or EMBER-DANDI Archive service does not require contributing to the codebase. | ||
|
|
||
| ## 5. Roles & Responsibilities | ||
|
|
||
| ### 5.1 Contributors | ||
| Anyone submitting issues, pull requests, documentation, or feedback. | ||
|
|
||
| Responsibilities: | ||
| - Follow [Code of Conduct](https://github.com/dandi/dandi-archive/blob/master/CODE_OF_CONDUCT.md) and contribution guidelines. | ||
| - Strive to provide sufficient context and steps to reproduce. | ||
| - Where applicable, write tests and documentation for code changes. | ||
|
|
||
| ### 5.2 Reviewers | ||
| Contributors granted reviewer status for designated repositories. | ||
|
|
||
| Responsibilities: | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - Perform timely, constructive reviews. | ||
| - Enforce style, testing, and security practices. | ||
| - Identify architectural and performance impacts. | ||
|
|
||
| Path to role: | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - Consistent high‑quality reviews. | ||
| - Sponsored by at least one Maintainer. | ||
|
|
||
| ### 5.3 Maintainers | ||
| Individuals with merge rights for designated repositories. | ||
|
|
||
| Responsibilities: | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - Merge approval. | ||
| - Release planning and tagging. | ||
| - Triage (labels, prioritization, assignment). | ||
| - Manage vulnerability reports. | ||
| - Escalate policy or security concerns. | ||
| - Facilitate cross‑repository alignment. | ||
| - Onboard and mentor reviewers. | ||
|
|
||
| Expectations: | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - Active presence. | ||
| - Adhere to conflict of interest and bias avoidance. | ||
|
|
||
| Path to role: | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - Demonstrated sustained contributions and review quality. | ||
| - Nomination and consensus of existing repository Maintainers. | ||
|
|
||
| Maintainers for the respective DANDI repositories: | ||
| | Repository | Maintainers | | ||
| | -- | -- | | ||
| | [dandi/dandi-archive](https://github.com/dandi/dandi-archive) | [@dandi/archive-maintainers](https://github.com/orgs/dandi/teams/archive-maintainers) | | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| | [dandi/dandi-infrastructure](https://github.com/dandi/dandi-infrastructure) | [@dandi/archive-admin](https://github.com/orgs/dandi/teams/archive-admin) | | ||
| | [dandi/dandi-cli](https://github.com/dandi/dandi-cli) | [@dandi/dandi-cli-maintainers](https://github.com/orgs/dandi/teams/dandi-cli-maintainers) | | ||
| | [dandi/dandi-schema](https://github.com/dandi/dandi-schema) | [@dandi/dandi-schema-maintainers](https://github.com/orgs/dandi/teams/dandi-schema-maintainers) | | ||
| | [dandi/dandi-hub](https://github.com/dandi/dandi-hub) | [@dandi/dandi-hub-maintainers](https://github.com/orgs/dandi/teams/dandi-hub-maintainers) | | ||
| | [dandi/nebari-deployments](https://github.com/dandi/nebari-deployments) (Private) | [@dandi/dandi-hub-maintainers](https://github.com/orgs/dandi/teams/dandi-hub-maintainers) | | ||
| | [dandi/nebari](https://github.com/dandi/nebari) | [@dandi/dandi-hub-maintainers](https://github.com/orgs/dandi/teams/dandi-hub-maintainers) | | ||
| | [dandi/dandidav](https://github.com/dandi/dandidav) | [@dandi/dandi-dav-maintainers](https://github.com/orgs/dandi/teams/dandi-dav-maintainers) | | ||
| | [dandi/dandi-about](https://github.com/dandi/dandi-about) | [@dandi/dandi-docs-maintainers](https://github.com/orgs/dandi/teams/dandi-docs-maintainers) | | ||
| | [dandi/dandi-docs](https://github.com/dandi/dandi-docs) | [@dandi/dandi-docs-maintainers](https://github.com/orgs/dandi/teams/dandi-docs-maintainers) | | ||
| | [dandi/example-notebooks](https://github.com/dandi/example-notebooks) | [@dandi/dandi-docs-maintainers](https://github.com/orgs/dandi/teams/dandi-docs-maintainers) | | ||
|
|
||
| ### 5.4 Project Leadership | ||
| - Current leadership team: | ||
| - [Satrajit Ghosh](https://satra.cogitatum.org/) ([@satra](https://github.com/satra)) | ||
| - [Yaroslav O. Halchenko](https://centerforopenneuroscience.org/whoweare) ([@yarikoptic](https://github.com/yarikoptic)) | ||
|
|
||
| - Responsibilities: | ||
| - Approve or amend governance document and Code of Conduct. | ||
| - Strategic project oversight. | ||
| - Resolve escalated disputes. | ||
| - Approve major architectural shifts. | ||
| - Oversee risk, sustainability, funding alignment. | ||
|
|
||
| ### 5.5 DANDI Archive Administrators | ||
|
|
||
| Responsibilities: | ||
| - Monitor service health and performance. | ||
| - Manage user accounts and permissions. | ||
| - Respond to data access requests and issues. | ||
|
|
||
| Administrators: | ||
| - @satra, @yarikoptic, @waxlamp, @mvandenburgh, @jjnesbitt, @danlamanna, @brianhelba, @kabilar, @asmacdo, @bendichter, @candleindark, @CodyCBakerPhD. | ||
|
|
||
| ## 6. Decision-Making Model | ||
|
|
||
| ### 6.1 Roadmap | ||
| - Project targets are discussed during the biweekly Engineering Core and Scientific Core meetings. | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - Project Leadership provides guidance on prioritization of targets. | ||
| - Public notes of these meetings are available on [Google Drive](https://drive.google.com/drive/folders/1-jXLpcrh3L650FiZyTFgcs096nZjO2C3). | ||
|
|
||
| ### 6.2 Consensus Process | ||
| 1. Open a GitHub issue describing the bug/feature request, context, and possible solutions. | ||
| 2. For major architectural changes, create a design document and submit as a PR for discussion and refinement. | ||
| For reference, see [previous design documents](https://github.com/dandi/dandi-archive/tree/master/doc). | ||
| 3. Collect feedback during a 7 day review period. | ||
| 4. Summarize consensus in the GitHub issue and resolve all suggestions in the design document. | ||
| 5. Implement via pull request(s) referencing the proposed design. | ||
|
|
||
| ### 6.3 Conflict of Interest | ||
| - Participants should disclose direct commercial interest in a technology choice. | ||
| - Conflicted member recuses oneself from final decision phase. | ||
|
|
||
| ## 7. Pull Request Workflow | ||
|
|
||
| ### 7.1 Pull Request Requirements | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - Link the associated issue. | ||
| - Add a clear description (problem, approach, alternatives considered). | ||
| - Major architectural changes require a design document. | ||
| - Add or update tests. | ||
| - Update documentation. | ||
| - Ensure CI passes. | ||
| - Large pull requests should be split unless justified. | ||
| - No introduction of unreviewed secrets or credentials. | ||
| - Verified provenance for large binary additions (discouraged in code repos). | ||
|
|
||
| ### 7.2 Merge Policy | ||
| - All pull requests require: | ||
| - All comments must be resolved or addressed. | ||
| - If a comment cannot be resolved, the Project Leadership would be enlisted to decide on the path forward. | ||
| - Approval by at least 1 listed Maintainer for that repository. | ||
| - 24 hour waiting period (unless addressing a critical issue or trivial issue [e.g. typos]). | ||
| - See section below regarding updates to the Governance document. | ||
|
|
||
| ### 7.3 Draft vs Ready for Review | ||
| - Open as a Draft for early feedback. | ||
| - Convert to “Ready” only when tests and documentation are updated. | ||
|
|
||
| ### 7.4 Reverts | ||
| - Any Maintainer may revert a merged pull request causing regression, security issue, or service degradation, with immediate notice in original pull request thread. | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - All changes (including reverts) must be submitted through a pull request, and a new release must be made if the prior change was already released. | ||
| - Follow-up issue required to track remediation. | ||
|
|
||
| ## 8. Releases | ||
|
|
||
| ### 8.1 Versioning | ||
| - [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html) for APIs and libraries. | ||
|
|
||
| ### 8.2 Release Steps | ||
| - For [dandi-archive](https://github.com/dandi/dandi-archive), once a pull request is merged the changes are deployed to the sandbox environment (https://sandbox.dandiarchive.org) for review and testing prior to release. | ||
| - New releases are created with a GitHub Actions workflow built around [`auto`](https://github.com/intuit/auto). | ||
| - When a pull request is merged that has the "`release`" label, `auto`: | ||
| - Updates the changelog based on the pull requests since the last release and commits the results. | ||
| - Tags the new commit with the next version number. | ||
| - Creates a GitHub release for the tag. | ||
| - For [dandi-cli](https://github.com/dandi/dandi-cli), upon release a new version is published to PyPI. | ||
|
|
||
| ## 9. Security | ||
kabilar marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ### 9.1 Reporting | ||
| - Security reports via [email protected]. | ||
| - Acknowledge within 48 hours. | ||
|
|
||
| ### 9.2 Handling | ||
| - Initial assessment within 5 business days. | ||
| - Coordinate and address issue within 30 days. | ||
| - User advisory via email when appropriate. | ||
|
|
||
| ### 9.3 Hardening Practices | ||
| - Mandatory dependency scanning. | ||
| - Principle of least privilege enforced for service accounts. | ||
|
|
||
| ## 10. Documentation | ||
|
|
||
| - User and developer documentation is available at https://docs.dandiarchive.org. | ||
| - Design documents for major decisions are available at https://github.com/dandi/dandi-archive/tree/master/doc. | ||
| - DEVELOPMENT.md and CODE_OF_CONDUCT.md are maintained in relevant repositories. | ||
|
|
||
| ## 11. Communication | ||
|
|
||
| Communication channels include: | ||
|
|
||
| - GitHub Issues and Discussions for user support and team discussions. | ||
| - https://github.com/dandi/helpdesk for generic support requests and questions. | ||
| - individual repositories for targeted discussions. | ||
| - Slack for user support and team discussions. | ||
| - Email ([email protected], [email protected]) for user support. | ||
| - Email announcements for critical notifications to users. | ||
| - GitHub Releases for release announcements. | ||
| - Email newsletter to highlight major changes. | ||
|
|
||
| ## 12. Community | ||
|
|
||
| - Outreach events are hosted in collaboration with the Neurodata Without Borders team and can be found at https://nwb.org/events. | ||
| - Code of Conduct is available at https://github.com/dandi/dandi-archive/blob/master/CODE_OF_CONDUCT.md | ||
| - Instances of Code of Conduct violation can be reported to [email protected]. | ||
| - Enforcement of Code of Conduct is separate from primary technical decision flow where possible. | ||
|
|
||
| ## 13. Amendments to Project Governance | ||
|
|
||
| Process | ||
|
|
||
| 1. Proposal pull request. | ||
| 2. Minimum of a 30 day public comment. | ||
| 3. Approval by Project Leadership. | ||
| 4. Update version and effective data in Governance document header. | ||
|
|
||
| - Urgent amendments may use an accelerated 7 day window with rationale documented. | ||
| - The document becomes active upon Project Leadership approval and publication in the [DANDI Docs](https://docs.dandiarchive.org/). | ||
|
|
||
| ## 14. Sunset Policy | ||
|
|
||
| If a component becomes unmaintained: | ||
| - Create a plan with guidance from the Project Leadership. | ||
| - Update documentation to reflect deprecation including migration guidance. | ||
| - Mark repository with `ARCHIVED` notice. | ||
|
|
||
| ## 15. Licenses | ||
|
|
||
| - Licenses (for code, artwork, documentation) are declared per repository. | ||
| - Licenses must be [DFSG](https://www.debian.org/social_contract#guidelines) and [OSI](https://opensource.org/licenses) compliant. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.