Add New Page: You are not allowed to add pages Select section/namespace. New page title.
 

Commotion Roadmap

This is the main roadmap for the Commotion project, and is mean to give a general overview of the direction of the project. More specific tasks pertaining to actually implementing the roadmap can be found in our various repositories on https://github.com/opentechinstitute.

Platforms

Commotion is intended to be usable across a variety of operating systems. These are the release distributions of the Commotion platform.

Commotion Router

Status: Stable, actively developed. Our current flagship and only supported platform, this is the overall driving force behind new user- and implementer- focused features.

v1.2 (Winter 2014-2015)

  • Add support to interface for multi-band radios
  • Initial barrier-breaker port
  • New build system
  • DNS Loopback
  • CSMv2
  • CLI-only builds
  • Replace nodogsplash w/ new luci_splash

v2.0 (Summer 2015)

  • Deprecate all scripts, use commotiond for backhaul configuration
  • Deprecate mDNS for app announcements, use a new, custom message passing protocol
  • Define and distribute hostnames for apps
  • IPv6
  • Javascript luci-commotion
  • End-to-end encryption via MSP
  • Babel support
  • Enhanced update utility
  • Improved visualizer

Commotion Client

Status: Incomplete, on hold. The cross-platform desktop client for Commotion, written with Qt and Python and intended to run on Windows, Mac, and Linux platforms.

v1.0

  • Core application
    • Single application support
    • Cross-application instance messaging
    • Crash reporting
    • With PGP encryption to the Commotion Team
    • Crash Reporting Window
  • Main Window
  • Menu Bar
    • Automatically displays all core and user loaded extensions
    • Task Bar
    • Extension Manager
    • Messaging manager
      • Allow extensions to talk to commotion IPC client
        • CSM and Commotiond support
  • Core Extensions
    • Commotion Config File Editor
    • Setup Wizard (basic config walkthough)
    • Application Viewer
    • Application Advertiser
    • Welcome Page
    • Network Security Menu
    • Network Status overview
  • Setting menu
    • Core application settings
    • Extension settings menu
      • Settings for any extensions with custom settings pages
  • Control Panel settings menu
    • A client agnostic control panel tool for mesh-network settings in an operating systems generic control panel.
  • Linux Support
  • Commotion Human Interface Guidelines compliant interface
  • In-Line Documentation tranlation into developer API
  • User Settings Manager
    • un-encrypted user settings for network configuration

v2.0

  • Setting menu
    • User settings
  • Core Extensions
    • Network vizualizer
    • User Settings [applications]
    • User Settings [Serval & Security]
    • REMOVE Network Security Menu as it will be replaced with user settings
  • User Settings Manager
    • GPG Encrypted user settings
    • multi-user login/logout support

v3.0+

  • Windows Support
  • OSX Support

Commotion Android

Status: Unstable, on hold. The Android client for Commotion.

v1.0

  • IBSS-RSN Support
  • Support Serval key management
  • Integrate Commotion Service Manager
  • Update status page
  • Update settings menu items & features
  • Update main menu items
  • Use standard Android system icons
  • Create application start page
  • Package service browser for Android
  • Handle gateway route
  • Additional handset support

v2.0

  • Detect and present Commotion-compatible Android apps
  • Integrate commotiond

Commotion OpenBTS

Status: Unstable, on hold. This is the live image for standing up an OpenBTS GSM access point backed by a Commotion network.

v1.0

  • Update OLSRd and plugins to current version.
  • Update Serval to current version.
  • Add commotiond support.
  • Add support for OsmoBTS in addition to OpenBTS.
  • Add support for additional hardware platforms.

Components

Commotion is made up of a number of different software components, each with their own version and roadmap.

Commotiond

Status: Unstable, actively developed. Core, cross-platform components of Commotion.

v1.0 (Spring 2015)

  • libcommotion
    • Split out from commotiond.
    • Add support for fixint types.
    • Add basic math functionality to numerical types.
    • Finish set of string manipulation functions.
    • Rewrite debug macros to use unified error codes.
    • Add utility functions for dealing with semantic versioning.
    • Add utility functions for dealing with URIs.
    • Add system for constructing schemas to co_list and co_tree, compliant with a subset of JSON-schema.
    • Rewrite event loop to use message-oriented callbacks for async operation.
    • Replace/augment large-buffer dump/import functions in object system with serial read/write functions.
    • Improve plugin system with contract-defined hooks and subsystems.
    • Rewrite socket system to ditch prototype system, use API inspired by Berkeley sockets, zeromq, nanomsg, libuv.
    • Add UDP support to socket library.
    • Add TCP support to socket library.
    • Add netlink sockets to socket library.
    • Add raw sockets to socket library.
    • Finish process command/control utilities.
    • Ensure thread-safety; rewrite relevant parts of data structures to be lockless, all non-network subsystems should carry their own state.
    • Clean up headers, dependencies and CMake for modular compile of the library.
    • Abstract out selection polling mechanisms in loop and socket to use other interfaces besides epoll.
  • commotiond
    • Add connect subsystem
      • Write linux networking plugin
      • Hook into netlink for acquiring/manipulating routes
      • Move OLSRd plugin into connect subsystem
      • Write babel plugin
      • Hook into ubus for OpenWRT interoperability
      • Write plugins for other platforms
    • Add messaging subsystem
      • Create design document for messaging bus protocol and API
      • Write MDP plugin for messaging subsystem
    • Add nameservice subsystem
    • Add app subsystem
  • commotiond cli
    • Add quit command
    • Add TCP connection capability
    • Implement multi-call binary support for unified builds
    • Add mmap connection capability for multi-call builds
    • Add history buffer

Commotion Service Manager

Status: Stable, actively developed. The service discovery and management daemon for Commotion.

v2.0 (Winter 2014-2015)

  • Replace Avahi-daemon on OpenWRT, connect to it on other platforms.
  • Configurable schema for app announcements.
  • Utilize updated libserval.

v3.0+

  • Port to custom message layer rather than mDNS.

LuCI Commotion

Status: Stable, actively developed. The router-based web interface for Commotion, based on OpenWRT's LuCI framework.

v1.2 (Spring 2015)

  • Import / Export functionality for Commotiond profiles
  • re-runnable setup wizard
  • Status-page auto-updating values
  • Updated Nearby Mesh devices
  • Command Line Setup Wizard (Possibly not in this repo as it will not be luci-based.)
  • Babel Integration

v2.0 (Summer 2015)

  • lua-info plugin for less memory-intesive access to OLSR info
  • mesh-agnostic network-viz
  • Explore porting to Barrier Breaker Javascript callbacks.

OLSRd

Status: Stable, actively developed. External project. This is the current default routing daemon for Commotion. We maintain a fork with two custom plugins, but for the main roadmap please see the external project page at http://olsr.org

Servald

Status: Stable, actively developed. External project. This is a platform for establishing an encrypted overlay network. We maintain a stable fork, but for the main roadmap please see the external project page at http://servalproject.org

Wishlist

  • Network Coding (radio layer, multipath TCP, others)
  • IBR-DTN Support
  • Better Rhizome integration
  • Border Router Discovery Protocol (BRDP)
  • AP Handoff