Skip to content
DreamWeave Mod Template
reference

Protocol

The DreamWeave mod distribution protocol, schema_version 2, for people implementing clients, indexes and mirrors.

This is the specification of what a DreamWeave-compatible site publishes and how a client reads it. It is complete enough to implement a client, an index or a mirror without reading the template’s source; where the template and this text disagree, file a bug against whichever is wrong.

The key words MUST, MUST NOT, SHOULD, SHOULD NOT and MAY mean what RFC 2119 says they mean.

The model#

A project is a mod, library or tool with a permanent id, a UUID chosen by its author. A project has releases, each identified by a version within that project. A release has artifacts, files identified by their SHA-256 digest and available from one or more sources. A project’s manifest says all of this; a site’s index lists the manifests the site publishes.

Project identity, release identity and artifact identity are three different things:

ThingIdentified byNot by
Projectproject.idname, slug, URL, host, repository, Nexus id, signing key
Release(project.id, version) under the project’s versioning schemetag name, date, file name
Artifactdigests.sha256file name, URL, source

Documents#

DocumentWhereSchema
Site index<site>/dreamweave.jsondreamweave-index-2.schema.json
Project manifestwherever the index or a page’s <link> says; conventionally <site>/dreamweave/projects/<id>.jsonmodManifest-2.schema.json
Release payloaddreamweave.release.json at an archive’s rootdreamweave-release-payload-2.schema.json

All three are UTF-8 JSON with "schema_version": "2" and a document field naming which one it is. A client MUST check both before reading anything else.

The pages in this section cover discovery, the manifest, versions and releases, artifacts, installation, and extensions and evolution.

What the protocol does not do#

It does not name a central registry, allocate ids, rank projects, moderate content, run install scripts, or decide whom to trust. Those belong to clients, indexes and people. A conforming site is a set of static files; a conforming client needs nothing but HTTP GET.