This repository defines the organizational structure, team membership, and project ownership for ScottyLabs' Tech Committee. It serves as the source of truth for our GitHub organization's governance model.
In this document, 'ScottyLabs' will refer to the GitHub organization at https://github.com/ScottyLabs, and not the club itself.
.
├── contributors # Individual contributor definitions
├── meta
│ ├── infra # Terraform code for applying changes
│ ├── schemas # JSON schemas for validation
│ └── validators # Rust-based validation tools
├── repos # Team definitions with members and repos
└── teams # Repository definitions with metadata
- Contributors - Individuals who participate in ScottyLabs projects
- Teams - Groups of contributors working on specific projects
- Repositories - Code repositories owned by teams
Create a new TOML file in contributors/ with your GitHub username as the filename, e.g. your-username.toml:
name = "Your Name"
github = "your-username"Warning
Pull requests adding a new contributor must be submitted by the contributor themselves. This self-nomination approach promotes ownership, helps maintain the integrity of our contributor list, and encourages active participation with our governance process and the organization. PRs in violation will be automatically rejected.
Create a new TOML file in repos/ with the repository name as the filename, e.g. cmucourses.toml:
name = "cmucourses"
description = "..." # Optional
website = "..." # Optional (but mutually exclusive with 'websites' if present)
websites = ["...", "..."] # OptionalCreate a new TOML file in teams/ with the team name as the filename, e.g. cmucourses.toml:
name = "cmucourses"
members = [
"your-username"
]
repos = [
"cmucourses"
]Warning
The repos and members included in this file must already exist. You may add the repos in the same PR, but members must have already been added in previous PRs due to the earlier requirement on adding contributors. For similar reasons, you must be a member of any team you create.
We enforce Conventional Commits.
This repository also includes several other checks to ensure integrity:
- File names must match the content (the
namefield for repos and teams, thegithubfield for contributors) - Cross-references must be valid (team members must exist as contributors, team repos must exist as repos)
- GitHub users must exist
Validation runs automatically through GitHub Actions on PRs and pushes to main. However, you can also test validators locally.
-
Make sure you are in the root of the repository.
-
Install Rust with
rustup, if you do not already have it installed:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh- Install
cargo-binstall(enables use ofcargo binstall):
cargo install cargo-binstall- Install Taplo:
cargo binstall taplo-cli- Check TOML files for proper formatting and/or against the schemas:
taplo fmt --check # for formatting
taplo check # against the schemas- Run the other checks specified above:
cargo run --bin governanceThis project is licensed under Apache-2.0, and is heavily inspired by Concourse's governance.