open-source-management
Use this skill when maintaining open source projects, managing OSS governance, writing changelogs, building community, choosing licenses, handling contributions, or managing releases. Triggers on tasks related to CONTRIBUTING.md, CODE_OF_CONDUCT, release notes, semantic versioning, maintainer workflows, issue triage, PR review policies, licensing decisions, community health, and open source project governance.
engineering open-sourcegovernancechangelogcommunitylicensingmaintainerWhat is open-source-management?
Use this skill when maintaining open source projects, managing OSS governance, writing changelogs, building community, choosing licenses, handling contributions, or managing releases. Triggers on tasks related to CONTRIBUTING.md, CODE_OF_CONDUCT, release notes, semantic versioning, maintainer workflows, issue triage, PR review policies, licensing decisions, community health, and open source project governance.
open-source-management
open-source-management is a production-ready AI agent skill for claude-code, gemini-cli, openai-codex, and 1 more. Maintaining open source projects, managing OSS governance, writing changelogs, building community, choosing licenses, handling contributions, or managing releases.
Quick Facts
| Field | Value |
|---|---|
| Category | engineering |
| Version | 0.1.0 |
| Platforms | claude-code, gemini-cli, openai-codex, mcp |
| License | MIT |
How to Install
- Make sure you have Node.js installed on your machine.
- Run the following command in your terminal:
npx skills add AbsolutelySkilled/AbsolutelySkilled --skill open-source-management- The open-source-management skill is now available in your AI coding agent (Claude Code, Gemini CLI, OpenAI Codex, etc.).
Overview
Open source management is the discipline of running a healthy, sustainable open source project. It covers everything beyond writing code - governance structures, contribution workflows, licensing decisions, community building, release management, and long-term project health. This skill gives an agent the knowledge to help maintainers set up and run OSS projects that attract contributors, minimize maintainer burnout, and follow widely accepted industry standards.
Tags
open-source governance changelog community licensing maintainer
Platforms
- claude-code
- gemini-cli
- openai-codex
- mcp
Related Skills
Pair open-source-management with these complementary skills:
Frequently Asked Questions
What is open-source-management?
Use this skill when maintaining open source projects, managing OSS governance, writing changelogs, building community, choosing licenses, handling contributions, or managing releases. Triggers on tasks related to CONTRIBUTING.md, CODE_OF_CONDUCT, release notes, semantic versioning, maintainer workflows, issue triage, PR review policies, licensing decisions, community health, and open source project governance.
How do I install open-source-management?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill open-source-management in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support open-source-management?
This skill works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.
Maintainers
Generated from AbsolutelySkilled
SKILL.md
Open Source Management
Open source management is the discipline of running a healthy, sustainable open source project. It covers everything beyond writing code - governance structures, contribution workflows, licensing decisions, community building, release management, and long-term project health. This skill gives an agent the knowledge to help maintainers set up and run OSS projects that attract contributors, minimize maintainer burnout, and follow widely accepted industry standards.
When to use this skill
Trigger this skill when the user:
- Wants to set up a new open source project with proper governance files
- Needs help writing or improving CONTRIBUTING.md, CODE_OF_CONDUCT.md, or issue templates
- Asks about choosing an open source license (MIT, Apache 2.0, GPL, etc.)
- Wants to write or automate changelogs and release notes
- Needs help with semantic versioning decisions
- Asks about managing contributors, reviewing PRs, or triaging issues
- Wants to build or grow an open source community
- Needs a governance model (BDFL, meritocratic, foundation-backed)
Do NOT trigger this skill for:
- Writing application code or fixing bugs (use language-specific or clean-code skills)
- Internal/proprietary project management (use operations or product skills instead)
Key principles
Lower the barrier to contribute - Every friction point in the contribution process costs you potential contributors. Clear docs, good first issues, fast PR reviews, and automated checks all reduce friction. The easier it is to contribute, the more people will.
Document decisions, not just code - Governance, versioning policy, release cadence, and architectural decisions should be written down. Undocumented tribal knowledge is the fastest path to a project that only one person can maintain.
Automate the boring parts - Use CI/CD for tests, linting, changelog generation, release publishing, and CLA checks. Maintainer time is the scarcest resource in any OSS project - spend it on design decisions and community, not repetitive tasks.
Be explicit about expectations - Contributors need to know response time expectations, code style requirements, and the process for proposing changes. Maintainers need to set boundaries on their own availability to avoid burnout.
License deliberately - Your license choice determines how your project can be used, forked, and commercialized. Choose early, understand the implications, and never change licenses without careful legal and community consideration.
Core concepts
Project health files form the foundation of any OSS project. At minimum, a project needs: README.md (what and why), LICENSE (legal terms), CONTRIBUTING.md (how to help), and CODE_OF_CONDUCT.md (behavioral expectations). GitHub recognizes these files and surfaces them in the community profile.
Governance defines who makes decisions and how. The three dominant models are: BDFL (Benevolent Dictator for Life - one person has final say, e.g. early Python), meritocratic (commit rights earned through sustained contribution, e.g. Apache projects), and foundation-backed (a legal entity stewards the project, e.g. Linux Foundation, CNCF). Most small projects start as BDFL and evolve as they grow.
Semantic versioning (SemVer) communicates change impact through version numbers:
MAJOR.MINOR.PATCH. MAJOR means breaking changes, MINOR means new features (backward
compatible), PATCH means bug fixes. Pre-release versions use suffixes like -alpha.1
or -rc.1. See references/semver-releases.md.
Contributor lifecycle runs from first contact to core maintainer: user -> reporter
-> contributor -> committer -> maintainer. Each stage needs clear documentation on
expectations and privileges. See references/community-building.md.
Common tasks
Set up a new open source project
Create these files in the repository root:
- LICENSE - Choose a license (see "Choose a license" task below)
- README.md - Project name, description, install, usage, contributing link, license badge
- CONTRIBUTING.md - Development setup, coding standards, PR process, issue guidelines
- CODE_OF_CONDUCT.md - Adopt Contributor Covenant v2.1 (industry standard)
- SECURITY.md - How to report vulnerabilities (never via public issues)
- .github/ISSUE_TEMPLATE/ - Bug report and feature request templates
- .github/PULL_REQUEST_TEMPLATE.md - PR checklist with description, testing, and breaking change sections
Always include a DCO (Developer Certificate of Origin) or CLA (Contributor License Agreement) requirement for projects that may have IP concerns.
Choose a license
Use this decision framework:
| Goal | License | Key trait |
|---|---|---|
| Maximum adoption, no restrictions | MIT | Permissive, short, simple |
| Permissive with patent protection | Apache 2.0 | Explicit patent grant |
| Copyleft - derivatives must stay open | GPL v3 | Strong copyleft |
| Copyleft for libraries, permissive linking | LGPL v3 | Weak copyleft |
| Network use triggers copyleft | AGPL v3 | Closes the SaaS loophole |
| Public domain equivalent | Unlicense / CC0 | No restrictions at all |
See references/licensing-guide.md for detailed comparison and edge cases.
Write a changelog
Follow the Keep a Changelog format (keepachangelog.com):
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- New feature X for doing Y
### Changed
- Updated dependency Z to v2.0
### Fixed
- Bug where A caused B (#123)
## [1.2.0] - 2025-03-01
### Added
- Initial support for feature WGroup changes under: Added, Changed, Deprecated, Removed, Fixed, Security. Never mix user-facing changes with internal refactors in the same entry.
Triage issues effectively
Apply labels and prioritize using this workflow:
- Acknowledge within 48 hours - even a "thanks, we'll look at this" reduces contributor frustration
- Label by type (bug, feature, question, documentation) and priority (critical, high, medium, low)
- Tag good first issues - look for self-contained tasks with clear scope and mark them
good first issue - Close stale issues politely after 90 days of inactivity with a bot (use
actions/stale) - Link duplicates rather than just closing them - the reporter's wording may help future searchers
Manage releases
Follow this release checklist:
- Decide the version bump using SemVer rules (see
references/semver-releases.md) - Update CHANGELOG.md - move Unreleased items under the new version heading
- Update version in package.json / pyproject.toml / Cargo.toml / etc.
- Create a git tag:
git tag -a v1.2.0 -m "Release v1.2.0" - Push tag:
git push origin v1.2.0 - CI publishes to package registry (npm, PyPI, crates.io, etc.)
- Create GitHub Release from the tag with changelog content as body
- Announce on community channels (Discord, Twitter, blog)
Automate steps 2-7 with tools like
release-please,semantic-release, orchangesetsto eliminate human error.
Write a CONTRIBUTING.md
A good CONTRIBUTING.md covers these sections in order:
# Contributing to [Project Name]
Thank you for your interest in contributing!
## Code of Conduct
This project follows the [Contributor Covenant](CODE_OF_CONDUCT.md).
## How to Contribute
### Reporting Bugs
- Search existing issues first
- Use the bug report template
- Include reproduction steps, expected vs actual behavior, environment details
### Suggesting Features
- Open a discussion or feature request issue
- Explain the problem you're solving, not just the solution you want
### Submitting Code
1. Fork the repository
2. Create a feature branch from `main`
3. Make your changes following our coding standards
4. Write or update tests
5. Run the test suite locally
6. Submit a pull request
## Development Setup
[Steps to clone, install dependencies, run tests]
## Pull Request Process
- PRs require at least one maintainer review
- All CI checks must pass
- Squash commits before merging
- Update CHANGELOG.md for user-facing changesSet up governance for a growing project
When a project outgrows a single maintainer:
- Write a GOVERNANCE.md defining decision-making process
- Establish a core team with documented roles and responsibilities
- Define RFC (Request for Comments) process for significant changes
- Set up regular maintainer meetings (bi-weekly or monthly)
- Create a MAINTAINERS.md listing active maintainers and their areas of ownership
See references/governance-models.md for templates.
Anti-patterns / common mistakes
| Mistake | Why it's wrong | What to do instead |
|---|---|---|
| No CONTRIBUTING.md | Contributors don't know the process, leading to low-quality PRs and frustrated maintainers | Write clear contribution guidelines before asking for help |
| Ignoring PRs for weeks | Contributors leave and never come back; reputation spreads | Set response time expectations, use bots for initial triage |
| Relicensing without consent | Legal risk; contributors agreed to original license terms | Get explicit consent from all contributors or use a CLA from the start |
| No changelog | Users can't assess upgrade risk, leading to version pinning and stale dependencies | Maintain a changelog from day one, automate if possible |
| Granting commit access too freely | Quality drops, security risk increases | Define a clear path to commit rights based on sustained quality contributions |
| No security disclosure process | Vulnerabilities get reported as public issues | Add SECURITY.md with private reporting instructions (email or GitHub security advisories) |
| Burnout-driven maintenance | Saying yes to everything, reviewing at all hours, no boundaries | Set explicit availability, share maintainer load, and learn to say no |
Gotchas
SemVer MAJOR bump requirement is frequently underestimated - Any breaking change to a public API - including removing a previously exported function, changing a function signature, or changing behavior in a way that breaks existing consumers - requires a MAJOR version bump. Teams routinely ship breaking changes as MINOR bumps ("it's just a small change"), which breaks downstream consumers and erodes trust. When in doubt, bump MAJOR.
Relicensing without CLA consent from all contributors is legally risky - If contributors submitted code under MIT and you want to relicense to Apache 2.0 or AGPL, you need written consent from every contributor who owns copyrightable contributions. Even one holdout blocks the relicense. Use a CLA (Contributor License Agreement) from day one if you anticipate ever changing the license.
actions/stalecloses issues contributors are actively working on - A default stale bot configuration that closes issues after 60 days of inactivity will close issues where a contributor is mid-implementation but just hasn't commented. This is a common contributor experience failure. Configure stale bots to apply a label and warn, not close automatically - require human review before closing.GitHub security advisories are not automatically sent to dependents - Creating a SECURITY.md only helps if reporters use it. For vulnerabilities in published packages, you must create a GitHub Security Advisory and request a CVE to trigger automated alerts in dependent projects. Simply patching and releasing a new version without an advisory leaves most users unaware.
Automated changelog generation requires conventional commits from day one - Tools like
release-pleaseorsemantic-releasedepend on conventional commit message prefixes (feat:,fix:,BREAKING CHANGE:). Introducing these tools to a project with non-conventional commit history produces either empty or incorrect changelogs. Establish the commit message convention before the first release, not retroactively.
References
For detailed content on specific topics, read the relevant file from references/:
references/licensing-guide.md- Deep comparison of OSS licenses, compatibility matrix, and dual-licensing strategiesreferences/semver-releases.md- SemVer edge cases, pre-release conventions, and release automation toolsreferences/community-building.md- Growing contributors, communication channels, events, and sponsorshipreferences/governance-models.md- BDFL, meritocratic, and foundation governance templates with examples
Only load a references file if the current task requires deep detail on that topic.
References
community-building.md
Community Building
This reference covers strategies for growing and sustaining an open source community. Load this file only when the user needs detailed guidance on contributor growth, communication channels, events, or sponsorship.
The contributor funnel
Every open source project has an implicit funnel that people move through:
Users (thousands)
-> Issue reporters (hundreds)
-> First-time contributors (dozens)
-> Repeat contributors (handful)
-> Core maintainers (2-5)Your job as a maintainer is to reduce friction at every stage of this funnel.
Stage 1: User to reporter
- Make it easy to report issues with good templates
- Don't require extensive triage from reporters (they're volunteering their time)
- Respond quickly, even if just to acknowledge the report
- Never be dismissive - "that's not a bug" without explanation drives people away
Stage 2: Reporter to first-time contributor
This is the highest-leverage transition to optimize:
- Label issues
good first issue- New contributors search for this label specifically - Write detailed issue descriptions - Include what needs to change, where the code lives, and links to relevant docs
- Have a working CONTRIBUTING.md - If the dev setup takes more than 5 minutes, you'll lose most newcomers
- Pre-review before PR - Offer to discuss approach in the issue before they write code
- Be patient with PRs - First-time contributors may not know your code style, git workflow, or CI process
Stage 3: First-time to repeat contributor
- Thank contributors publicly (in release notes, README, or a dedicated page)
- Give constructive, encouraging code review - teach, don't criticize
- Follow up after their PR merges: "Thanks for this! Here are similar issues if you're interested..."
- Invite them to discussions about project direction
Stage 4: Repeat contributor to core maintainer
- Gradually increase trust: review rights, then triage rights, then commit rights
- Document the path to maintainership in GOVERNANCE.md
- Have an explicit "invitation" moment - don't assume they know they're welcome
- Set clear expectations about time commitment and responsibilities
Communication channels
GitHub Discussions
Best for: project-specific questions, feature proposals, showcases
- Enable GitHub Discussions in repository settings
- Create categories: Q&A, Ideas, Show and Tell, General
- Pin important threads (roadmap, FAQ, getting started)
- Convert actionable discussions to issues
Discord / Slack
Best for: real-time community interaction, quick questions, social bonding
- Create channels: #general, #help, #development, #announcements
- Set up a welcome message with links to docs and contribution guide
- Moderate actively - one toxic interaction can drive away many quiet contributors
- Discord is preferred over Slack for OSS (no message history limits on free tier)
Mailing lists
Best for: formal announcements, governance decisions, large established projects
- Lower barrier than chat (no account needed beyond email)
- Archived and searchable
- Better for async communication across time zones
- Tools: Google Groups, Mailman, Discourse
Blog / Newsletter
Best for: release announcements, tutorials, project updates, community spotlights
- Publish release blog posts for major versions
- Write contributor spotlights to recognize community members
- Share the project roadmap quarterly
- Tools: Dev.to, Hashnode, GitHub Pages, Substack
First-time contributor programs
Hacktoberfest
- Annual event in October encouraging open source contributions
- Add the
hacktoberfesttopic to your repository - Label issues with
hacktoberfestto make them discoverable - Expect higher volume but lower quality contributions - plan accordingly
- Have extra maintainer capacity available during October
Google Summer of Code (GSoC)
- Paid program for students to work on open source projects
- Apply as an organization in January/February
- Write project ideas with clear scope and mentors
- Students work May-August with mentorship from your team
- Great for larger features that need sustained effort
GitHub's "Up for Grabs" / Good First Issues
- Curate a list of beginner-friendly issues
- Use the
good first issuelabel consistently - Sites like up-for-grabs.net and goodfirstissue.dev aggregate these
Recognition and retention
All Contributors specification
Use the All Contributors bot to recognize all types of contributions, not just code:
- Code, Documentation, Design, Bug reports, Ideas, Reviews, Tests
- Adds a contributors table to your README automatically
- Install via:
.all-contributorsrcconfig and GitHub bot
Release note credits
Mention contributors in release notes:
## Contributors
Thanks to @alice, @bob, and @charlie for their contributions to this release!Contributor ladder
Define explicit levels of involvement:
| Level | Criteria | Privileges |
|---|---|---|
| Contributor | Has merged at least one PR | Listed in Contributors |
| Reviewer | Sustained quality contributions over 3+ months | Can approve PRs |
| Committer | Deep knowledge of a subsystem, trusted judgment | Direct push access to their area |
| Maintainer | Holistic project understanding, community leadership | Full repository access, release authority |
Sponsorship and sustainability
GitHub Sponsors
- Enable GitHub Sponsors on your profile or organization
- Create tiers with clear benefits (logo on README, priority support, etc.)
- Write a compelling FUNDING.yml and sponsor page
- Publicly thank sponsors in release notes
Open Collective
- Transparent funding - all expenses and income are public
- Good for projects with multiple maintainers sharing funds
- Supports recurring and one-time donations
- Fiscal hosts handle taxes and legal structure
Corporate sponsorship
- Reach out to companies that depend on your project
- Offer sponsorship tiers: logo placement, priority issues, consulting hours
- Consider joining a foundation (Linux Foundation, CNCF, Apache) for larger projects
- Some companies fund OSS through programs like the FOSS Contributor Fund
Grants
- NLNet Foundation - European funding for open internet projects
- Sovereign Tech Fund - German government funding for critical OSS infrastructure
- Mozilla MOSS - Grants for projects aligned with Mozilla's mission
- GitHub Accelerator - Annual program with funding and mentorship
Avoiding burnout
Maintainer burnout is the number one threat to open source project health.
Set boundaries
- Document your availability (e.g., "I review PRs on weekends, response within 7 days")
- Use GitHub's status feature to indicate when you're away
- It's okay to close your DMs - direct all questions to public channels
Share the load
- Actively recruit co-maintainers - don't wait until you're burned out
- Delegate triage to trusted contributors
- Use bots for repetitive tasks (stale issues, CLA checks, welcome messages)
- Rotate on-call responsibilities among maintainers
Say no gracefully
Templates for common situations:
Feature request you won't implement: "Thanks for the suggestion! This doesn't align with the project's current direction, but you're welcome to maintain it as a plugin/fork."
PR you won't merge: "I appreciate the effort! Unfortunately, this approach doesn't fit our architecture. I'd suggest [alternative approach]. Happy to discuss further in an issue."
Demands for faster response: "This project is maintained by volunteers in our free time. We'll get to this as soon as we can. If this is urgent for your business, consider sponsoring the project."
governance-models.md
Governance Models
This reference covers open source governance structures, decision-making processes, and templates for GOVERNANCE.md. Load this file only when the user needs detailed guidance on setting up or evolving project governance.
Governance spectrum
Governance models range from centralized to fully distributed:
BDFL -----> Meritocratic -----> Foundation-backed -----> DAO/Cooperative
(1 person) (earned trust) (legal entity) (token/vote-based)Most projects start at the left and move right as they grow. There is no universally "best" model - the right choice depends on project size, contributor count, and organizational needs.
Model 1: BDFL (Benevolent Dictator for Life)
One person makes all final decisions. Other contributors provide input but the BDFL has the last word.
When to use:
- Early-stage projects with 1-3 core contributors
- Projects with a strong creative vision (programming languages, frameworks)
- When speed of decision-making matters more than consensus
Examples: Python (Guido van Rossum, retired), Linux (Linus Torvalds), Vim (Bram Moolenaar)
Strengths:
- Fast decisions, no committee overhead
- Clear accountability
- Consistent vision
Weaknesses:
- Bus factor of 1
- Can become a bottleneck as project grows
- Risk of alienating contributors who disagree with decisions
Template:
# Governance
## Overview
[Project Name] is led by [Your Name] (@handle), who makes all final decisions
about the project's direction, features, and releases.
## Decision Making
- Day-to-day decisions (bug fixes, minor features) are made by any maintainer
- Significant changes (new features, API changes, architectural decisions) require
approval from the project lead
- Anyone can propose changes by opening an issue or pull request
- The project lead will respond to proposals within [timeframe]
## Maintainers
| Name | GitHub | Area |
|---|---|---|
| [Your Name] | @handle | Project lead, all areas |
| [Name] | @handle | [specific area] |
## Succession
If the project lead is unable to continue, maintainership transfers to
[designated successor or process for choosing one].Model 2: Meritocratic / Consensus-based
Decision-making power is earned through sustained, quality contributions. Decisions are made by consensus among those with earned authority.
When to use:
- Projects with 3-10+ active contributors
- When you want to distribute decision-making to reduce bottlenecks
- Community-driven projects without strong corporate backing
Examples: Apache projects, Node.js, Rust
Strengths:
- Distributes power and responsibility
- Motivates contributors with a path to influence
- More resilient than BDFL (no single point of failure)
Weaknesses:
- Consensus can be slow
- "Merit" can be biased toward certain types of contributions
- Governance process itself requires maintenance
Template:
# Governance
## Roles
### Contributors
Anyone who has had a pull request merged. Contributors are listed in
[CONTRIBUTORS.md](CONTRIBUTORS.md).
### Committers
Contributors who have demonstrated sustained, high-quality contributions
and deep understanding of a project area. Committers can:
- Merge pull requests in their area of ownership
- Triage and label issues
- Vote on project decisions
Committers are nominated by existing committers and approved by lazy
consensus (no objections within 7 days).
### Technical Steering Committee (TSC)
A group of 3-7 committers who make project-wide decisions. The TSC:
- Sets project roadmap and priorities
- Approves architectural changes (via RFC process)
- Manages releases
- Resolves disputes between committers
TSC members are elected annually by committers.
## Decision Making
### Lazy consensus
Most decisions use lazy consensus: a proposal is announced, and if no one
objects within 7 days, it is accepted. This applies to:
- Merging pull requests
- Adding committers
- Minor process changes
### RFC process
Significant changes require a Request for Comments (RFC):
1. Author opens an RFC issue/PR using the template
2. Community discussion period of 14 days minimum
3. TSC reviews and makes a decision
4. Decision is documented in the RFC
RFCs are required for:
- Breaking API changes
- New major features
- Changes to governance or processes
- Deprecation of existing features
### Voting
When lazy consensus fails, the TSC votes. Decisions require a simple majority.
Votes are recorded publicly.
## Code of Conduct
This project follows the [Contributor Covenant](CODE_OF_CONDUCT.md).
The TSC is responsible for enforcement.Model 3: Foundation-backed
A legal entity (foundation) stewards the project. The foundation provides governance structure, legal protection, and often funding.
When to use:
- Large projects with corporate contributors from multiple companies
- Projects that need trademark protection
- When neutral governance is important (no single company controls the project)
- Projects seeking sustainable funding through membership fees
Examples: Kubernetes (CNCF), Node.js (OpenJS), Linux (Linux Foundation)
Major foundations:
- Linux Foundation - Umbrella for many sub-foundations (CNCF, OpenJS, etc.)
- Apache Software Foundation - Strong governance model, incubator program
- CNCF (Cloud Native Computing Foundation) - Cloud-native projects
- OpenJS Foundation - JavaScript ecosystem projects
- Eclipse Foundation - Enterprise Java and IoT projects
- Python Software Foundation - Python language and ecosystem
Strengths:
- Neutral governance - no single company controls the project
- Legal protection for contributors and the project trademark
- Funding through corporate memberships
- Established processes and best practices
Weaknesses:
- Bureaucratic overhead
- Foundation membership fees can be expensive
- Project may lose some autonomy
- Not suitable for small projects
Template:
# Governance
## Overview
[Project Name] is a project of the [Foundation Name]. The foundation provides
legal, financial, and governance support.
## Governing Board
The Governing Board oversees the project's strategic direction:
- 2 seats appointed by the foundation
- 3 seats elected by committers
- 1 seat for the Technical Lead
The board meets monthly. Minutes are published within 7 days.
## Technical Oversight Committee (TOC)
The TOC makes technical decisions:
- Reviews and approves architectural proposals
- Manages the release process
- Oversees sub-projects and working groups
- Resolves technical disputes
TOC members are elected by active committers for 2-year terms.
## Working Groups
Working groups focus on specific areas:
- **Core** - Runtime, API, and core functionality
- **Documentation** - Docs, tutorials, and examples
- **Ecosystem** - Plugins, integrations, and tooling
- **Security** - Vulnerability management and security reviews
Anyone can participate in working groups. Each WG has 1-2 leads
appointed by the TOC.
## Intellectual Property
All contributions are made under the [license]. Contributors sign
the [Foundation] CLA before their first contribution.RFC (Request for Comments) process
An RFC process is essential for any project beyond the BDFL stage:
RFC template
# RFC: [Title]
## Summary
One paragraph explanation of the proposed change.
## Motivation
Why are we doing this? What problem does it solve?
## Detailed Design
Technical details of how this will be implemented.
## Drawbacks
Why should we NOT do this? What are the risks?
## Alternatives
What other approaches were considered? Why were they rejected?
## Unresolved Questions
What aspects of the design are still TBD?RFC lifecycle
- Draft - Author creates RFC as a PR or issue
- Discussion - Minimum 14-day comment period
- Final Comment Period (FCP) - 7 days of last call before decision
- Accepted / Rejected / Postponed - Decision recorded with rationale
- Implemented - Linked to implementing PRs
Conflict resolution
Every governance model needs a conflict resolution process:
- Discussion - Attempt to resolve through open discussion on the issue/PR
- Mediation - A neutral maintainer facilitates a resolution
- Vote - If mediation fails, the TSC/governing body votes
- Escalation - For code of conduct violations, follow the CoC enforcement process
Code of Conduct enforcement
Adopt the Contributor Covenant and define enforcement:
| Violation | Response |
|---|---|
| First minor offense | Private warning with explanation |
| Repeated minor offense | Temporary ban from community spaces (7-30 days) |
| Serious offense | Permanent ban, PR/issue privileges revoked |
| Threat of violence or harassment | Immediate permanent ban |
Enforcement decisions are made by the CoC committee (at least 2 people) and documented privately.
Transitioning governance models
BDFL to Meritocratic
This transition usually happens when the BDFL wants to step back:
- Identify 2-3 trusted contributors for a proto-TSC
- Write GOVERNANCE.md documenting the new process
- Run both models in parallel for 3-6 months
- BDFL gradually delegates decisions to the TSC
- Formally announce the transition
Meritocratic to Foundation
This usually happens when corporate interest grows:
- Evaluate foundations that align with your project's ecosystem
- Apply to the foundation's project intake/incubation process
- Transfer trademark and assets to the foundation
- Adopt the foundation's CLA and governance requirements
- Announce to community with clear explanation of what changes and what stays the same
licensing-guide.md
Licensing Guide
This reference covers open source license selection, compatibility, and strategy in depth. Load this file only when the user needs detailed licensing guidance beyond the quick comparison table in the main SKILL.md.
License families
Open source licenses fall into two broad families:
Permissive licenses
Permissive licenses allow users to do almost anything with the code, including using it in proprietary software, as long as they include the original copyright notice.
MIT License
- The most popular open source license
- Short (about 170 words), easy to understand
- Requires: copyright notice in copies
- Allows: commercial use, modification, distribution, private use
- Does NOT require: sharing modifications, patent grant
- Best for: libraries, tools, and projects seeking maximum adoption
Apache License 2.0
- Permissive like MIT but with explicit patent protections
- Requires: copyright notice, state changes, include license text
- Includes: explicit patent grant from contributors
- Includes: patent retaliation clause (if you sue for patent infringement, you lose your license)
- Best for: projects where patent concerns matter (enterprise, cloud, hardware-adjacent)
BSD 2-Clause and 3-Clause
- Functionally similar to MIT
- 3-Clause adds a "no endorsement" clause (can't use project name to promote derivatives)
- Less common than MIT for new projects but still widely used
ISC License
- Functionally equivalent to MIT but even shorter
- Preferred by some projects (e.g., OpenBSD ecosystem) for its brevity
Copyleft licenses
Copyleft licenses require that derivative works also be distributed under the same (or compatible) license. This ensures modifications stay open source.
GNU General Public License v3 (GPL-3.0)
- Strong copyleft: any software that includes GPL code must also be GPL
- "Linking" GPL code into a program makes the whole program GPL
- Includes patent grant and anti-Tivoization provisions
- Best for: projects that want to ensure all derivatives remain open source
- Caution: many companies have policies against using GPL dependencies
GNU Lesser General Public License v3 (LGPL-3.0)
- Weak copyleft: modifications to the LGPL library must be shared, but programs that merely link to it (use it as a dependency) do not need to be LGPL
- Best for: libraries that want copyleft for the library code but permissive linking
- Common in: C/C++ libraries (glibc, Qt)
GNU Affero General Public License v3 (AGPL-3.0)
- Like GPL but closes the "SaaS loophole" - if you run modified AGPL software as a network service, you must make the source available to users of that service
- Best for: server-side software that you want to keep open (databases, web apps)
- Used by: MongoDB (before SSPL), Mastodon, Nextcloud
Mozilla Public License 2.0 (MPL-2.0)
- File-level copyleft: modifications to MPL files must be shared, but new files in the same project can use any license
- A middle ground between permissive and strong copyleft
- Best for: projects wanting copyleft with less friction than GPL
License compatibility matrix
When combining code from different licenses, compatibility determines what the combined work's license must be:
| License A | License B | Compatible? | Combined license |
|---|---|---|---|
| MIT | MIT | Yes | MIT |
| MIT | Apache 2.0 | Yes | Apache 2.0 |
| MIT | GPL 3.0 | Yes | GPL 3.0 (copyleft absorbs permissive) |
| Apache 2.0 | GPL 3.0 | Yes | GPL 3.0 |
| Apache 2.0 | GPL 2.0 only | No | Incompatible (patent clause conflict) |
| GPL 3.0 | AGPL 3.0 | Yes | AGPL 3.0 |
| GPL 2.0 | GPL 3.0 | Only if "or later" | GPL 3.0 (if "GPL 2.0 or later") |
| MIT | LGPL 3.0 | Yes | LGPL 3.0 for the library, MIT for the rest |
| MPL 2.0 | GPL 3.0 | Yes | GPL 3.0 |
| MPL 2.0 | Apache 2.0 | Yes | Either at file level |
Key rule: Permissive licenses are compatible with everything. Copyleft licenses absorb permissive ones. Two different copyleft licenses are usually incompatible unless one explicitly allows it.
Dual licensing strategies
Dual licensing means releasing the same code under two licenses simultaneously. Users choose which license to accept.
Open core / Commercial dual license
- Release under AGPL (or GPL) for open source use
- Sell a commercial license for companies that don't want copyleft obligations
- Examples: MySQL (GPL + commercial), MongoDB (originally AGPL + commercial)
- Requires: owning all copyright (CLA needed from contributors)
Permissive + Copyleft dual license
- Release under both MIT and GPL
- Users who want permissive terms use MIT; users who want copyleft protections use GPL
- Less common; mainly used for ecosystem flexibility
CLA requirements for dual licensing
- If you plan to dual license, you MUST have a Contributor License Agreement (CLA) or copyright assignment from all contributors
- Without CLA: each contributor owns their copyright and you cannot relicense their work
- Tools: CLA Assistant (GitHub App), DCO (Developer Certificate of Origin) as lighter alternative
Common licensing decisions
"I want maximum adoption"
Use MIT. It's the most recognized, shortest to read, and has no conditions that scare away corporate legal teams.
"I want patent protection"
Use Apache 2.0. The explicit patent grant protects both you and your users.
"I want to prevent proprietary forks"
Use GPL-3.0 for applications or LGPL-3.0 for libraries. Code modifications must be shared under the same terms.
"I'm building a SaaS product and want to stay open"
Use AGPL-3.0. It requires source distribution even when the software is only offered as a service, not distributed as a binary.
"I want copyleft but without the GPL stigma"
Use MPL-2.0. File-level copyleft is less invasive and better understood by corporate legal teams than GPL.
"I want to place code in the public domain"
Use Unlicense or CC0. Note that "public domain" is not a legal concept in all jurisdictions, so these licenses provide a fallback permissive grant.
Server Side Public License (SSPL) and similar
The SSPL (created by MongoDB) is NOT considered open source by the OSI. It requires that anyone offering the software as a service must open source their entire service stack. This goes beyond AGPL's requirements.
Other non-OSI licenses to be aware of:
- Business Source License (BSL/BUSL) - Source available, converts to open source after a time delay
- Elastic License 2.0 - Permissive-like but prohibits offering as a managed service
- Commons Clause - Addon that restricts selling the software
These are "source available" licenses, not open source licenses. Do not describe them as open source when advising users.
Changing licenses
Changing an established project's license is one of the most complex operations in OSS:
- You must have copyright over ALL code - either through CLA or by being the sole author
- Contributions without a CLA are owned by their contributors - you cannot relicense them
- Options when you don't own all copyright:
- Get written consent from every contributor
- Rewrite the contributed code from scratch
- Fork from a point before the contribution you can't relicense
- Always announce license changes well in advance and explain the reasoning
- Previous versions remain under the old license - you can only change going forward
semver-releases.md
Semantic Versioning and Release Management
This reference covers SemVer edge cases, pre-release conventions, and release automation tooling. Load this file only when the user needs detailed versioning or release guidance.
Semantic versioning rules
SemVer follows the format: MAJOR.MINOR.PATCH
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes (breaking changes)
- MINOR version when you add functionality in a backward-compatible manner
- PATCH version when you make backward-compatible bug fixes
What counts as a breaking change?
| Change | Breaking? | Bump |
|---|---|---|
| Remove a public function or method | Yes | MAJOR |
| Rename a public function or method | Yes | MAJOR |
| Change function signature (add required parameter) | Yes | MAJOR |
| Change return type of a public function | Yes | MAJOR |
| Change default behavior that users depend on | Yes | MAJOR |
| Add a new optional parameter with a default | No | MINOR |
| Add a new public function or method | No | MINOR |
| Add a new event or hook | No | MINOR |
| Fix a bug without changing the API | No | PATCH |
| Improve performance without changing behavior | No | PATCH |
| Update documentation | No | PATCH |
| Internal refactoring with no API change | No | PATCH |
| Add a new dependency | Depends | MINOR (if no API change) |
| Upgrade a dependency with breaking changes | Maybe | MAJOR if it leaks through your API |
Edge cases and judgment calls
Bug fix that changes behavior: If the previous behavior was clearly a bug (not matching docs), fixing it is a PATCH even though some users may depend on the buggy behavior. Document the fix prominently in release notes.
Deprecation: Deprecating a feature is MINOR (it's backward compatible). Removing the deprecated feature is MAJOR. Always give at least one MINOR release cycle between deprecation and removal.
Security fix that changes API: If a security vulnerability requires a breaking change to fix, release it as MAJOR with a clear security advisory. If you can fix it without breaking the API, it's a PATCH.
Pre-1.0 versions (0.x.y): The SemVer spec says anything goes before 1.0.0. In practice, most projects treat 0.MINOR as the "major" and 0.MINOR.PATCH as the "minor." Ship 1.0.0 when you have a stable public API.
Pre-release and build metadata
Pre-release versions
Pre-release versions indicate that the version is unstable and might not satisfy the intended compatibility requirements:
1.0.0-alpha.1 # First alpha - feature incomplete, expect breakage
1.0.0-alpha.2 # Second alpha
1.0.0-beta.1 # Feature complete, fixing bugs
1.0.0-beta.2 # More bug fixes
1.0.0-rc.1 # Release candidate - believed ready, final testing
1.0.0-rc.2 # Another release candidate if issues found
1.0.0 # Stable releasePre-release versions have lower precedence than the associated normal version:
1.0.0-alpha.1 < 1.0.0-beta.1 < 1.0.0-rc.1 < 1.0.0
Build metadata
Build metadata is appended with a + sign and is ignored for version precedence:
1.0.0+build.123
1.0.0+20250301
1.0.0-beta.1+exp.sha.a1b2c3dBuild metadata is informational only - two versions differing only in build metadata are considered equal.
Release automation tools
semantic-release (JavaScript ecosystem)
Fully automated version management and package publishing:
- Analyzes commit messages to determine the version bump
- Generates release notes from commit messages
- Publishes to npm and creates GitHub releases
- Requires Conventional Commits format
{
"release": {
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/github",
"@semantic-release/git"
]
}
}release-please (Google, multi-language)
Creates release PRs automatically based on Conventional Commits:
- Opens a PR that tracks unreleased changes
- Updates CHANGELOG.md and version files
- Merging the PR triggers the release
- Supports: Node.js, Python, Java, Go, Rust, Ruby, and more
# .github/workflows/release-please.yml
on:
push:
branches: [main]
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
with:
release-type: nodechangesets (multi-package / monorepo)
Designed for monorepos with multiple packages:
- Contributors add "changeset" files describing their changes
- A CI job aggregates changesets into version bumps and changelog entries
- Handles inter-package dependency updates automatically
- Used by: Vercel, Chakra UI, Radix
npx changeset # Create a changeset
npx changeset version # Apply changesets to bump versions
npx changeset publish # Publish to npmconventional-changelog (standalone)
Generates changelogs from Conventional Commits without full release automation:
npx conventional-changelog -p angular -i CHANGELOG.md -sConventional Commits
Conventional Commits is a commit message convention that works with all the release automation tools above:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]Types that affect versioning:
fix:- triggers a PATCH bumpfeat:- triggers a MINOR bumpfeat!:or any type withBREAKING CHANGE:footer - triggers a MAJOR bump
Common types:
fix:- Bug fixfeat:- New featuredocs:- Documentation onlystyle:- Formatting, no code changerefactor:- Code restructuring, no behavior changeperf:- Performance improvementtest:- Adding or fixing testsci:- CI/CD changeschore:- Maintenance tasks
Example:
feat(auth): add OAuth 2.0 support for GitHub login
Implements the OAuth 2.0 authorization code flow for GitHub.
Users can now sign in with their GitHub account.
Closes #234Release checklist
For any release, follow this sequence:
- Freeze - Stop merging new features. Only bug fixes from here.
- Version - Determine the version bump from changes since last release.
- Changelog - Write or generate the changelog. Review for accuracy.
- Test - Run the full test suite. Run manual smoke tests if applicable.
- Tag - Create an annotated git tag:
git tag -a v1.2.0 -m "Release v1.2.0" - Build - Create distributable artifacts (if applicable).
- Publish - Push to package registry (npm, PyPI, crates.io, etc.).
- Release - Create GitHub Release with changelog as body.
- Announce - Post to community channels (Discord, blog, Twitter/X, mailing list).
- Monitor - Watch for regression reports in the first 24-48 hours.
Hotfix process
When a critical bug is found in a release:
- Create a hotfix branch from the release tag:
git checkout -b hotfix/1.2.1 v1.2.0 - Fix the bug with minimal changes (no feature work)
- Bump PATCH version
- Follow the full release checklist above
- Merge the fix back into
mainto prevent regression
Frequently Asked Questions
What is open-source-management?
Use this skill when maintaining open source projects, managing OSS governance, writing changelogs, building community, choosing licenses, handling contributions, or managing releases. Triggers on tasks related to CONTRIBUTING.md, CODE_OF_CONDUCT, release notes, semantic versioning, maintainer workflows, issue triage, PR review policies, licensing decisions, community health, and open source project governance.
How do I install open-source-management?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill open-source-management in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support open-source-management?
open-source-management works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.