Tradeoffs
Plumego is not optimized for every metric.
It makes a series of explicit tradeoffs in order to uphold its design philosophy.
Understanding these tradeoffs is essential before adopting the framework.
This document describes what Plumego gives up, why those choices were made, and what they mean in practice.
1. Slower Initial Development Speed
What is traded off
Plumego does not optimize for the fastest possible time-to-first-feature.
Compared to more opinionated frameworks, Plumego often requires:
- More upfront structure
- Explicit wiring of components
- Manual handling of concerns that other frameworks automate
Why this tradeoff exists
Fast initial development often relies on:
- Implicit conventions
- Auto-wiring
- Global state
- Hidden framework behavior
Plumego deliberately avoids these patterns because they:
- Obscure system behavior
- Accumulate technical debt
- Become difficult to reason about as systems grow
What this means for you
- Early progress may feel slower
- More decisions are required up front
- The payoff appears over time, not immediately
Plumego assumes that initial speed is not the primary success metric.
2. More Code, Less Magic
What is traded off
Plumego favors explicit code, which often results in:
- More lines of code
- Fewer “one-liners”
- Less automation
Why this tradeoff exists
Every hidden behavior must eventually be understood.
By making data flow and execution explicit, Plumego:
- Reduces cognitive load during debugging
- Makes side effects visible
- Improves long-term readability
What this means for you
- Codebases may appear more verbose
- Engineers must be comfortable writing “glue code”
- Review processes tend to focus on structure, not tricks
This verbosity is intentional and valued.
3. Smaller Built-In Feature Set
What is traded off
Plumego intentionally avoids providing:
- ORM abstractions
- Job schedulers
- Configuration frameworks
- Caching layers
- Messaging systems
Why this tradeoff exists
These components are:
- Highly opinionated
- Context-dependent
- Often deeply coupled to infrastructure choices
Including them would force Plumego to make assumptions that may not hold for your system.
What this means for you
- You choose your own tools
- Integration work is required
- You retain full control over dependencies
Plumego values composability over completeness.
4. Reduced Framework Ecosystem
What is traded off
Plumego does not aim to build a large plugin ecosystem.
You will not find:
- Hundreds of official plugins
- A marketplace of extensions
- Tight integration with third-party libraries
Why this tradeoff exists
Large ecosystems:
- Create long-term maintenance obligations
- Encourage coupling to framework internals
- Make backward compatibility harder
Plumego prioritizes a small, stable core.
What this means for you
- You integrate external libraries directly
- You own those integration boundaries
- You are less affected by ecosystem churn
5. Higher Engineering Responsibility
What is traded off
Plumego does not shield engineers from architectural decisions.
It will not:
- Choose your data model
- Enforce architectural patterns
- Prevent you from making poor design choices
Why this tradeoff exists
Frameworks that make decisions for you often:
- Encode assumptions that don’t scale
- Limit future change
- Hide complexity rather than reduce it
Plumego assumes engineering responsibility cannot be outsourced.
What this means for you
- Teams must agree on conventions
- Architectural discipline is required
- Code review culture becomes important
Plumego works best in teams that embrace ownership.
6. Less “Beginner-Friendly” Experience
What is traded off
Plumego is not optimized for beginners.
It assumes familiarity with:
- Go’s standard library
- HTTP request handling
- Context propagation
- Basic architectural concepts
Why this tradeoff exists
Beginner-friendly abstractions often rely on:
- Simplifications that hide important details
- Patterns that do not generalize well
- Magic that must later be unlearned
Plumego prefers to expose reality early.
What this means for you
- Onboarding may take longer
- Documentation reading is essential
- Engineers grow deeper understanding over time
7. Fewer Guardrails
What is traded off
Plumego provides fewer enforced constraints.
It does not:
- Prevent misuse by design
- Lock you into specific patterns
- Automatically “fix” architectural mistakes
Why this tradeoff exists
Strong guardrails can become rigid walls.
Plumego favors:
- Flexibility within clear boundaries
- Engineering judgment over enforcement
- Adaptability over prescription
What this means for you
- Mistakes are possible
- Responsibility is shared by the team
- Internal guidelines matter
Tradeoffs as a Design Signal
None of these tradeoffs are accidental.
Together, they signal a clear position:
Plumego optimizes for systems that must be understood and maintained over long periods of time.
If your priorities align with:
- Speed over clarity
- Convenience over control
- Ecosystem over ownership
Plumego is not the right choice.
That is not a failure — it is a deliberate boundary.
Summary
By choosing Plumego, you accept:
- Slower initial progress
- More explicit code
- Fewer built-in features
- Greater engineering responsibility
In return, you gain:
- Predictable behavior
- Clear boundaries
- Long-term maintainability
- Architectural freedom
This exchange only makes sense if you value the latter more than the former.
Next
To clearly understand when these tradeoffs become unacceptable, continue with:
→ When Not to Use Plumego