Contribution Workflow
Plumego contributions follow a deliberate, low-noise workflow.
This workflow is designed to:
- Encourage thoughtful proposals
- Minimize wasted effort
- Protect design coherence
- Make decisions explicit and traceable
Speed is not the primary goal.
Clarity and correctness are.
Overview
A typical contribution flows through the following stages:
Observation → Issue → Discussion → Proposal → Pull Request → Review → Merge (or Reject)
Not every contribution passes through every stage,
but skipping stages increases the chance of rejection.
Stage 1: Observation
Most contributions start with an observation, such as:
- Confusing documentation
- Ambiguous behavior
- Unexpected edge cases
- Friction in real usage
- Inconsistency with design principles
Good observations are:
- Concrete
- Reproducible
- Clearly scoped
Vague dissatisfaction is not actionable.
Stage 2: Issue
Issues are used to clarify and validate problems,
not to demand features.
Open an issue when:
- You believe behavior is unclear or incorrect
- Documentation does not match reality
- You want to confirm whether something is intentional
- You want to discuss a possible change
An effective issue includes:
- A precise description of the problem
- What you expected vs what happened
- Relevant documentation links
- Minimal reproduction if applicable
Avoid proposing solutions too early.
Stage 3: Discussion
Discussion is where intent is clarified.
During discussion:
- Maintainers may ask clarifying questions
- Design principles and non-goals are referenced
- Alternative interpretations are considered
Outcomes of discussion may include:
- Confirmation that behavior is correct
- Agreement that documentation should change
- Identification of a bug
- Rejection due to non-goals
- Green-light for a proposal
Not all discussions lead to changes.
Stage 4: Proposal
For non-trivial changes,
a proposal is expected before code.
A proposal may take the form of:
- A detailed issue comment
- A design document
- A draft PR without implementation
- A Markdown document
A good proposal explains:
- The problem being solved
- Why existing patterns are insufficient
- How the change aligns with principles
- What trade-offs are introduced
- Why the change belongs in Plumego
- How the change could be undone
Most proposals fail at this stage — by design.
Stage 5: Pull Request
Once a proposal is accepted in principle,
a Pull Request may be opened.
PRs must follow the Pull Request Guide.
Key expectations:
- Minimal scope
- Clear intent
- Explicit trade-offs
- Documentation updates where required
- Tests where appropriate
PRs without context from prior discussion
may be closed or redirected.
Stage 6: Review
Reviews focus on:
- Explicitness
- Boundary preservation
- Dependency direction
- Long-term maintenance cost
- Alignment with design philosophy
Review feedback may include:
- Requested changes
- Scope reduction
- Documentation clarification
- Rejection with explanation
Review cycles are expected.
Fast merges are rare.
Stage 7: Merge or Reject
Merge
A PR is merged when:
- The problem is well-defined
- The solution aligns with principles
- The long-term cost is acceptable
- Documentation and code agree
Merging is a deliberate act, not an automatic reward.
Reject
Rejection may occur when:
- The problem is not compelling
- The change violates non-goals
- The cost outweighs the benefit
- The change belongs outside the core
Rejection is final unless new information emerges.
Post-Merge Responsibilities
After merge, contributors are expected to:
- Clarify questions from users
- Help maintain the change
- Update documentation if gaps are found
- Assist with future refactors if needed
Responsibility does not end at merge.
Fast Paths (Limited)
Some contributions may take a shorter path:
- Typo fixes
- Minor documentation clarifications
- Obvious bug fixes with clear intent
Even in these cases,
maintainers may request discussion.
Slow Paths (Expected)
Changes that typically require more time:
- Public API changes
- Behavioral changes
- Architectural refactors
- New abstractions
- Anything affecting lifecycle semantics
These changes are intentionally slow.
Communication Expectations
Contributors are expected to:
- Be precise and respectful
- Avoid urgency-based arguments
- Accept rejection gracefully
- Separate ideas from identity
Plumego values thoughtful collaboration over consensus.
Forking and Experiments
Forks are welcome for:
- Experimentation
- Alternative designs
- Exploration of different trade-offs
Not all good ideas belong in Plumego.
Forking is a healthy outcome.
Summary
Plumego’s workflow exists to:
- Reduce accidental complexity
- Make decisions explicit
- Preserve long-term trust
- Avoid reactive evolution
Contributing is not a race.
It is a careful process of making and keeping promises.
Related Contributing Pages
- Contribution Philosophy — why restraint matters
- Decision Process — how choices are evaluated
- Pull Request Guide — how PRs are prepared
- Code Style — how contributions should look
Plumego evolves not through momentum,
but through intentional change.