-
Notifications
You must be signed in to change notification settings - Fork 65
Plugin Owner Guide
As a plugin owner, you are responsible for maintaining the health and compatibility of your plugin within this dynamic plugins ecosystem. This guide outlines your obligations and best practices.
You are a plugin owner if you:
- Maintain the source plugin in upstream repositories (backstage/backstage, backstage/community-plugins, rhdh-plugins, etc.)
- Created or modified the overlay configuration for your plugin
- Are assigned as maintainer by your organization
| Area | Frequency | Criticality |
|---|---|---|
| Metadata synchronization | Every release | π΄ High |
| Backstage version updates | Monthly/Quarterly | π΄ High |
| Patch maintenance | As needed | π‘ Medium |
| Test validation | Every PR | π΄ High |
| Deprecation communication | As needed | π‘ Medium |
Your plugin exists in two places that must stay in sync:
| Location | Files | Owner Updates |
|---|---|---|
| Source Repo |
package.json, src/
|
When you release new versions |
| Overlay Repo |
source.json, metadata/*.yaml
|
When source changes |
What must match:
| Field | Source Location | Overlay Location |
|---|---|---|
| Version | package.json:version |
metadata/*.yaml:spec.version |
| Package name | package.json:name |
metadata/*.yaml:spec.packageName |
| Backstage deps | package.json:dependencies |
metadata/*.yaml:spec.backstage.supportedVersions |
| Description | package.json:description |
metadata/*.yaml:metadata.title |
β οΈ Warning: Metadata drift causes build failures, incorrect catalog entries, and compatibility issues.
See 04 - Metadata Synchronization for detailed procedures.
The target platform tracks Backstage releases. Your plugin must remain compatible.
Minimum cadence:
| Update Type | Frequency | Action Required |
|---|---|---|
| Target version | Monthly | Verify compatibility with new Backstage release |
| Minimum version | Quarterly | Update supportedVersions in metadata |
| Major version | As released | Full compatibility testing |
Process:
- Check the target Backstage version in
versions.json - Verify your plugin works with that version
- Update
repo-backstage-versioninsource.json - Update
supportedVersionsin metadata files
See 05 - Version Updates for detailed procedures.
If your plugin requires patches:
| Task | When | Action |
|---|---|---|
| Verify patches apply | Every source update | Ensure patches don't conflict |
| Re-roll patches | When context changes | Update line numbers/context |
| Remove patches | When fix is upstream | Delete obsolete patches |
| Document patches | Always | Explain why each patch exists |
β οΈ Warning: Stale patches cause silent failures or unexpected behavior.
See 06 - Patch Management for detailed procedures.
When automated workflows fail on your workspace:
- Investigate immediately β Failures block releases
-
Check the error type:
- Build failure β Fix source or add patch
- Integrity failure β Sync metadata
- Test failure β Verify plugin loads correctly
- Open a PR with the fix
-
Validate with
/publishand/testcommands
Notify downstream users when:
| Change | Communication |
|---|---|
| Breaking API changes | Update metadata, document migration |
| Deprecation | Add deprecation notice, timeline |
| New dependencies | Update plugins-list.yaml with embed args |
| Configuration changes | Update appConfigExamples in metadata |
Use this checklist each month:
## Monthly Plugin Maintenance - [Plugin Name] - [Month/Year]
### Version Check
- [ ] Verified plugin compatibility with current target Backstage version
- [ ] Updated `source.json:repo-backstage-version` if needed
- [ ] Updated `metadata/*.yaml:spec.backstage.supportedVersions` if needed
### Metadata Check
- [ ] Verified `spec.version` matches source `package.json:version`
- [ ] Verified `spec.packageName` matches source `package.json:name`
- [ ] Reviewed and updated `appConfigExamples` if configuration changed
### Patch Check
- [ ] Verified all patches apply cleanly to current source
- [ ] Removed any patches that are now in upstream
- [ ] Documented any new patches required
### Test Validation
- [ ] PR created with updates
- [ ] `/publish` completed successfully
- [ ] `/test` passed or manual testing completed
- [ ] PR mergedUse this checklist each quarter:
## Quarterly Plugin Maintenance - [Plugin Name] - [Quarter/Year]
### Compatibility Review
- [ ] Reviewed Backstage changelog for breaking changes
- [ ] Tested plugin with minimum supported platform version
- [ ] Tested plugin with current platform version
- [ ] Updated `supportedVersions` range
### Dependency Audit
- [ ] Reviewed embedded packages (--embed-package)
- [ ] Checked for security advisories in dependencies
- [ ] Updated suppressed native packages if needed
### Documentation Review
- [ ] Updated metadata links (source, issues, docs)
- [ ] Reviewed and updated description/title
- [ ] Checked `appConfigExamples` accuracy
### Cleanup
- [ ] Removed obsolete patches
- [ ] Removed obsolete overlay files
- [ ] Archived any deprecated plugin variantsWhen deprecating a plugin:
spec:
lifecycle: deprecated # Changed from 'active'
# Add deprecation notice# plugins/my-deprecated-plugin: ==> Deprecated: Use new-plugin instead- Open an issue documenting the deprecation
- Provide migration path to replacement plugin
- Set a timeline for removal (typically 2 release cycles)
- Delete metadata files
- Remove from
plugins-list.yaml - Document removal in release notes
| Issue | Where to Go |
|---|---|
| Build failures | Check workflow logs, open issue |
| Patch conflicts | See 06 - Patch Management |
| Compatibility questions | Check Backstage Compatibility wiki |
| Process questions | Open a discussion or issue |
- 04 - Metadata Synchronization β Detailed sync procedures
- 05 - Version Updates β Version update guide
- 06 - Patch Management β Patch maintenance
- 64 workspaces
- 10 with patches