---
# System prepended metadata

title: Deppy Overview
tags: [deppy]

---

---
title: Deppy Overview
authors:
- "@oceanc80"
- "@perdasilva"
reviewers:
- "@joelanford"
- "@bparees"
- "@timflannagan"
- "@benluddy"
- "@dmesser"
approvers:
  - "@joelanford"
  - "@bparees"
creation-date: 2022-09-19
last-updated: 2022-09-19
tags: deppy
---

# Deppy Overview

## Summary

Deppy is envisioned to be a general purpose on/off-cluster dependency and constraint resolver.

## Motivation

### User Stories

* As a user, I would like to tell Deppy the list of packages I want and have it tell me the bundles I need for those packages, including any dependencies. I should be able to input version constraints for those packages: always latest, latest within x-version, latest within y-version, latest within z-version, versions to ignore, and version ranges to consider. The solution will meet the constraints, or fail.
* As a user, I would like to tell Deppy the list of bundles that are installed on my cluster, such that I can know when there are upgrades and also to constrain the solution space based on the current state of the cluster. 
* As a user, I would like to arbitrarily restrict the bundles that can be installed on my cluster based on property values exposed by those bundles (i.e. maxOpenShiftVersion or minKubeVersion) to ensure only software for which the cluster meets the requirements will be installed.* As a user, I would like to be able to dry run resolution in order to test and evaluate a set of requirements before trying to apply them to a cluster.
* As a cluster admin, I would like to have clear and well-formatted resolution failure messages so that it's easier for me to understand which requirements caused the conflict.

### Goals

### Non-Goals

## Terminology

## Phase Proposals

### Phase 0

The Phase 0 proposal document can be found [here](https://hackmd.io/fDfcLKNzRPCgILMIQ8aPOw).

In this initial phase, we are targetting on-cluster resolution of CatalogSource content based on hard-coded constraints that enable the Platform Operators and OLM use-cases (i.e. package management). Users will be able to state which packages they want and inform the resolver of what is already installed on the cluster. Based on the content made available through the CatalogSources, Deppy will calculate which bundles are required and where to find them, or an error as to why the system of constraints is not solvable.

#### Requirements

#### Implementation Details

## Design Details

### Open Questions

### Answered Questions
