From 09d812d2d031bbde9f546fef9c04a8e7fd1558af Mon Sep 17 00:00:00 2001 From: stephen mcquay Date: Sat, 24 Feb 2018 10:05:33 -0800 Subject: [PATCH] Add some background --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index 1d53237..aa8c3ac 100644 --- a/README.md +++ b/README.md @@ -1 +1,24 @@ # pm: a simple, cross-platform system package manager + +`pm` exists amid a set of trade-offs in distributing software. The ideas behind +`pm` were born at a time when: + +- There was no overlap in the Venn diagram of system package managers that + offered both strong security promises (signed packages) and permissive + licensing (most are GPL). +- There was reason to suspect that Unix systems might be shipped without + scripting languages; software like [brew](https://brew.sh) would cease to + work and engineers would be left without a way to fetch and install software. +- Engineers wanted to deploy software to a variety of Unix-like environments + using a single system. +- Engineers wanted a simple-to-reason-about system that used familiar Unix + primitives as building blocks to distribute their software. + +Simplicity is a principal design goal of this project. When offered an +opportunity to chose between two designs the design that requires less mental +scaffolding to describe or implement should be used. As a concrete example: +transitive dependency calculations are implemented, but supporting compatible +version *ranges* are not. + +The project is currently in early design phases, and this document describes +the high-level approach of the project.