to and maintaining OSS projects and communities for +15 years Recognise the challenges and opportunities ahead to continue to serve our community This topic has been in my head non-stop for a while
an end-user community, developer community*, or many different groups? *data scientists, researchers, research software engineers, hobbyists… choose your group
to do the job for the user • Find their niche and stick to it* • Do not reinvent the wheel & preserve context But good tools share some traits * Unix philosophy: Do one thing and do it well
hammers, scissors, and tape, instead of having finely-crafted pieces that are designed to fit together. https://rachelbythebay.com/w/2020/08/14/jobs/ Remember the cloud migration and what followed?
on data- driven, factual narratives detailing the corruption of local governments in the global South • Needs to: analyse data (csv, json, etc.), identify patterns, and create narratives and visualisations to inform the general public • Has Python installed
packages. download Download packages. uninstall Uninstall packages. freeze Output installed packages in requirements format. inspect Inspect the python environment. list List installed packages. show Show information about installed packages. check Verify installed packages have compatible dependencies. config Manage local and global configuration. search Search PyPI for packages. cache Inspect and manage pip's wheel cache. pip is the package installer for Python. You can use pip to install packages from the Python Package Index and other indexes. Affordances and signifiers
[--no-plugins] [-V] COMMAND ... conda is a tool for managing and deploying applications, environments and packages. commands: The following built-in and plugins subcommands are available. COMMAND activate Activate a conda environment. build Build conda packages from a conda recipe. clean Remove unused packages and caches. compare Compare packages between conda environments. config Modify configuration values in .condarc. convert Convert pure Python packages to other platforms (a.k.a., subdirs). create Create a new conda environment from a list of specified packages. deactivate Deactivate the current active conda environment. install Install a list of packages into a specified conda environment. develop Install a Python package in 'development mode'. Similar to `pip install --editable`
and install Python packages tool Run and manage executable Python packages venv Create a virtual environment cache Manage the cache version Display uv's version help Print this message or the help of the given subcommand(s) An extremely fast Python package installer and resolver, written in Rust. Designed as a drop-in replacement for common pip and pip- tools workflows. Affordances and signifiers
designed to streamline the management of your project's dependencies, tasks, and environments. Built on top of the Conda ecosystem, Pixi offers seamless integration with the PyPI ecosystem. Basic Usage: Initialize pixi for a project: $ pixi init $ pixi add python numpy pytest Run a task: $ pixi add task test 'pytest -s' $ pixi run test Usage: pixi [OPTIONS] <COMMAND> Commands: init Creates a new project add Adds dependencies to the project [aliases: a] remove Removes dependencies from the project [aliases: rm] install Install all dependencies [aliases: i] Affordances and signifiers
Install a list of packages into a specified conda environment. $ uv —help $ uv pip # Resolve and install Python packages $ uv pip install —help Install packages into the current environment Usage: uv pip install [OPTIONS] <PACKAGE|--requirement <REQUIREMENT>|--editable <EDITABLE>
install Python packages Commands: compile Compile a `requirements.in` file to a `requirements.txt` file sync Sync dependencies from a `requirements.txt` file install Install packages into the current environment $ uv pip install —help Install packages into the current environment Usage: uv pip install [OPTIONS] <PACKAGE|--requirement <REQUIREMENT>|--editable <EDITABLE> $ uv venv --help Create a virtual environment Usage: uv venv [OPTIONS] [NAME]
of examples • Suggest what command to run next • Suggest what to do when there is an error (feedback) Provide additional information and signals through manuals or documentation
developer) a lot of our work is about designing pathways for success (users, contributors, the project itself) • We will have to make trade offs • We will have to say no