# Introduction to DALICC

Part of the [documentation index](../README.md#documentation).

DALICC treats a license as data. Behind every entry in its library is a model of what a
license actually says: the kinds of work it covers, what it lets you do, what it forbids,
the duties that come with each permission, and the warranty and liability text quoted
from the legal document itself. Because the licenses are models rather than prose, a
machine can read them, compare them, and work out whether two of them can live in the
same product.

DALICC is for anybody who has to answer a licensing question and would rather not answer
it by reading twelve legal texts. That means researchers publishing data, developers
picking a license for a repository, people assembling a work from parts that came with
different terms, and anybody who needs a license of their own written down properly.

**It is not legal advice.** Every model is one reading of a legal text, and the
compatibility checker answers from the rules it was given. Get legal advice before you
rely on any of it.

## The tools

**[License Library](USERS.md#2-find-a-license)** is the catalogue: 290 distinct licenses,
with 289 further records that are ports or editions of them: the same license adapted to
another legal system, or reissued by another body. Search it
by keyword, or open a license directly by its identifier, including an SPDX one the SPDX
license list has deprecated. Every license has a permanent address that works for a
person as a page and for a machine as data.

**[Reading a license](USERS.md#3-read-a-license-page)** gives you the whole model on one
page, with the disclaimers quoted rather than paraphrased and the history of the record.
The page also writes your choice out for you: a small data file to keep beside your work,
an attribution line where one is really required, and a badge.

**[License Search](USERS.md#4-search-by-what-you-need-to-do)** turns the question around.
Instead of asking what a license is called, you say what you need to do with the work,
and it returns the licenses that let you do it.

**[License Comparator](USERS.md#5-compare-licenses)** puts several licenses side by side
in one table and flags the rows where they disagree, so the differences are the first
thing you see.

**[License Compatibility Checker](USERS.md#6-check-whether-licenses-fit-together)** answers the question
most people come here with: may I combine these works, and what may I publish the result
under? It names every conflict and says where it comes from, and it gives you a statement
file to keep with the finished work.

**[License Composer](USERS.md#7-compose-a-license)** writes a license of your own, from a
guided form or from a tree of statements in its expert view, checks it for
contradictions, publishes it at a permanent address, and can write the license text to
keep with the model.

**[GitHub License Compatibility Checker](USERS.md#8-check-a-repositorys-dependencies)** takes a code
repository, finds the license of every dependency, and runs the same compatibility check
over all of them at once.

**[How reasoning works](USERS.md#11-concepts)** explains what the reasoner does and what
a dependency graph is for, in five steps. A license is a list of rules over named
actions. A dependency graph says how those actions relate to each other. A conflict
follows from the two: one license forbids what another allows, or the graph relates the
two actions for you.

**[Dependency Graph Viewer](USERS.md#18-dependency-graphs)** shows the rules the
compatibility check reasons with. Every statement is listed under the relation it uses,
drawn in a diagram and downloadable as Turtle, and each graph keeps its version history.
The graphs that ship with DALICC are there for everybody.

**[Dependency Graph Editor](USERS.md#18-dependency-graphs)** is where you keep graphs of
your own. Start from a core graph, from an empty table or from a Turtle file, then write
the statements and share the graph with whoever should see it. The License Compatibility Checker, the Composer
and the API will reason with your graph instead of the default one. It needs an account.

**[Text-to-License](USERS.md#19-text-to-license)** reads the text of a license and
proposes the model for it, quoting the sentence each statement came from. It is a draft
to correct, never an answer to accept, and nothing it produces is published.

**[License-to-Text](USERS.md#19a-license-to-text)** goes the other way: give it a license
of the library or a model of your own, and it writes the license out in plain English,
section by section, naming anything the text left out. It changes nothing and publishes
nothing.

**[My Bookmarks](USERS.md#9-my-bookmarks)** keeps a shortlist of licenses in your own
browser. Nothing is sent to the server and no account is needed.

The words DALICC uses to describe a license, and what each of them means, are in
**[the vocabulary](USERS.md#10-the-dalicc-vocabulary)**.

## Accounts

Everything above works without signing in, except the parts that are yours. Accounts come
by invitation unless the administrators have opened sign-up; then you can create one
yourself on the sign-up page and, where one is set up, sign in with your organisation's
account ([how that works](USERS.md#13-invitations)).

An account gives you licenses of your own, kept as private drafts until you publish them
and versioned afterwards, and dependency graphs of your own. You can offer either of them
for the curated library, or report that a curated record is wrong, and the conversations
that follow happen in your inbox. An account also carries the personal tokens for calling
the API.

If you administer an installation, the pages you use are in
[ADMINISTRATION.md](ADMINISTRATION.md).

## The API and the Python client

Everything the site does, the API does too, over the same data. Most of it needs no
credentials at all: searching, reading a license, comparing licenses and checking whether
they fit together are open to anybody. The full reference is [API.md](API.md).

The parts that act for you, such as composing a license or running a translation, need a
personal token that you create on your own account page
([how](USERS.md#16-api-tokens-and-calling-the-api)). There is also a Python client that
wraps the whole API, with a command line, described in [SDK.md](SDK.md).

The API comes in two generations. Version 1.1 is the one the site has always had: its ten
original operations answer exactly as they did, and everything added since sits beside
them. Version 2, under `/v2`, reads every published version of a record, a dependency
graph and the vocabulary with a content hash, and lists what changed since a date or a
release ([API.md](API.md#11-version-2-history-releases-and-discovery)).

## How DALICC is licensed

The software is free software under the AGPL-3.0-only license. A separate commercial
license is available for anybody who cannot meet its terms. The license data itself is
published under CC BY 4.0. The details, and what each of those means for you, are in
[LICENSING.md](../LICENSING.md).

## Where to ask

Questions, corrections and anything the documentation does not answer: the
[contact page](/contact). If you found something wrong in a curated license record, the
fastest route is *Request a correction* on the record itself
([how](USERS.md#20-submissions-correction-requests-and-the-inbox)).

The full manual is [USERS.md](USERS.md), and it opens with a
["How do I" index](USERS.md#how-do-i) for the question you actually came with. A word the
site uses in a sense of its own, such as port, variant or restriction, is explained in the
[glossary](USERS.md#24-glossary).
