Skip to content

Latest commit

 

History

History
63 lines (40 loc) · 3.22 KB

CONTRIBUTING.md

File metadata and controls

63 lines (40 loc) · 3.22 KB

How To Contribute 🚀

Hello! 👋

Thank you for considering contributing to superduperdb. There are many ways to contribute, and they are not limited to writing code. We welcome all contributions such as:

  • bug reports
  • documentation improvements
  • enhancement suggestions
  • expanding the tutorials and examples

This project is intended to be a community effort, and it won't be possible without your support and enthusiasm.

Where to Start? 💥

If you're new to open-source development, we recommend going through the GitHub “issues” tab to find items that interest you. Once you’ve found something interesting, the next step is to create your development environment.

We follow something called a "fork and pull request" workflow for collaborating on our project. See here for a great overview on what some of these mysterious terms mean!

Once you've 'forked' and 'cloned' the code to your local machine, please follow these steps:

# Clone and change location directory of the superduperdb repository, change the `<FORKED_NAME>` to your GitHub id
git clone git@github.com:<FORKED_NAME>/superduperdb.git
cd superduperdb

# Create your Python virtual environment
python3 -m venv .venv

# Activate the Python virtual environment
. .venv/bin/activate  
# Install pip-tools and latest version of pip
python3 -m pip install --upgrade pip-tools

# Install the superduperdb project in editable mode along with the developer tools
python3 -m pip install -e '.[dev]'

The final steps to creating a development environment involve installing MongoDB, Docker and pandoc. Once you get this far, you are all set to start contributing - ship it! :shipit:

Interacting with the CI system 😰

How do I update the requirements files for CI? 🔗

  1. Activate your developer environment.
  2. Update the Changelog to reflect the changes you did.
  3. Create a Pull Request.

Why do we have so many requirements files for CI? 😕

The short answer is so that we can create reproducible environments for our continuous integration suite. We use pip-tools to create a pinned .txt version of dependencies that satisfies our version range constraints (for those familiar with poetry, this is similar to poetry.lock). A long-form answer of all this is available here.

Getting Help 🙋

Slack Issues Wiki

If you have any problems please contact a maintainer or community volunteer. The GitHub issues or the Slack channel are a great place to start. We look forward to seeing you there! 💜