# ADR-022: Multiple Syndication Format Support ## Status Proposed ## Context StarPunk currently provides RSS 2.0 feed generation using the feedgen library. The IndieWeb community and modern feed readers increasingly support additional syndication formats: - ATOM feeds (RFC 4287) - W3C/IETF standard XML format - JSON Feed (v1.1) - Modern JSON-based format gaining adoption - Microformats2 - Already partially implemented for IndieWeb parsing Multiple syndication formats increase content reach and client compatibility. ## Decision Implement ATOM and JSON Feed support alongside existing RSS 2.0, maintaining all three formats in parallel. ## Rationale 1. **Low Implementation Complexity**: The feedgen library already supports ATOM generation with minimal code changes 2. **JSON Feed Simplicity**: JSON structure maps directly to our Note model, easier than XML 3. **Standards Alignment**: Both formats are well-specified and stable 4. **User Choice**: Different clients prefer different formats 5. **Minimal Maintenance**: Once implemented, feed formats rarely change ## Consequences ### Positive - Broader client compatibility - Better IndieWeb ecosystem integration - Leverages existing feedgen dependency for ATOM - JSON Feed provides modern alternative to XML ### Negative - Three feed endpoints to maintain - Slightly increased test surface - Additional routes in API ## Alternatives Considered 1. **Single Universal Format**: Rejected - different clients have different preferences 2. **Content Negotiation**: Too complex for minimal benefit 3. **Plugin System**: Over-engineering for 3 stable formats ## Implementation Approach 1. ATOM: Use feedgen's built-in ATOM support (5-10 lines different from RSS) 2. JSON Feed: Direct serialization from Note models (~50 lines) 3. Routes: `/feed.xml` (RSS), `/feed.atom` (ATOM), `/feed.json` (JSON) ## Effort Estimate - ATOM Feed: 2-4 hours (mostly testing) - JSON Feed: 4-6 hours (new serialization logic) - Tests & Documentation: 2-3 hours - Total: 8-13 hours