m-ld is a decentralised live information sharing component with a JSON-based API.
This repository defines the platform-independent specification for m-ld.
The documentation is built using typedoc, and delivered to the specification documentation website at https://spec.m-ld.org/.
The engine API is partially specified as types using Typescript as an abstract specification language. Note that these types are not used directly by engine implementations, because they are intentionally high-level and agnostic to platform details, such as threading model. Instead, engines use types in their native language.
The compliance folder defines a set of Jasmine integration tests to check the compliance of a clone engine to specification. These tests require orchestration components to be provided by the engine project.
- Specification work in progress can be found on the repository Wiki tab.
- Issues relating to the abstract specification are logged on the Issues tab.
- Contributions are welcome! Contributed work is governed according to a CAA, the GitHub Community Guidelines, and the privacy policy.
Scripts are run with npm
.
- The
test
script is not intended to be run from this project. See the compliance folder README for details. - The
build
script is used to generate the website. - The
doc-dev
script can be used afterbuild
to create a local web server watching for documentation changes.
This project uses semantic versioning. There are two main branches.
- The
edge
branch is for pre-releases. It is delivered to edge.spec.m-ld.org. A merge intoedge
should be immediately followed by a pre-release if it affects versioned components. - The
master
branch is for releases. It is delivered to spec.m-ld.org. A merge intomaster
should be immediately followed by a release if it affects versioned components.
npx publish.sh ≪newversion≫
(from
m-ld-io-js-build) builds the
project, increments the version as specified (e.g. patch
), pushes the code and
publishes the package. Ensure the repo is up-to-date and on master (release)
or edge (pre-release).