Skip to content

Python Package Distribution Strategy #18

@thliang01

Description

@thliang01

🎯 Issue Summary

With the recent code quality improvements and PyPA standards implementation, I'd like to discuss the roadmap for making TwinRAD a distributable Python package. The codebase now has solid foundations with proper src/ layout and pyproject.toml configuration - are there plans to publish TwinRAD as an installable package?

🔍 Current Status

Package-Ready Infrastructure

  • Modern src/twinrad/ layout following PyPA standards
  • Complete pyproject.toml with proper metadata and dependencies
  • Console scripts configured (twinrad, twinrad-server, twinrad-dashboard)
  • Version management in place (currently 0.1.0)
  • Isolated service configurations working

🤔 Distribution Questions

  1. Publishing Strategy: Are there plans to publish TwinRAD to PyPI for easy installation?
  2. Package Scope: Would this be a single package or multiple packages for different components?
  3. Version Management: How should we handle versioning strategy for releases?
  4. Dependencies: Should we consider optional dependencies for different use cases?

💡 Potential Benefits

For Users

# Instead of manual setup
git clone https://github.com/ai-twinkle/TwinRAD.git
cd TwinRAD
pip install -e .

# Simple package installation
pip install twinrad
twinrad --help

For Development

  • Easier onboarding: New contributors can quickly install and test
  • Version control: Clear release management and changelog
  • Dependency management: Proper handling of optional components
  • Distribution: Wider reach for the red teaming framework

🛠️ Implementation Reference

The uv packaging guide provides excellent patterns we could follow:

Build & Publish Workflow

# Build the package
uv build

# Publish to PyPI
uv publish

Potential Package Structure

# Core package
pip install twinrad

# With optional dashboard dependencies
pip install twinrad[dashboard]

# Development dependencies
pip install twinrad[dev]

🎯 Proposed Next Steps

  1. Package Strategy Discussion: Define scope and distribution approach
  2. PyPI Namespace: Secure twinrad package name if available
  3. Release Automation: Set up CI/CD for automated publishing
  4. Documentation: Update installation docs for package users

📋 Questions for Discussion

  • Timeline: What's the timeline for package distribution?
  • Maintenance: Who would manage PyPI releases and version updates?
  • Dependencies: Should dashboard/server be optional extras or separate packages?
  • Versioning: Semantic versioning strategy for the framework?

🔗 References


CC: @solarfresh
Priority: Enhancement
Type: Discussion, Package Management

This would significantly improve the accessibility and adoption of the TwinRAD framework. Looking forward to your thoughts on the packaging strategy!

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussionIssues open for conersation, questions, or feedback.enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions