Roadmap

Below is a list of milestones that we're working on, have completed, or might work on. They are not arranged in chronological or priority order. For a better idea of how the different pieces fit together, see the Technology Tree.

NB: this page and the technology tree presently only cover up to the NGI Zero Discovery project for Librecast LIVE. We are in the process of updating these pages and the technology tree for the next stages of development under NGI Assure and beyond. Watch this space!

  • Project Advocacy

    Presentations at various conferences for the purposes of multicast advocacy and promoting the Librecast project. The aim is to find people working on multicast, get others involved in the project and to promote multicast.

  • IPv6 Multicast C Library

    • Code review
    • Split out storage API into separate library
    • Pass Coverity tests
  • Librestack Daemon (LSD)

    Create a modular daemon which will form the basis of several components of the project, including the multicast media server, router daemon and the stratum 0 servers.

    • Create base daemon which can listen on multiple TCP/UDP sockets, with IPv6 and legacy IP support, logging, error handling, support for modules etc.
    • Create a HTTP/1.1 module for this daemon with TLS support.
  • Websockets Module

    Create a websockets module for the Librestack Daemon, based on librestack/gladd code.

  • Multicast Module

    Create a module for the Librestack Daemon to add IPv6 multicast support.

  • Transitional Multicast Tunneling (static)

    Add static tunneling support to librecast library for pre-configured static endpoints.

    Description

  • Transitional Multicast Discovery

    Add endpoint discovery and autoconfiguration to multicast tunneling.

  • Encryption (Multicast messaging)

    Add encryption support to librecast C library messaging. This is not a substitute for end-to-end encryption which will be used in many applications, but can be used where E2EE is not required.

  • Encryption (storage)

    Add encryption support to librecast storage C library. This encrypts data stored on disk.

  • Authentication

    Authentication of users using public/private key encryption. This is authentication only (who is this), not authorisation (what can this user do). Authorisation (ACLs) is a separate task. Add authentication support to librecast library using PSK verification.

  • Storage API

    This task will review and expand the storage capabilities

    • Add file storage
    • Additional indexing support
    • Multicast file syncing
    • Configurable sharding support
  • DB Consensus / Replication

    This milestone adds Paxos consensus based replication (over multicast). This is essentially a thin wrapper for LMDB which will allow full speed reads, and slower synchronous, verified writes to multiple nodes.

    • Create wrapper for LMDB library
    • Add Paxos synchronous replication over multicast
  • DB Consensus / Replication (async mode)

    This milestone adds asynchronous write capability to the previous milestone.

  • Routing Simulator

    Develop simulation software to aim in testing new multicast routing protocols and setups. We need to be able to quickly test new protocols against various network configurations and at large scale. Simulating this in software is the only feasible/cost-effective way of doing this.

    • Build routing simulator which can take a protocol description and network topology and simulate route propogation, routing table sizes, speed tests etc.
  • Routing Protocol

    Protocol Independent Multicast (PIM), which is the IP Multicast in use today, depends on unicast routing tables. This is a huge hinderance to multicast development. This milestone is to develop a unicast-independent multicast routing protocol.

  • Librecast Router Daemon

    Develop multicast router daemon with transitional tunneling support, based on Librecast libraries.

    Description

  • Stratum 0 Server

    Set up Statum 0 Server, which is a variant of the Librecast Routing Daemon. This will provide a public facing service for anyone wanting to join a the Librecast multicast backbone.

  • WebRTC Server (Signalling)

    Basic media server, which can providing WebRTC signalling support for setup of a WebRTC session.

  • WebRTC Server (Termination Point)

    Media Server with WebRTC endpoint termination.

  • Video streaming (POC, single server)

    Proof-of-Concept video streaming application with WebRTC streaming support.

    • Basic POC live video-streaming demo
    • Live streaming from a WebRTC-enabled browser
  • Video streaming (MVP, all basic features enabled)

    Minimum viable product video streaming application with WebRTC streaming support.

    • Live streaming from a WebRTC-enabled browser
    • Live chat
    • "community" features (likes, comments etc.)
  • Internationalisation

    Translate application interface into at least one language other than English to demonstrate multi-lingual capabilities of front-end.

    • Base Localisation/Internationalisation mechanisms
    • English + at least one other EU official language
  • Multicast Server Federation

    Add multicast server federation support to media server.

  • Multicast Chat Server

    Add multicast live chat messaging to media server.

    • Live chat over multicast (media server support)
  • Multicast Chat (Direct Messaging)

    Private direct-messages between chat users

  • Multicast Chat (End to End Encryption)

    Add end-to-end encryption (browser to browser) for chat messages

  • Authentication (Front-End)

    User Authentication (web application)

    Description

  • W3C / WCAG Accessibility

    Ensure web interface passes W3C and WCAG testing.

  • ActivityPub Support

    Server support for ActivityPub

  • ActivityPub Integration - Peertube

    Integrate with Peertube via ActivityPub

    • Integrate with Peertube via ActivityPub
    • Users can post live steam links on Peertube
    • Users can chat on livestreams from Peertube
  • ActivityPub Integration - Mastodon

    Integrate with Mastodon via ActivityPub

    • Integrate with Mastodon via ActivityPub
    • Users can post live steam links on Mastodon
    • Users can chat on livestreams from Mastodon
  • Matrix Integration

    Integrate with Matrix

    • Build Matrix multicast bridge
    • Users can post live steam links via Matrix protocol
    • Users can chat on livestreams from Matrix (Riot) chat
  • User and Community Documentation

    • User and Community Documentation
    • How to set up and use the software
  • Developer Documentation

    Developer docs

  • Multicast Telemetry/Debug Window

    Visual reports and stats on what is actually happening behind the scenes. To a user of the system, there's no indication that multicast is in use. Lets expose the workings in debug mode - useful for debugging and demos to show what multicast is actually doing.

    • Debug/telemetry window
    • Logs
    • Reporting/graphs to show what is happening at the back end
  • Storage/Replay Video Streams

    Record and replay live-streams.

    • Livestream recording
    • Video replay
    • play, stop, pause, fast-forward, rewind etc.
  • Forward Error Correction (FEC)

    Add FEC error correction codes to improve reliability.

    • Add FEC option to librecast library

    Description

  • NACK/Logging/Replay

    Add NACK capability along with message loggin and replay to improve reliability

    • NACK/Logging/Replay features
  • Reliable Messaging

    Reliable, ordered message delivery.

    • Reliable, ordered TCP-like message delivery for online nodes.
  • Message Queuing/Offline Messaging

    Add the capability to queue messages when the recipient is offline, or networking is down. This, combined with the previous three milestones brings us to full MQ capabilities, like ZeroMQ.

  • WebRTC Simulcasting

    WebRTC (V9) has support for simulcasting. ie. splitting the video stream into multiple quality channels. On the media server we can split these onto separate multicast channels, allowing the receiver full control over their quality stream.

    • WebRTC simulcasting over multicast (media server)
  • Variable-rate flow-control with multicast

    Flow control can be handled in multicast by multiplexing UDP packets across multiple channels. This milestone adds this functionality into the librecast library so that applications don't need to manage this themselves.

    • add variable-rate flow-control to librecast API
  • Multicast HTTP (file) Server Demo

    Expand the IoT Updater Daemon (iotupd) into a full multicast webserver. This will provide a full demo of the multicast web server concept, allowing any static web content to be send over multicast.

    • Build multicast file server
    • Extend web browser to add multicast support
  • Add ACLs to Librestack Daemon

    Add authorisation (ACLs) to Librestack Daemon, similar to PAM ACLs.

    • Add PAM-style ACL support
  • libmld - MLD2 Multicast Listener Discovery library

    Multicast Listener Discovery library (RFC 3810).

  • Add Spanning Tree Protocol (STP) to lcroute

    Add STP to lcroute to build a loop-free spanning tree

  • WebRTC Data Channel Peering

    Add Spanning Tree to front-end (javascript) peering code

    Implement a link-state routing protocol similar to IS-IS to build a minimum spanning tree for multicast media distribution using WebRTC data channels.