Skip to content

Simplify Python setup for non-developer users #14776

@dguido

Description

@dguido

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

  1. Minimize prerequisites - Reduce the number of tools users need to install
  2. Simplify commands - Make the setup process as simple as possible
  3. Reduce confusion - Avoid concepts like virtual environments if possible
  4. 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

  1. What's our primary user persona? How technical are they?
  2. Are we willing to maintain platform-specific builds?
  3. Should we optimize for the Cloud Shell use case (where Python is pre-installed)?
  4. Is adding Docker as a dependency worse than Python for our users?

Next Steps

  1. Survey users about their comfort level with current setup
  2. Prototype the most promising approach
  3. Test with non-technical users
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions