Back to projects
Data 2024

Setting Up a Collaborative Python Development Environment

Lead Developer at Refugee Solidarity Network

Skills

ProgrammingProblem SolvingResearch

Technologies

PythonDockerGitJupyter

Team Size

3 people

View project

When initiating a Python-heavy research project exploring LLMs for refugee legal information, I designed and documented a cloud-based development environment that enables real-time collaboration while ensuring reproducibility across the team.

$0 Infrastructure cost
3 Team members enabled
1-click Ready-to-code state

The Challenge

Research projects with multiple contributors face a common problem: the “works on my machine” issue. Different operating systems, Python versions, and locally-installed packages create friction that slows down meaningful collaboration. For a non-profit team with varying technical backgrounds, we needed an approach that:

  • Minimized barriers to entry for new contributors
  • Ensured consistent, reproducible environments across the team
  • Handled secure credential management for API access
  • Cost nothing (or close to it)

The Solution

  1. 1

    Architecture Decision

    Evaluated containerization approaches, weighing local Docker setups against cloud-based development environments for our specific constraints.

  2. 2

    GitPod Configuration

    Created custom Dockerfile and workspace configuration to standardize Python version and pre-install dependencies on container startup.

  3. 3

    Workflow Design

    Integrated with GitHub for version control and Jupyter Notebook for research documentation, enabling day-one contribution from new team members.

  4. 4

    Documentation

    Published detailed technical guide with decision rationale, enabling other teams to adapt the approach for their own projects.

Technical Implementation

The environment configuration is defined in two files:

.gitpod.Dockerfile - Ensures consistent Python version (3.11) across all contributors, critical for Langchain compatibility.

.gitpod.yml - Automates dependency installation on workspace startup via pip install -r requirements.txt.

Contributors access a ready-to-code environment by prepending gitpod.io/# to the GitHub repo URL—no local setup required.

Impact

The infrastructure enabled our small team to focus on research rather than environment troubleshooting. New contributors could make meaningful contributions on day one, and the published guide has helped other teams facing similar challenges adopt reproducible collaborative workflows.

Read the Full Technical Guide

Step-by-step walkthrough with code examples and decision rationale

kevin-cole.com