Skip to content

Collaboration & the Lifecycle

Every NEMAR dataset lives in two phases, and the collaboration model is different in each:

  • Private (draft). The repository is closed. You add collaborators, who get push access and edit the data directly. This is where curation happens.
  • Public (published). The repository is open and has a DOI. Anyone can contribute through pull requests; nobody pushes to main directly. Collaborators are no longer needed to contribute, but they stay on as maintainers who review and merge.

The short version: private data uses collaborators, public data uses pull requests.

flowchart LR
    A[Upload<br/>private repo] --> B[Curate privately<br/>collaborators push to main]
    B --> C[Request publication<br/>admin approves]
    C --> D[Public + DOI<br/>ruleset locks main]
    D --> E[Contribute via PR<br/>anyone proposes, maintainers merge]
    E -->|PR merged| F[New version DOI]
    F --> E

A new dataset is created private: a private GitHub repo, a private S3 prefix, and you as owner. Sandbox training is a one-time prerequisite.

Terminal window
nemar sandbox # one-time, required before your first upload
nemar dataset validate ./study # optional; upload validates too
nemar dataset upload ./study

See Uploading Datasets for the full walkthrough.

While the dataset is private, main is open to push, so collaborators iterate directly without pull requests.

Terminal window
nemar dataset invite <username> <dataset-id>

Only the owner or an admin can invite. The invitee must be an approved NEMAR user with a linked GitHub account. They receive:

  • push access to the GitHub repo, and
  • upload access to the dataset’s S3 storage.

A user can request access to a private dataset; the owner approves or denies.

Terminal window
# Requester
nemar dataset request-access <dataset-id>
# Owner or admin
nemar dataset access list <dataset-id> # pending requests
nemar dataset access approve <username> <dataset-id> # grants push + upload
nemar dataset access deny <username> <dataset-id>

Approving grants exactly the same access as an invite. A denied user may request again later.

Terminal window
nemar dataset clone <dataset-id>
cd <dataset-id>
nemar dataset get . # fetch the data files (needs auth on a private dataset)
# make changes, then:
nemar dataset save -m "Add subjects 10-15"
nemar dataset push # pushes commits + data straight to main

List who has access at any time with nemar dataset collaborators <dataset-id>. To remove someone, contact an admin.

Publication is a request the owner submits and an admin approves. It cannot be self-served.

Terminal window
nemar dataset publish request <dataset-id>
nemar dataset publish status <dataset-id>

The request is blocked until BIDS validation passes, and (for original submissions) until the dataset meets the submission standards. On approval, an admin runs an automated pipeline that makes the repo public, opens S3 read access, and mints a permanent DOI. See Publishing Datasets for every step.

Once public, a branch ruleset locks main: direct pushes and force-pushes are blocked for everyone, and every change must go through a PR that passes BIDS validation and the version check. This is why collaborators are no longer required to contribute, anyone can propose a change.

Anyone can contribute by forking the repo and opening a pull request.

The owner and collaborators use the CLI wrappers, which push to a branch and open the PR for you:

Terminal window
nemar dataset update <dataset-id> -m "Fix channel locations" # data or metadata change
nemar dataset release <dataset-id> --type minor # version bump only

Merging a PR tags a new release and mints a version DOI automatically. See Versioning for the release workflow.

Publishing does not remove collaborators. They can no longer push to main directly (nobody can), but because they hold write access they can merge pull requests once checks are green and cut new versions. Outside contributors can only propose changes; collaborators and the owner are the maintainers who review, merge, and release.

ActionOwnerCollaboratorAnyone (public repo)
Push directly to main (private)— repo is closed
Push directly to main (public)❌ ruleset❌ ruleset❌ ruleset
Open a pull request (public)✅ (via fork)
Merge a pull request (public)
Invite collaborators / review access
Request publication
  • Sandbox training is required once before your first upload.
  • Invitees must be approved NEMAR users with a linked GitHub account, or the grant is refused.
  • request-access on a public dataset grants nothing — the repo is already open, so fork it and open a PR (or ask the owner for an invite if you want merge rights).
  • Publication is gated: BIDS validation must be green, and original submissions must meet the submission standards.