syntaxis/docs/installation/installation-comparison.md

494 lines
14 KiB
Markdown
Raw Permalink Normal View History

# Installation System: Current vs Proposed
**Quick Reference:** Understanding the improvements to target installation with configs and wrappers
---
## Current System (Status Quo)
### Installation Flow
```
User runs: install-cli.nu all
1. COMPILE
└─ cargo build --release (workspace)
2. INSTALL BINARIES
├─ cargo install --path syntaxis-cli
│ └─ Binary → ~/.cargo/bin/workspace
├─ cargo install --path syntaxis-tui
│ └─ Binary → ~/.cargo/bin/syntaxis-tui
├─ cargo install --path syntaxis-api
│ └─ Binary → ~/.cargo/bin/syntaxis-api
└─ cargo install --path syntaxis-dashboard
└─ No binary (library)
3. CLEANUP (optional)
└─ Remove target/ directories
RESULT: Binaries in ~/.cargo/bin/, everything else user's responsibility
```
### Configuration Management
```
Where configs are:
├── syntaxis/syntaxis-api-config.template.toml ❌ Still named "syntaxis-api"
└── syntaxis/configs/features/*.toml.template
How binaries find config:
├─ Hardcoded path "configs/default.toml"
├─ Environment variable CONFIG_PATH (if set by user)
└─ No standardized discovery
Where configs end up:
└─ Nowhere! (User must manually copy/manage)
Result:
❌ Configs not deployed
❌ Binaries can't find configs
❌ No installation tracking
```
### User Experience
```
$ just scripts-install
✅ workspace: Installed successfully
✅ syntaxis-tui: Installed successfully
✅ syntaxis-api: Installed successfully
$ workspace --version
❌ Error: Config file not found at configs/default.toml
$ nano syntaxis-api.toml
# Manually edit configuration
$ WORKSPACE_CONFIG_PATH=/home/user/syntaxis-api.toml syntaxis-api
# User must manually set environment variable
```
### Problems with Current System
| Problem | Impact | Severity |
|---------|--------|----------|
| Config templates not deployed | User must manually copy configs | 🔴 Critical |
| Binaries can't find deployed configs | Application fails to start | 🔴 Critical |
| No standard config location | Different users have different setups | 🟠 High |
| No installation tracking | Can't verify what's installed | 🟠 High |
| Config filename wrong (lifecycle) | Confusion about which project | 🟡 Medium |
| No wrapper scripts | No automatic environment setup | 🟡 Medium |
| Manual environment setup | Users forget to set variables | 🟡 Medium |
---
## Proposed System (After Phase 1-4)
### Installation Flow
```
User runs: just scripts-install
1. COMPILE
└─ cargo build --release (workspace)
2. INSTALL BINARIES
├─ cargo install --path syntaxis-cli
│ └─ Binary → ~/.cargo/bin/workspace
├─ cargo install --path syntaxis-tui
│ └─ Binary → ~/.cargo/bin/syntaxis-tui
├─ cargo install --path syntaxis-api
│ └─ Binary → ~/.cargo/bin/syntaxis-api
└─ cargo install --path syntaxis-dashboard
└─ No binary (library)
3. DEPLOY CONFIGURATIONS (NEW)
├─ Create ~/.config/core/
├─ Copy syntaxis-api-config.template.toml
├─ Copy configs/features/*.toml.template
└─ Validate all configurations
4. INSTALL WRAPPERS (NEW - Phase 2)
├─ Rename ~/.cargo/bin/workspace → ~/.cargo/bin/workspace.real
├─ Create wrapper script at ~/.cargo/bin/workspace
│ └─ Finds config, sets up environment, calls .real binary
└─ Same for syntaxis-tui, syntaxis-api
5. REGISTER IN MANIFEST (NEW)
├─ Create .syntaxis/manifest.toml
├─ Track installed binaries (name, version, path)
├─ Track deployed configs (type, location)
└─ Save installation metadata
6. VERIFY INSTALLATION (NEW)
└─ Test each wrapper, validate configs, print summary
RESULT: Fully configured, ready-to-run binaries with tracked installation
```
### Configuration Management
```
Where configs are:
├─ syntaxis/syntaxis-api-config.template.toml ✅ Renamed, correct name
├─ syntaxis/configs/features/auth.toml.template
├─ syntaxis/configs/features/database.toml.template
├─ syntaxis/configs/features/cache.toml.template
├─ syntaxis/configs/features/health.toml.template
├─ syntaxis/configs/features/metrics.toml.template
├─ syntaxis/configs/features/multi_tenant.toml.template
├─ syntaxis/configs/features/rate_limit.toml.template
├─ syntaxis/configs/features/projects.toml.template ✅ NEW
├─ syntaxis/configs/features/tasks.toml.template ✅ NEW
├─ syntaxis/configs/features/phases.toml.template ✅ NEW
└─ syntaxis/configs/features/audit.toml.template ✅ NEW
Where configs end up:
├─ ~/.config/core/syntaxis-api.toml ✅ Standard location
└─ ~/.config/core/features/*.toml ✅ Feature configs
How binaries find config:
├─ Wrapper script sets WORKSPACE_CONFIG_DIR
├─ Automatic find-config utility discovers:
│ ├─ ~/.config/core/
│ ├─ .project/
│ └─ .coder/
└─ Code respects environment variables
Installation tracking:
└─ .syntaxis/manifest.toml tracks:
├─ syntaxis-api version, path, installation date
├─ All deployed feature configs
├─ Configuration versions
└─ Enable/disable status
Result:
✅ All configs deployed automatically
✅ Binaries can find configs
✅ Standard location (~/.config/)
✅ Installation fully tracked
```
### User Experience
```
$ just scripts-install
🔨 Installing syntaxis binaries...
✅ workspace: Installed successfully
✅ syntaxis-tui: Installed successfully
✅ syntaxis-api: Installed successfully
📋 Configurations deployed to:
~/.config/core/
├─ syntaxis-api.toml
└─ features/
├─ auth.toml
├─ database.toml
├─ cache.toml
├─ health.toml
├─ metrics.toml
├─ multi_tenant.toml
├─ rate_limit.toml
├─ projects.toml
├─ tasks.toml
├─ phases.toml
└─ audit.toml
✅ Registered 1 binary and 11 configurations in manifest
Next steps:
workspace --version # Test workspace CLI
syntaxis-tui # Launch TUI
syntaxis-api # Start REST API
$ workspace --version
syntaxis v0.1.0
Config loaded from: ~/.config/core/syntaxis-api.toml
Data directory: ~/.local/share/core/
$ nano ~/.config/core/syntaxis-api.toml
# User can easily edit configuration
$ syntaxis-api
Config loaded ✅
Features enabled:
✅ database (SQLite)
✅ auth (JWT)
✅ metrics (Prometheus)
✅ rate_limit (enabled)
✅ health (enabled)
Server listening on 0.0.0.0:8080
```
### Benefits of Proposed System
| Improvement | Before | After | Impact |
|-------------|--------|-------|--------|
| **Config Deployment** | Manual copy | Automatic | 🟢 Saves 5 mins |
| **Config Discovery** | User setup env var | Automatic with wrapper | 🟢 Just works |
| **Config Location** | Scattered | ~/.config/core/ | 🟢 Standard |
| **Installation Tracking** | Manual notes | manifest.toml | 🟢 Automatic audit |
| **Config Naming** | "syntaxis-api" (wrong) | "syntaxis-api" (correct) | 🟢 No confusion |
| **Workspace Features** | Missing (projects, tasks, etc.) | Complete templates | 🟢 Extensible |
| **User Onboarding** | Complex setup | Single command | 🟢 User friendly |
| **Environment Setup** | Manual variables | Wrapper handles | 🟢 Reliable |
| **Uninstallation** | Scattered cleanup | Manifest-tracked | 🟢 Clean removal |
---
## Implementation Phases
### Phase 1: Configuration Deployment ✅ Ready to Start
**Duration:** 1-2 weeks
```
Current: ❌ Configs not deployed
After: ✅ Configs automatically deployed during installation
✅ Workspace-specific templates created
✅ Standard config location established
✅ Installation tracked in manifest
```
**What Gets Done:**
- Rename syntaxis-api → syntaxis-api
- Create projects, tasks, phases, audit templates
- Update installation script to copy configs
- Create installation guide
**User Impact:** "Configs are automatically deployed where they belong"
---
### Phase 2: Wrapper Scripts 🔜 Next
**Duration:** 1-2 weeks
```
Current: ❌ No wrapper scripts
After: ✅ Wrapper scripts setup environment
✅ Config auto-discovery
✅ Env variables automatically set
✅ Binary execution just works
```
**What Gets Done:**
- Create wrapper script generator
- Rename binaries, create wrapper scripts
- Setup environment variables
- Document wrapper architecture
**User Impact:** "Binaries just work, no manual setup needed"
---
### Phase 3: Manifest Enhancement 🔜 Later
**Duration:** 1 week
```
Current: ❌ No version/config tracking
After: ✅ Full installation audit trail
✅ Easy rollback capability
✅ Config version management
```
**What Gets Done:**
- Extend manifest.toml schema
- Add config validation
- Track configuration versions
- Support rollback
**User Impact:** "Can track and rollback installations"
---
### Phase 4: Documentation & Testing 🔜 Final
**Duration:** 1 week
```
Current: ❌ Scattered documentation
After: ✅ Complete guides (Installation, Configuration, Wrapper)
✅ Integration tests
✅ Troubleshooting guide
```
**What Gets Done:**
- Create docs/installation-guide.md
- Create docs/configuration.md
- Create WRAPPER_GUIDE.md
- Add integration tests
**User Impact:** "Clear documentation for every scenario"
---
## Side-by-Side Comparison: CLI Usage
### Current System
```bash
# Step 1: Install (works)
$ just scripts-install
✅ workspace: Installed
# Step 2: Try to run (fails)
$ workspace --version
Error: Config not found at configs/default.toml
# Step 3: Manual setup (user must do this)
$ export CONFIG_PATH=/home/user/workspace.toml
$ cp syntaxis-api.toml /home/user/workspace.toml
$ nano /home/user/workspace.toml # Edit
# Step 4: Run again (works if config is correct)
$ workspace --version
syntaxis v0.1.0
# User must repeat steps 3-4 for each command
$ export CONFIG_PATH=/home/user/workspace.toml && syntaxis-api
```
### Proposed System (After Phase 1)
```bash
# Step 1: Install (includes configs)
$ just scripts-install
✅ workspace: Installed
✅ Configs deployed to ~/.config/core/
# Step 2: Run immediately (just works)
$ workspace --version
syntaxis v0.1.0
Config: ~/.config/core/syntaxis-api.toml
# Step 3: Customize if needed
$ nano ~/.config/core/syntaxis-api.toml
# Step 4: Run again with custom config (automatically picked up)
$ syntaxis-api
Features loaded from: ~/.config/core/
Server listening on 0.0.0.0:8080
# No environment variables needed, no manual setup
```
---
## Architecture Summary
### Current
```
┌─────────────────┐
│ User runs CLI │
└────────┬────────┘
├─ Binary installed
└─ ❌ Config not found
❌ Env var not set
❌ Fails to start
```
### Proposed
```
┌─────────────────────────────────────┐
│ 1. just scripts-install │
│ (Compile + Install + Deploy) │
└────────┬────────────────────────────┘
├─ Binaries to ~/.cargo/bin/
├─ Configs to ~/.config/core/
├─ Wrappers setup environment
└─ Manifest tracks installation
┌─────────────────────────────────────┐
│ 2. User runs binary (e.g., syntaxis-api) │
└────────┬────────────────────────────┘
├─ Wrapper script executes
│ ├─ Find config file
│ ├─ Set environment variables
│ └─ Validate configuration
└─ Binary starts with config loaded
✅ Server running
✅ Features enabled
✅ Listening on port 8080
```
---
## Key Differences Table
| Aspect | Current | Proposed |
|--------|---------|----------|
| **Config Deployment** | Manual | Automatic during install |
| **Config Location** | User responsibility | ~/.config/core/ |
| **Config Discovery** | Hardcoded path | Automatic + env var support |
| **Environment Setup** | User must setup | Wrapper script does it |
| **Installation Tracking** | None | .syntaxis/manifest.toml |
| **Getting Started** | 5+ manual steps | 1 command (just scripts-install) |
| **Troubleshooting** | Complex | Clear error messages + docs |
| **Config Templates** | Incomplete | Complete with workspace features |
---
## Next Steps
### For Understanding
1. Read **INSTALLATION_ARCHITECTURE.md** for full design
2. Read **PHASE_1_IMPLEMENTATION.md** for first tasks
3. This document (quick reference)
### For Implementation
1. **Start Phase 1** when ready:
- 30 mins: Rename config files
- 1 hour: Create workspace feature templates
- 1 hour: Update installation script
- 1 hour: Create documentation
- Total: ~4 hours per developer
2. **Phase 1 Success Criteria:**
- ✅ Configs deployed to ~/.config/core/
- ✅ Installation script updated
- ✅ Templates created for projects, tasks, phases, audit
- ✅ Documentation added
- ✅ All tests pass
3. **Then Phase 2:**
- Wrapper script implementation
- Environment setup automation
- Testing
---
**Document Version:** 1.0
**Status:** Ready to Share
**Created:** November 15, 2025
See **INSTALLATION_ARCHITECTURE.md** for full technical details.
See **PHASE_1_IMPLEMENTATION.md** for implementation checklist.