@m-ld/m-ld-spec
Version:
m-ld Protocol Specification
72 lines (61 loc) • 3.37 kB
Markdown
<pre></pre>
<!--suppress HtmlDeprecatedAttribute -->
<p align="center">
<a href="https://m-ld.org/">
<picture>
<!--suppress HtmlUnknownTarget -->
<source media="(prefers-color-scheme: light)" srcset="https://m-ld.org/m-ld.svg"/>
<!--suppress HtmlUnknownTarget -->
<source media="(prefers-color-scheme: dark)" srcset="https://m-ld.org/m-ld.inverse.svg"/>
<img alt="m-ld" src="https://m-ld.org/m-ld.svg" width="300em" />
</picture>
</a>
</p>
<pre></pre>
[](https://www.repostatus.org/#active)
[](https://gitter.im/m-ld/community)
[](https://github.com/m-ld/m-ld-spec/discussions)
**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](./doc) 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](./types/index.ts) 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](./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
[](./CONTRIBUTING), the GitHub Community
[](https://docs.github.com/articles/github-community-guidelines),
and the [privacy](https://m-ld.org/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 after `build` 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 into `edge` 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
into `master` should be immediately followed by a release if it affects
versioned components.
`npx publish.sh ≪newversion≫` (from
[](https://github.com/m-ld/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)*.