This document describes the governance structure and decision-making process for the MIDIMon project.
MIDIMon is an open source MIDI controller mapping system distributed under the MIT License. The project aims to provide a powerful, extensible platform for transforming MIDI devices into advanced macro pads with comprehensive feedback and timing-based triggers.
MIDIMon follows a Benevolent Dictator model in its initial phase, with plans to evolve toward a committee-based model as the community grows.
- Project Lead: Christopher Joseph (@christopherjoseph, Amiable)
- Has final decision authority on all matters
- Responsible for project vision and direction
- Coordinates releases and major initiatives
- May delegate authority to maintainers as project matures
- Define project vision and long-term roadmap
- Make final decisions on controversial issues
- Appoint and remove maintainers
- Represent the project in external communications
- Ensure Code of Conduct enforcement
- Review and merge pull requests
- Triage and respond to issues
- Participate in technical design discussions
- Help enforce community guidelines
- Release management duties (as delegated)
See MAINTAINERS.md for the current list of maintainers.
- Anyone who submits a pull request, reports issues, or participates in discussions
- Expected to follow the Code of Conduct
- Recognized in release notes and CHANGELOG
- Users, testers, documentation readers
- Provide feedback through issues and discussions
- Help other users in support channels
- Share configurations and device profiles
-
Minor Changes (bug fixes, documentation, small features)
- Decided by maintainers through normal PR review
- No special process required
- Merged when approved by at least one maintainer
-
Major Features (new trigger types, architectural changes)
- Require RFC (Request for Comments) process
- Discussed in GitHub Discussions or dedicated RFC issues
- Consensus-seeking among maintainers
- Final approval by project lead if consensus not reached
-
Breaking Changes (config format changes, API incompatibilities)
- Must follow RFC process
- Require deprecation period (minimum one minor version)
- Documented prominently in CHANGELOG and migration guide
- Announced in GitHub Discussions and release notes
-
Governance Changes (changes to this document)
- Proposed via pull request to GOVERNANCE.md
- Discussed in GitHub Discussions
- Minimum 7-day comment period
- Approved by project lead
For major features or breaking changes:
- Create RFC Issue: Use the "Feature Request" template with detailed proposal
- Discussion Period: Minimum 7 days for community feedback
- Refinement: Author updates proposal based on feedback
- Decision: Project lead or maintainers approve/reject with reasoning
- Implementation: Approved RFCs can proceed to implementation
As the project matures, we may introduce voting for major decisions:
- Maintainers vote on RFCs and significant changes
- Simple majority required for approval
- Project lead retains veto power
- Votes conducted in GitHub Discussions or private maintainer channel
MIDIMon follows Semantic Versioning (SemVer):
- MAJOR (x.0.0): Breaking changes to config format or public API
- MINOR (0.x.0): New features, backward-compatible additions
- PATCH (0.0.x): Bug fixes, performance improvements, documentation
Current version: v0.1.0 (pre-1.0 software, API not yet stable)
- Search Existing Issues: Check if feature already requested
- Open Feature Request: Use GitHub issue template
- Community Discussion: Gather feedback and use cases
- RFC (if major): Follow RFC process for significant features
- Implementation: Contributor or maintainer implements
- Review & Merge: Code review and testing
- Documentation: Update docs and CHANGELOG
- Release: Include in next minor version
- Advance Notice: Announce breaking changes at least one release cycle ahead
- Deprecation Warnings: Emit warnings for deprecated features
- Migration Guide: Provide clear upgrade path
- Version Bump: Always increment MAJOR version for breaking changes
- Documentation: Update all affected documentation
Example deprecation timeline:
- v0.5.0: Announce deprecation, add warnings
- v0.6.0: Continue supporting old behavior
- v1.0.0: Remove deprecated feature, breaking change
- Discussion in GitHub issue or PR
- Seek consensus through constructive debate
- Maintainers make decision if contributors can't agree
- Project lead has final say if maintainers disagree
- Document reasoning in issue/PR for transparency
- Report to project lead via email (private)
- Investigation by project lead or designated maintainer
- Actions: warning, temporary ban, permanent ban (depending on severity)
- Appeal process: email project lead with additional context
- Final decision by project lead
See CODE_OF_CONDUCT.md for enforcement guidelines.
- First: Discuss with involved parties directly
- Second: Raise in GitHub Discussions or issue comments
- Third: Contact maintainers privately
- Final: Project lead makes binding decision
Maintainers are appointed by the project lead based on:
- Sustained high-quality contributions over 6+ months
- Deep understanding of project architecture and goals
- Active participation in code review and issue triage
- Adherence to Code of Conduct and community values
- Demonstrated commitment to project's long-term success
Nomination Process:
- Current maintainer or project lead proposes candidate
- Discussion among existing maintainers
- Project lead makes final appointment decision
- New maintainer added to MAINTAINERS.md and granted repo access
Maintainers may be removed for:
- Sustained inactivity (6+ months without engagement)
- Code of Conduct violations
- Actions harmful to the project or community
- Request to step down (emeritus status)
Process:
- Project lead initiates removal discussion
- Private discussion with affected maintainer
- Decision documented (privately for sensitive cases)
- Update MAINTAINERS.md and revoke repo access
Emeritus Status: Maintainers who step down on good terms are recognized as "Emeritus Maintainers" for their contributions.
This governance model is designed for the current scale of the project. As MIDIMon grows, we will adapt our governance structure to ensure:
- Continued responsiveness to community needs
- Distributed decision-making authority
- Sustainability and continuity
- Transparency and accountability
Potential future changes:
- Technical Steering Committee: Group of maintainers for major decisions
- Working Groups: Specialized teams (UI, Core Engine, Documentation)
- Community Elections: Elected representatives for governance input
- Foundation Model: Donate project to foundation (CNCF, Apache, etc.)
- GitHub Issues: Bug reports, feature requests
- GitHub Discussions: Q&A, ideas, community conversations
- Pull Requests: Code changes, technical review
- Release Notes: Version announcements, changelogs
- Discord (if established): Real-time community chat
- All technical decisions documented in issues/PRs
- RFC discussions conducted publicly
- Governance changes tracked in this document's git history
- Release decisions explained in release notes
Some topics require private discussion:
- Code of Conduct enforcement
- Security vulnerabilities (until patched)
- Confidential personal matters
- Pre-release coordination
- All code contributions licensed under MIT License
- Contributors retain copyright to their contributions
- By submitting a PR, contributors agree to license their work under project's MIT License
- See CONTRIBUTING.md for contribution guidelines
This governance document may be amended by:
- Opening a pull request with proposed changes
- Minimum 7-day discussion period in GitHub Discussions
- Approval by project lead
- Merge and announce changes in next release notes
Adopted: 2025-11-11 Last Updated: 2025-11-11 Version: 1.0