# ADR-059: Full Feed Media Standardization (Option 3) ## Status Proposed (For v1.3.0 Backlog) ## Context StarPunk v1.2.0 introduced media attachments for notes (images). The initial implementation embeds media as HTML in feed description fields. Option 2 (implemented in v1.2.x) adds Media RSS extension elements and JSON Feed image fields for better feed reader compatibility. This ADR documents Option 3: Full Standardization, which provides comprehensive media support across all syndication formats, including video, audio, and advanced features. This is planned for v1.3.0 or later. ## Decision Document the scope of "Full Standardization" for feed media support to be implemented in a future release. This option goes beyond Option 2's basic Media RSS support to include: 1. **Complete Media RSS Specification Support** 2. **Podcast RSS Support (RSS 2.0 enclosures for audio)** 3. **Video Support** 4. **Multiple Image Sizes/Thumbnails** 5. **Full JSON Feed 1.1 Media Compliance** ## Scope of Full Standardization ### 1. Complete Media RSS Implementation **Research Required**: Full Media RSS specification at https://www.rssboard.org/media-rss **Elements to Implement**: - `` with full attribute support: - `url` (required) - Direct URL to media file - `fileSize` - Size in bytes - `type` - MIME type - `medium` - Type: "image", "audio", "video", "document", "executable" - `isDefault` - Boolean for default rendition - `expression` - "full", "sample", "nonstop" - `bitrate` - Kilobits per second - `framerate` - Frames per second (video) - `samplingrate` - Samples per second (audio) - `channels` - Audio channels - `duration` - Seconds - `height` / `width` - Dimensions in pixels - `lang` - RFC-3066 language code - `` - Container for multiple renditions of same content - `` - Multiple sizes with url, width, height, time - `` - Media title (type="plain" or "html") - `` - Media description (type="plain" or "html") - `` - Comma-separated keywords - `` - Categorization with scheme attribute - `` - Credit attribution with role and scheme - `` - Copyright information - `` - Content rating (scheme-based) - `` - MD5/SHA-1 hash for integrity - `` - Embeddable player URL **Effort Estimate**: 8-12 hours ### 2. Podcast RSS Support **Research Required**: - Apple Podcast RSS specification - Google Podcast RSS requirements - Podcast Index namespace (podcast:) **Elements to Implement**: - iTunes namespace (`xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"`): - `` - Episode summary - `` - Audio duration (HH:MM:SS) - `` - Episode artwork - `` - Content rating - `` - Episode number - `` - Season number - `` - "full", "trailer", "bonus" - `` - Author name - `` - Owner contact - Standard RSS `` for audio: - `url` - Direct audio file URL - `length` - File size in bytes - `type` - MIME type (audio/mpeg, audio/mp4, etc.) **Database Changes**: - Add `duration` column to `note_media` table - Add `media_type` enum (image, audio, video) - Consider `podcast_metadata` table for series-level data **Effort Estimate**: 10-16 hours ### 3. Video Support **Research Required**: - Video hosting considerations (storage, bandwidth) - Supported formats (mp4, webm, ogg) - Transcoding requirements - Poster image generation **Implementation Scope**: - Accept video uploads via Micropub media endpoint - Generate poster thumbnails automatically - Include in Media RSS with proper video attributes: - `medium="video"` - `framerate`, `duration`, `bitrate` - Associated `` for poster - HTML5 `