Trigger Plugin Monorepo Consolidation
Summary: Consolidate the standalone trigger plugin repositories (spin-trigger-sqs, spin-trigger-mqtt, spin-trigger-cron, spin-trigger-command) into a single monorepo, refresh the maintainer roster per governance policy, and archive the original repositories.
Background
The Spin project currently maintains four trigger plugins as separate repositories under the spinframework GitHub organization:
| Repository |
Current Maintainers |
| spin-trigger-sqs |
Caleb Schoepp, Ivan Towlson, Kate Goldenring, Vaughn Dice |
| spin-trigger-mqtt |
Suneet Nangia, Brian Hardock, Radu Matei |
| spin-trigger-cron |
Brian Hardock, Ivan Towlson, Karthik Ganeshram, Radu Matei |
| spin-trigger-command |
Karthik Ganeshram, Radu Matei, Thorsten Hans, Vaughn Dice |
Having each trigger in its own repository has led to:
- Duplicated CI/CD infrastructure — each repo carries its own GitHub Actions workflows, release tooling, and
spin-pluginify configuration with largely identical structure.
- Fragmented dependency management — Spin core and Wasmtime version bumps must be applied independently to each repo, increasing the surface area for version drift and missed updates.
- Scattered issue tracking — bugs and feature requests are spread across four separate issue trackers, making it harder for contributors and users to discover existing work.
- Maintainer sprawl — per our governance policy, project maintainers who are unresponsive for more than 3 months lose maintainership. A review of contribution activity across these repositories shows that several listed maintainers have not been active for well over 3 months.
Proposal
1. Create a new spin-trigger-plugins monorepo
Create a new repository spinframework/spin-trigger-plugins containing one Cargo workspace with the following crate layout:
spin-trigger-plugins/
├── Cargo.toml # workspace root
├── Cargo.lock
├── GOVERNANCE.md # symlink or reference to spinframework/spin GOVERNANCE.md
├── MAINTAINERS.md
├── LICENSE
├── CODE_OF_CONDUCT.md
├── README.md
├── crates/
│ ├── trigger-sqs/ # migrated from spin-trigger-sqs
│ ├── trigger-mqtt/ # migrated from spin-trigger-mqtt
│ ├── trigger-cron/ # migrated from spin-trigger-cron
│ └── trigger-command/ # migrated from spin-trigger-command
├── templates/ # consolidated Spin templates
├── examples/ # consolidated example apps
└── .github/
└── workflows/ # unified CI/CD
Each trigger crate retains its own Cargo.toml, plugin manifest (spin-pluginify.toml), and release metadata but shares the workspace lockfile and CI infrastructure.
2. Refresh the maintainer roster
Per the Spin governance document:
"Project maintainers MUST remain active on the project. If they are unresponsive for > 3 months, they will lose project maintainer-ship, unless the remaining project maintainers of the given project and the Spin Governance Committee agree to extend the period to be greater than 3 months."
A review of contribution activity (commits, reviews, issue triage) across all four trigger repositories shows that the following maintainers have been inactive for more than 3 months:
| Name |
GitHub |
Previously Maintained |
| Caleb Schoepp |
calebschoepp |
spin-trigger-sqs |
| Karthik Ganeshram |
karthik2804 |
spin-trigger-cron, spin-trigger-command |
| Radu Matei |
radu-matei |
spin-trigger-cron, spin-trigger-command |
| Thorsten Hans |
ThorstenHans |
spin-trigger-command |
| Suneet Nangia |
suneetnangia |
spin-trigger-mqtt |
These maintainers will be moved to Emeritus Maintainer status in the new monorepo's MAINTAINERS.md, as defined by governance. Per governance, emeritus maintainers are welcome to return to active maintainership — the path back is nomination by an existing maintainer followed by agreement among the maintainer group, consistent with the standard process for adding new maintainers.
The new monorepo's MAINTAINERS.md will be:
Current Maintainers
| Name |
GitHub Username |
| Brian Hardock |
fibonacci1729 |
| Ivan Towlson |
itowlson |
| Kate Goldenring |
kate-goldenring |
| Vaughn Dice |
vdice |
Emeritus Maintainers
| Name |
GitHub Username |
| Caleb Schoepp |
calebschoepp |
| Karthik Ganeshram |
karthik2804 |
| Radu Matei |
radu-matei |
| Thorsten Hans |
ThorstenHans |
| Suneet Nangia |
suneetnangia |
All affected maintainers (current and emeritus) will be tagged on the PR that introduces this change for visibility.
3. Archive the original repositories
After migration is complete and the monorepo is publishing releases:
- Update each original repository's README to point to the new monorepo.
- Archive each original repository via GitHub's archive feature (read-only, preserving history and existing issues/PRs for reference).
4. Update governance repository list
The Triggers section of GOVERNANCE.md in spinframework/spin will be updated to replace the four individual entries with:
- Triggers:
- [Spin Trigger Plugins](https://github.com/spinframework/spin-trigger-plugins)
Migration Plan
- Create the monorepo with the proposed directory structure and unified workspace
Cargo.toml.
- Migrate source code and git history for each trigger using
git subtree or a similar history-preserving approach.
- Consolidate CI/CD — unify GitHub Actions workflows for build, test, and release across all four triggers.
- Consolidate release tooling — adapt
spin-pluginify configuration to produce individual plugin artifacts from the monorepo (one release artifact per trigger).
- Update the Spin plugins index (
spinframework/spin-plugins) to point at the new monorepo's releases.
- Open a MAINTAINERS.md PR in the new repo with the proposed roster, tagging all affected maintainers.
- Update
GOVERNANCE.md in spinframework/spin via PR.
- Archive original repositories after a transition period to allow in-flight issues/PRs to be migrated or closed.
Rationale
- A unified workspace means a single
cargo build validates cross-trigger compatibility and a single lockfile ensures consistent dependency versions.
- Fewer repositories reduces the operational burden for version bumps, security patches, and CI maintenance.
- A consolidated maintainer team with demonstrated recent activity improves review velocity and accountability.
- Archiving (rather than deleting) the original repos preserves history and avoids breaking existing links.
Trigger Plugin Monorepo Consolidation
Summary: Consolidate the standalone trigger plugin repositories (
spin-trigger-sqs,spin-trigger-mqtt,spin-trigger-cron,spin-trigger-command) into a single monorepo, refresh the maintainer roster per governance policy, and archive the original repositories.Background
The Spin project currently maintains four trigger plugins as separate repositories under the
spinframeworkGitHub organization:Having each trigger in its own repository has led to:
spin-pluginifyconfiguration with largely identical structure.Proposal
1. Create a new
spin-trigger-pluginsmonorepoCreate a new repository
spinframework/spin-trigger-pluginscontaining one Cargo workspace with the following crate layout:Each trigger crate retains its own
Cargo.toml, plugin manifest (spin-pluginify.toml), and release metadata but shares the workspace lockfile and CI infrastructure.2. Refresh the maintainer roster
Per the Spin governance document:
A review of contribution activity (commits, reviews, issue triage) across all four trigger repositories shows that the following maintainers have been inactive for more than 3 months:
calebschoeppkarthik2804radu-mateiThorstenHanssuneetnangiaThese maintainers will be moved to Emeritus Maintainer status in the new monorepo's
MAINTAINERS.md, as defined by governance. Per governance, emeritus maintainers are welcome to return to active maintainership — the path back is nomination by an existing maintainer followed by agreement among the maintainer group, consistent with the standard process for adding new maintainers.The new monorepo's
MAINTAINERS.mdwill be:Current Maintainers
fibonacci1729itowlsonkate-goldenringvdiceEmeritus Maintainers
calebschoeppkarthik2804radu-mateiThorstenHanssuneetnangiaAll affected maintainers (current and emeritus) will be tagged on the PR that introduces this change for visibility.
3. Archive the original repositories
After migration is complete and the monorepo is publishing releases:
4. Update governance repository list
The Triggers section of
GOVERNANCE.mdinspinframework/spinwill be updated to replace the four individual entries with:Migration Plan
Cargo.toml.git subtreeor a similar history-preserving approach.spin-pluginifyconfiguration to produce individual plugin artifacts from the monorepo (one release artifact per trigger).spinframework/spin-plugins) to point at the new monorepo's releases.GOVERNANCE.mdinspinframework/spinvia PR.Rationale
cargo buildvalidates cross-trigger compatibility and a single lockfile ensures consistent dependency versions.