Commit 017e5ea8 authored by Eric Timmons's avatar Eric Timmons
Browse files

Add specs/clpi-object-model.org

parent c983e330
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ purely declarative specification of projects and their systems.
  documented and supported by this project is v0.4. The specification is
  located at [[file:specs/clpi-0.4.org][specs/clpi-0.4.org]].

  A brief description of CLPI's object model is located at
  [[file:specs/clpi-object-model.org][specs/clpi-object-model.org]].

* Taxonomy
  This section attempts to ground the definitions of several terms used
  throughout this documentation.
+50 −0
Original line number Diff line number Diff line
#+TITLE: CLPI Object Model
#+AUTHOR: Eric Timmons
#+EMAIL: clpm-devel@common-lisp.net

This document provides a brief overview of the object model and terminology
used within CLPI.

* Project Index

  A project index contains information on both projects and systems.

* Project

  A project consists of some metadata and a set of releases.

  Project metadata can include:

  1. The project's VCS repository,
  2. a list of authors,
  3. a list of maintainers,
  4. and a homepage.

* System

  A system is merely the name of an ASDF system. Systems are provided by
  releases of projects in the form of "system releases". Additionally, systems
  can have the following metadata:

  1. The primary project where the system is developed. Systems can move
     between projects over time, but at any given time, a system must have a
     single "primary" project where it is actively developed.

* Release

  A release of a project is defined by the following metadata:

  1. A version string naming the release. Must be unique within the project.
  2. a URL where the release can be located.
  3. a list of system releases provided by the release

* System release

  A system release is a grounded system. That is, something that is loadable by
  ASDF. A system release is defined by:

  1. The name of the system,
  2. a description,
  3. a license,
  4. a version string,
  5. a list of dependencies.