-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Closed
Labels
Milestone
Description
Problem
The current Python setup process requires multiple steps and understanding of virtual environments, which can be intimidating for non-developer users who just want to deploy a VPN:
python3 -m virtualenv --python="$(command -v python3)" .env &&
source .env/bin/activate &&
python3 -m pip install -U pip virtualenv &&
python3 -m pip install -r requirements.txt
This creates friction for our primary use case: security-conscious users who want a personal VPN but aren't necessarily Python developers.
Goals
- Minimize prerequisites - Reduce the number of tools users need to install
- Simplify commands - Make the setup process as simple as possible
- Reduce confusion - Avoid concepts like virtual environments if possible
- Maintain compatibility - Keep working for power users and developers
Proposed Solutions
Option 1: Single-file executable (Recommended for investigation)
- Use PyInstaller or similar to create platform-specific executables
- Users download one file and run it - no Python installation needed
- Pros: Zero Python knowledge required
- Cons: Larger download, platform-specific builds needed
Option 2: System packages approach
- Use system Python and install directly (with --user flag)
- Simplified one-liner:
python3 -m pip install --user -r requirements.txt
- Pros: Simple, works with system Python
- Cons: Potential conflicts, requires Python pre-installed
Option 3: Modern tooling with fallback
- Document uv as the fast, simple option:
uv pip install -r requirements.txt
- Keep traditional virtualenv as fallback
- Pros: Best of both worlds
- Cons: Still requires tool installation
Option 4: Docker/container approach
- Provide pre-built container with all dependencies
- One command:
docker run -it algo:latest
- Pros: Completely isolated, reproducible
- Cons: Requires Docker, may be overkill
Discussion Points
- What's our primary user persona? How technical are they?
- Are we willing to maintain platform-specific builds?
- Should we optimize for the Cloud Shell use case (where Python is pre-installed)?
- Is adding Docker as a dependency worse than Python for our users?
Next Steps
- Survey users about their comfort level with current setup
- Prototype the most promising approach
- Test with non-technical users
- Update documentation to emphasize the simplest path
The goal is to get users from zero to deployed VPN with minimal friction and minimal required knowledge about Python packaging.