m-ld / m-ld-spec

Platform-independent m-ld specification
https://spec.m-ld.org/
MIT License
24 stars 1 forks source link
crdt data graph rdf


m-ld



[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)
[![Gitter](https://img.shields.io/gitter/room/m-ld/community)](https://gitter.im/m-ld/community)
[![GitHub Discussions](https://img.shields.io/github/discussions/m-ld/m-ld-spec)](https://github.com/m-ld/m-ld-spec/discussions)

# **m-ld** specification
**m-ld** is a decentralised live information sharing component with a JSON-based
API.

This repository defines the platform-independent specification for **m-ld**.

## website
The [documentation](./doc) is built using typedoc, and delivered to the
specification documentation website at https://spec.m-ld.org/.

## types
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.

## compliance tests
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.

## work in progress
- 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](./CONTRIBUTING), the GitHub Community
  [Guidelines](https://docs.github.com/articles/github-community-guidelines),
  and the [privacy](https://m-ld.org/privacy/) policy.

## scripts
Scripts are run with `npm`.
- The `test` script is not intended to be run from this project. See the
  [compliance](./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.

## publishing
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
[m-ld-io-js-build](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)*.