Skip to content

Latest commit

 

History

History
183 lines (138 loc) · 5.26 KB

File metadata and controls

183 lines (138 loc) · 5.26 KB

PodletJS Roadmap

Current Status: ✅ Feature Complete (v1.0.0)

PodletJS successfully implements the core functionality of the original Podlet (Rust) with:

  • Docker run command parsing (40+ flags supported)
  • Docker Compose file parsing (multi-service with dependencies)
  • Quadlet file generation (complete systemd integration)
  • Comprehensive testing (200+ test cases)

The tool is production-ready for 90%+ of real-world use cases.


Future Enhancements

1. Pod Generation Support

Status: Not implemented
Effort: Medium
Impact: High for multi-container deployments

  • --pod flag support for compose files
  • Generate .pod Quadlet files automatically
  • Pod-level port publishing (move ports from containers to pod)
  • Container-to-pod linking

Use Case: Convert compose services into a single Podman pod instead of separate containers.

# Input: compose with --pod flag
services:
  web:
    ports: ["8080:80"]
  api:
    ports: ["3000:3000"]

# Output: 
# - app.pod (with both ports)
# - app-web.container (linked to pod)
# - app-api.container (linked to pod)

2. Build Context Handling

Status: Placeholder implementation
Effort: Medium
Impact: Medium for development workflows

  • Parse build sections in compose files
  • Generate .build Quadlet files
  • Handle build context paths and Dockerfiles
  • Build argument support
  • Multi-stage build support

Current Limitation: Services with build get placeholder image names like servicename.build.

# Currently limited support
services:
  app:
    build:
      context: ./app
      dockerfile: Dockerfile.prod
      args:
        NODE_ENV: production

3. Podman Version Compatibility

Status: Not implemented
Effort: Low-Medium
Impact: Medium for older Podman versions

  • Podman version detection/specification
  • Feature downgrading for older versions
  • Quadlet option compatibility matrix
  • Validation warnings for unsupported features

Use Case: Ensure generated Quadlet files work with specific Podman versions (4.4, 4.5, 5.0, etc.).


4. CLI Tool Interface

Status: Not implemented
Effort: Low
Impact: High for end-user experience

  • Command-line interface (like original Podlet)
  • File input/output options
  • Batch processing support
  • --file, --unit-directory flags
  • Progress reporting for large compose files

Use Case:

npx podlet-js docker run nginx:latest
npx podlet-js compose docker-compose.yml --output ./quadlets/

5. Extended Compose Features

Status: Partial/Not implemented
Effort: Medium-High
Impact: Low-Medium (edge cases)

  • Configs support (when Quadlet supports it)
  • Secrets support (when Quadlet supports it)
  • Extension fields (x-*)
  • Advanced networking (custom drivers, IPAM)
  • Deploy section (replicas, resources, placement)
  • Profiles support

Current Status: These features are intentionally not supported as Quadlet/Podman doesn't have equivalents yet.


6. Developer Experience Improvements

Status: Basic implementation
Effort: Low
Impact: Medium for developers

  • TypeScript definitions for better IDE support
  • VS Code extension for Quadlet syntax highlighting
  • JSON Schema for compose validation
  • Plugin system for custom transformations
  • Debug mode with detailed transformation logs

7. Advanced Output Options

Status: Basic implementation
Effort: Low-Medium
Impact: Medium for integration

  • YAML output format (alternative to INI)
  • JSON output for programmatic use
  • Kubernetes YAML generation (like original Podlet)
  • Template system for custom output formats
  • Diff mode for comparing changes

🐛 Known Limitations & Fixes

Minor Issues

  • Some docker run flags only added to PodmanArgs (not native Quadlet options)
  • Build contexts generate placeholder images instead of proper build files
  • Network aliases handling could be more sophisticated
  • Volume mount option parsing could be more robust

Compatibility Gaps

  • Some advanced Podman-specific flags not supported
  • Compose interpolation (environment variable substitution)
  • Compose include directive
  • Docker Swarm specific features (by design - not applicable)

Priority Ranking

🔥 High Priority (would significantly improve utility)

  1. CLI Tool Interface - Makes it usable as a standalone tool
  2. Pod Generation Support - Major feature gap from original Podlet
  3. Build Context Handling - Important for development workflows

🌟 Medium Priority (nice to have)

  1. Podman Version Compatibility - Important for enterprise use
  2. TypeScript Definitions - Better developer experience
  3. Advanced Output Options - Integration flexibility

🔮 Low Priority (future/edge cases)

  1. Extended Compose Features - Waiting on Podman/Quadlet support
  2. Plugin System - Over-engineering for current scope
  3. VS Code Extension - Separate project territory

Contributing

Send pull a requests if you're interested in implementing any of these features.