Skip to content

RISE-Maritime/keelson

Repository files navigation

keelson

NOTE: keelson is in the early phases of development and will undergo significant changes before reaching v1.0. Be aware!

keelson is an API specification tailored to digital maritime systems for building distributed applications on top of the communication protocol zenoh. It is provided as free and open-source software under the Apache 2.0 License.

The keelson protocol is described HERE.

TODO: A nice graphic here would be nice...

Repository structure

This repository is a mono-repo. It contains the following:

  • A description of the keelson protocol
  • The well-known message schemas supported by keelson: (messages/)
  • Generic RPC interface definitions for some use cases: (interfaces/)
  • Connector implementations towards a multitude of sensors, middlewares and file formats: (connectors/)
  • Software Development Kits (SDKs) for several languages (sdks)
  • A zenoh-cli codec plugin for keelson data. Bundled with the python SDK.

Releases from this repository consists of two artifacts:

  • The SDKs are published to the respective language specific package repositories, see sdks for details.
  • A docker image containing all the connectors is published to Githubs container registry

How to use

keelsonis but a small set of rules on top of zenoh. Make sure to first be aquainted with zenoh and then ensure your application adheres to the key-space design and message format advocated and supported by keelson, either through the useage of one of the available SDKs or just by compliance.

See details of the SDKs for usage examples in the respective languages.

For developers

There is a devcontainer setup for the repository which is suitable for the whole monorepo. Use it!

To make a new release

Make sure to do the following:

  • Update version numbers in the respective SDKs
  • Make a new release on Github with name according to version number

Extensions

Work-In-Progress

Extensions to keelson can be of three different types:

  • additional well-known subjects/payloads/messages, i.e. a message extension
  • additional generic RPC interfaces, i.e. a interface extension
  • additional connector implementations, i.e. a connector extension

For convenience, extensions should add a Github topic keelson-<extension_type> to its repository to be visible in #keelson-message, #keelson-interface and #keelson-connector respectively.