-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
I'd like to formalize how the Podcast Standards Project adopts new features and standards (how we move from idea to adoption).
One thing we're all learning: creating a broad consensus on adopting a new feature, across multiple companies + platforms, is challenging!
We need a clear, transparent process that balances community input with practical implementation.
We also need something that allows us to backtrack if we feel like a specific feature doesn't merit broad adoption.
Proposed Process
Feature/Standard Suggested → Discussion → Research → Vote (Yay/Nay) → Beta → Vote (Yay/Nay) → Standard Phase 1: Optional → Standard Phase 2: Required
1. Feature/Standard Suggested
- Features bubble up during our meetings (at events), in Slack, from user research, and from the Podcasting 2.0 community
- If there's sufficient interest, we discuss it more formally
2. Discussion
- Feature is discussed during meetings + Slack
- Formal discussion should happen on GitHub as an Issue
- "Feature Champion" should be assigned
- Discussion of use cases, edge cases, and alternatives
3. Research
- "Feature Champion" goes out and does research
- Answers these questions
- What kind of appetite is there from Creators/Listeners for this?
- What kind of appetite is there from Apps?
- What kind of appetite is there from Hosting Providers?
- What could this feature look like if we implemented it and standardized it?
- Technical specification draft
- Implementation requirements
- Demo
A good example of this phase is what @albertobeta did here:
https://docs.google.com/document/d/1ByqYF0Rwmio9ugDkVg4_6wHXc8bjRBcMab5SLXrlzqg/edit?tab=t.0#heading=h.32lc1e4nrou8
4. Vote 1: Proceed to Beta?
- Entry: Research phase complete
- Voting Body: PSP Steering Committee [to be defined]
- Threshold: [Supermajority / Consensus - TBD]
- Question: "Should this proceed to beta testing?"
- On Failure:
- Proposal can be revised and resubmitted
- Or marked as "Postponed" with clear reasoning
- Champion may appeal decision
5. Beta
- Entry: Vote 1 passes
- Requirements:
- Implementation guide published
- Test suite/validation tools available (if applicable)
- Regular status updates from implementers
- Tracking:
- Which platforms/apps have implemented
- Issues discovered
- User feedback and adoption metrics
- Refinement: Minor adjustments allowed; major changes require returning to Research
- Exit Criteria:
- Successful implementations in production
- No critical unresolved issues
- Demonstrated real-world value
6. Vote 2: Adopt as Standard?
- Entry: Beta period complete
- Voting Body: PSP Steering Committee
- Threshold: [Supermajority / Consensus - TBD]
- Question: "Should this be adopted as an official PSP standard?"
- Review Materials:
- Beta implementation report
- Community feedback summary
- Any changes made during beta
- On Failure:
- Continue beta with specific improvement goals
- Or sunset the feature with documented reasoning
7. Standard Phase 1: Optional
- Entry: Vote 2 passes
- Status: Officially recognized PSP standard
- Expectation:
- Platforms/apps MAY implement this feature
- Should be documented in official PSP specifications
- Implementations should follow the standard specification
- Purpose: Prove broad adoption and stability
8. Standard Phase 2: Required
- Entry: Demonstrated broad adoption during Phase 1
- Status: Core standard
- Expectation:
- PSP members a required to support this feature
- Note: True "required" status may only apply to specific categories (e.g., "video podcast apps MUST support HLS")
Special Paths
Withdrawal
- A proposal can be withdrawn at any stage by the champion
Fast Track
- For urgent security fixes or critical compatibility issues
Rejection/Postponement
- Failed votes don't mean permanent rejection
- Proposals can be revised and resubmitted
- Clear reasoning must be documented
Examples from Other Standards Bodies
- IETF: Internet-Draft → RFC with rough consensus
- W3C: Working Draft → Candidate Recommendation → Recommendation
- TC39 (JavaScript): Stage 0-4 with clear advancement criteria
- Python PEPs: Draft → Discussion → Acceptance → Final
- Rust RFCs: Pre-RFC → RFC → Implementation → Stabilization
===
What are your thoughts on this process?
MerryOscar and albertobeta