README.org 2.01 KB
Newer Older
Eric Timmons's avatar
Eric Timmons committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#+TITLE: Common Lisp Project Index
#+AUTHOR: clpm-devel@common-lisp.net

This project provides the specification for the Common Lisp Project Index
(CLPI) as well as a reference implementation of a library to interact with and
create indices. A project index stores metadata about projects and systems
defined by those projects, with a primary use case of allowing package managers
to know which releases exist and to trace the dependencies of systems.

In an ideal world, much of the system information could be stored in the index
by merely supplying the .asd files that define the systems. However, .asd files
can include arbitrary code, require that other systems need to be loaded in
order to understand the system definition, and refer to other files (such as
for version numbers, system descriptions, or even children system definitions
in the case of package-inferred-systems). Therefore, the index exists as a
purely declarative specification of projects and their systems.

* Versions

  The CLPI specification is constantly evolving. As such, the specification is
  versioned and indices must declare which version(s) of the specification they
  support. Versions 0.1 and 0.3 have existed as undocumented implementations
  within the CLPM (Common Lisp Package Manager) code. The first version
  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]].

* Taxonomy
  This section attempts to ground the definitions of several terms used
  throughout this documentation.

** System

   A system refers to a system defined using ASDF. Systems have a name, a
   version, dependencies, a license, and a description.

** Project

   A project is a cohesive unit of one or more systems that are developed
   together. Projects have a name, maintainers, authors, source repository,
   homepage, and system(s).

** Release

   A release is a versioned snapshot of a project.

** System release

   A system release is a versioned snapshot of a system, contained within a
   release.