Docs
View as markdown

Project

relate's license, how the project takes contributions, what pre-1.0 and preview features promise, how releases are cut, and the platforms each artifact runs on.

clipythonnodebrowserrustjavagoswiftc

relate is open source under the Apache License 2.0. It is pre-1.0: under semantic versioning, any 0.x release can change behavior, a patch release included, and every change that can break working code is marked in the changelog. Releases are cut by hand and signed; the CLI ships for macOS, Linux, and Windows, and the clients cover Python, Node.js, the browser, Rust, Java, Go, Swift, and C. This page records those facts and where each comes from.

Synopsis

FactValue
LicenseApache License 2.0
Sourcegithub.com/relatedb/relate, public at launch
Version these pages track0.1.2
StabilityPre-1.0; any release can change behavior, and breaking changes are marked
ContributionsIssues; no pull requests from outside the maintainer team
Release cadenceNone published
Bug reports and questionsIssues on the repository, open at launch
Security reportsNo address yet; see Security

relate --version prints the version and the license:

relate --version
Relate v0.1.2
License: Apache 2.0 (binary)

License

The repository's LICENSE file is the Apache License, Version 2.0, and the binary's --version names it. The Rust crates (the Cargo workspace's license field) and the Node.js package (package.json) declare Apache-2.0.

Governance

The repository states how it takes contributions:

ContributionAccepted
Bug reports, feature requests and questions, as issuesYes
Pull requests from outside the maintainer teamNo; pull requests are turned off for accounts without write access
Issues written with an AI toolYes, when the tool is disclosed in the issue and a person who hit the problem has checked it
Issues filed by an agent with no person involvedMay be closed without warning

Only the maintainer team merges changes. Design decisions are recorded as architecture decision records in the repository's docs/adr/ directory. The repository publishes no governance document, steering body, or foundation membership.

Versioning and stability

relate follows semantic versioning, and is pre-1.0:

PromiseWhat it means
Any release can breakUnder semantic versioning, anything can change in a 0.x release, a patch release included. 0.16.1 removed the apoc.coll.sort spelling and replaced the C application binary interface (ABI) with an incompatible typed one, and 0.1.2 changed the strings elementId() returns.
Breaking changes are markedA change that can make working code or statements fail is marked Breaking in the changelog entry of the release that ships it, with its replacement when there is one.
Deprecations are listedA feature that still works but is to be removed is listed under Deprecated in the release that deprecates it.
One version numberThe binary and every client package carry the same version number.
Preview features are opt-inA preview feature runs only when its name is in RELATE_PREVIEW, read once when a store opens. An unknown name fails the open. A preview feature's syntax can change between releases. When it graduates, its gate is removed and it works without the opt-in.
Stores migrate forwardA store written by an older release is upgraded in place the first time a newer release opens it. There is no downgrade: an older binary rejects a store a newer one has opened.

A preview feature A Cypher feature from a not-yet-settled proposal that relate ships switched off; it runs only when RELATE_PREVIEW names it when the store opens. Read more in the glossary named in RELATE_PREVIEW that the engine does not know fails the open with exit code 1:

RELATE_PREVIEW=time-travel relate "RETURN 1 AS ok"
Failed to open Relate: semantic error: SemanticError: invalid RELATE_PREVIEW value: unknown preview feature 'time-travel' (known features: hybrid-search, local-callables, graph-type-opt-props, graph-type-default-values, graph-type-implied-labels, ontology, obfuscated-literals, mixed-label-syntax, float16-coordinate-types, chronological-comparisons, complex-search-patterns, coll-zip, coll-has, gql-stddev-aliases)
{"error":{"code":"fatal_error","exit_code":1,"kind":"semantic","message":"semantic error: SemanticError: invalid RELATE_PREVIEW value: unknown preview feature 'time-travel' (known features: hybrid-search, local-callables, graph-type-opt-props, graph-type-default-values, graph-type-implied-labels, ontology, obfuscated-literals, mixed-label-syntax, float16-coordinate-types, chronological-comparisons, complex-search-patterns, coll-zip, coll-has, gql-stddev-aliases)","retryable":false}}

The first line is stderr. The second is the error object on stdout, which a run with piped output prints after the message.

Releases

StepWhat happens
CutA maintainer starts the release workflow by hand and picks a patch, minor, or major bump. The version comes from the existing tags plus that bump.
Build and signThe CLI binaries, the C libraries and the client packages build from one commit. The macOS binaries are signed and notarized. The tag is pushed only after every build passes.
PublishThe release carries every artifact, a SHA256SUMS manifest and its signature, SHA256SUMS.sig. https://relatedb.ai/releases.json, which relate upgrade reads, is rewritten to list the new release.
RecoverA release that fails after its tag is pushed is not redone under the same version; the next release takes the next version.

The project publishes no release cadence and no support period for older releases. Security describes the signing; the changelog lists each release.

Platforms

ArtifactmacOS arm64macOS amd64Linux arm64Linux amd64Windows amd64Requires
CLI binary, relate-<os>-<arch> from the first relate-named releaseYesYesYesYesYes (.exe)Linux: glibc
install.shYesYesYesYesNocurl, ssh-keygen
relate upgradeYesYesYesYesNo—
Python client, relate-dbYesYesYesYesYesPython 3.9 or later
Node.js client, @relate/relateYesYesYesYesYesNode.js 18 or later
Java client, com.relate:relateYesYesYesYesYesJava 17 or later; the native library is in the jar
Go clientYesYesYesYesYescgo, and the C library for the target; on Windows, a MinGW import library generated from the DLL
C library, relate-ffi-<target>.tar.gz (cypherlite-ffi-<target>.tar.gz up to and including 0.16.1)YesYesYesYesYes—
Swift package, RelateYesYes———macOS 13 or later; iOS 16 or later

Releases up to and including 0.16.1 were published under the project's earlier name, cypherlite, with cypherlite-<os>-<arch> binaries; the first release named relate restarted the version numbers at 0.1.0. The Swift package also builds for iOS devices (arm64) and the iOS simulator. The browser package, @relate/relate-wasm, is a WebAssembly build that runs in the browser on any of these systems; a durable browser store A relate database: a directory, a single .rl file, or :memory:, opened with --database. Read more in the glossary needs a dedicated worker and the origin private file system. The Rust crate, relate, builds from source with Rust 1.88 or later. No artifact is built for another operating system or architecture.

Nothing is published to a package registry yet. The names in the table are the names each package is to be published under at launch:

RegistryName
PyPIrelate-db (import relate)
npm@relate/relate, @relate/relate-wasm
Maven Centralcom.relate:relate
Go modulesgithub.com/relatedb/relate/clients/go
SwiftPMRelate, from github.com/relatedb/relate
Release downloadsgithub.com/relatedb/relate/releases

Questions and bug reports

Questions and bug reports go to the issues of github.com/relatedb/relate. The repository is private until launch, so before then there is no public tracker. A useful bug report holds:

PartDetail
Version and platformThe output of relate --version, the operating system, and the architecture
ReproductionThe smallest statement or command that shows the problem, and what was expected instead
StoreHow it was opened: a directory, a .rl file or :memory:, and the snapshot format and durability mode if they are not the defaults
ClientFor a client issue, the package version and how it was installed

A wrong or missing docs page is reported as /docs/feedback.md describes; the person the agent works for decides whether a report is sent. The address that page and Security use is to be published at launch.

See also

  • Changelog: every release, with breaking changes marked
  • Security: release signing, verification, and vulnerability reports
  • Privacy and telemetry: what the CLI reports, and how to turn it off
  • Install relate: the install commands for each platform and package
  • Limitations: what relate does not do, platform coverage included