3
4
Fork
You've already forked vessel
0
Vessel is a generic container file format optimized for storage and (streaming) transmission.
  • C++ 100%
Jens Finkhaeuser b0c40b5a17
Some checks failed
/ build-meson (arm64, map[cc:clang cxx:clang++]) (push) Successful in 6m15s
/ build-meson (arm64, map[cc:gcc cxx:g++]) (push) Successful in 5m5s
/ build-conan (arm64) (push) Successful in 7m47s
/ checks (push) Has been cancelled
/ build-meson (x86_64, map[cc:clang cxx:clang++]) (push) Has been cancelled
/ build-meson (x86_64, map[cc:gcc cxx:g++], true, true) (push) Has been cancelled
/ build-conan (x86_64) (push) Has been cancelled
/ build-android (android-arm64-v8a.conan) (push) Has been cancelled
/ build-android (android-armeabi-v7a.conan) (push) Has been cancelled
/ build-android (android-x86.conan) (push) Has been cancelled
/ build-android (android-x86_64.conan) (push) Has been cancelled
Add well-known funding url
2024年10月17日 17:42:53 +02:00
.forgejo/workflows Add docs directory 2023年12月18日 10:03:10 +01:00
.well-known Add well-known funding url 2024年10月17日 17:42:53 +02:00
changelog.d Update changelog 2023年12月29日 16:37:31 +01:00
cli Disable random_size CLI test for now 2023年12月15日 15:11:02 +01:00
data Install magic file for detecting vessel resources 2023年10月31日 15:28:12 +01:00
docs Add terminal casts 2023年12月08日 15:15:54 +01:00
include (void) and () have different meanings in C 2024年01月09日 13:10:19 +01:00
lib Catch author deserialization errors and report them back safely. 2023年12月29日 15:20:00 +01:00
plugins Create plugins for algorithm choices 2023年12月05日 11:34:41 +01:00
scripts No longer needed 2023年12月16日 12:00:29 +01:00
subprojects Bump subprojects 2023年12月05日 14:02:20 +01:00
test More changes for wyrd integration 2023年12月13日 09:02:44 +01:00
tools Fix omission of the end of enum declaration 2022年09月20日 09:44:04 +02:00
.appveyor.yml appveyor config 2022年09月30日 17:14:42 +02:00
.appveyor_account.yml Add appveyor scripts 2022年09月30日 17:16:41 +02:00
.bumpversion.cfg Bump version: 0.1.0 → 0.1.1 2023年12月29日 16:39:40 +01:00
.gitignore Ignore conan files 2022年10月13日 14:36:51 +02:00
.oclint Boilerplate: oclint config 2022年05月20日 09:35:48 +02:00
.semgrepignore Update copyright notice; there was an error 2022年06月09日 14:51:35 +02:00
AUTHORS Add codemeta.json, SPDX identifier 2022年07月25日 12:42:45 +02:00
build-config.h.in Basic CLI, first half-baked command. We need some internals improved for the rest 2023年07月13日 11:26:41 +02:00
CHANGES Update changelog 2023年12月29日 16:37:31 +01:00
CODE_OF_CONDUCT.md Boilerplate: license, etc 2022年05月20日 09:24:58 +02:00
codemeta.json Remove caprock from deps 2022年09月30日 17:37:16 +02:00
conandata.yml We need a newer s3kr1t for MAC calculation 2023年12月15日 14:25:54 +01:00
conanfile.py Add docs directory 2023年12月18日 10:03:10 +01:00
CONTRIBUTING.md Update changelog 2023年12月29日 16:37:31 +01:00
DCO.txt Changelog and other boilerplate update 2022年06月02日 18:58:21 +02:00
LICENSE Boilerplate: license, etc 2022年05月20日 09:24:58 +02:00
meson.build Bump version: 0.1.0 → 0.1.1 2023年12月29日 16:39:40 +01:00
meson_options.txt The icu_force_subproject option is a feature provided by meson itself 2022年10月13日 15:10:19 +02:00
Pipfile Update pipfile 2023年07月07日 10:55:26 +02:00
Pipfile.lock update pipenv 2023年12月15日 16:32:15 +01:00
README.md Add pre-recorded CLI video 2023年12月08日 15:01:51 +01:00
towncrier.toml Changelog and other boilerplate update 2022年06月02日 18:58:21 +02:00

Vessel

Vessel is a generic container file format optimized for storage and (streaming) transmission.

status-badge Build status Donate now Merch store

The full specification lives at specs.interpeer.io. This is the reference implementation.

There exists an older, partially outdated design document. It may provide some additonal rationale the specifications are missing.

Overview

The purpose of Vessel is to provide a generic container file format suitable for authoring content collaboratively, both in real-time or with eventual merging. It is suitable for encapsulating an authoritative view of the resource, or managing multiple diverging versions. Confidentiality and authentication of content are both supported.

In Vessel, resources are subdivided into standalone extents; a single extent can form a complete resource. Extents relate to their ancestors in a way that permits deterministic ordering at any time, even with partially synchronized resources. In this way, eventual merging is supported. Each extent is created by a single author, but extents from multiple authors can be mixed freely in a single resource.

Note that this functionality is similar, but not the same as a conflict-free replicated data type. It is rather aimed at both providing a good encapsulation format for such functionality, but simultaneously allowing for arbitrary other content to be multiplexed into the resource. In this way, it is possible to encapsulate any, even multiple existing files into a single vessel resource, such as the audio and video sections of media such as DVDs/Blu-Rays.

Vessel achieves this by further subdividing extent payloads into sections, that are assigned to topics. Each topic may carry a content type describing the remainder of the topic's sections.

CLI Demo

asciicast

API

The library is developed in C++, but for ease of integration with other projects provides a C API.

Building

Requirements

  • meson for the build system. Meson is most easily installed via python's pip tool. Installing Python als means you can use the android.py script for Android builds.
  • ninja or platform-specific tools for build execution.
  • Vessel is implemented in C++, and requires some compiler support for the C++17 standard.
  • Depending on which scheduler implementation you want to use, packeteer may require specific OS and kernel versions, e.g. Linux 2.6.9+ for the epoll scheduler, etc.
  • For convenience, a Pipfile is provided that installs meson and other development tools.

If you're running a recent-ish UNIX-derivative, it's probably best to just download Vessel and try to compile it.

Instructions

  1. pip install pipenv
  2. pipenv install
  3. pipenv shell # the following occurs in the launched shell
  4. mkdir build && cd build
  5. meson ..

License & Acknowledgements

For the license, see the LICENSE file.

Vessel was initially developed under a grant from the NLNet foundation, as part of the European Commission's Next Generation Internet initiative.