GithubHelp home page GithubHelp logo

2btech / ddx Goto Github PK

View Code? Open in Web Editor NEW
2.0 6.0 1.0 861 KB

2B DDX

License: GNU General Public License v3.0

QMake 1.95% C++ 93.47% Prolog 0.60% C 1.78% Batchfile 0.64% Objective-C 1.56%

ddx's Introduction

2B Tech DDX

The DDX is a general purpose data stream management framework developed by 2B Technologies. It operates on streams producing "data lines" with live-updating formats. It is designed to allow a wide variety of data operations (processing, filtering, relaying, logging, etc.) which can be dynamically configured and applied to a data stream. It is robust enough for the same codebase to be utilized across an entire data ecosystem but flexible enough to run on an embedded Linux soft RTOS. Its backbone is a powerful daemon, but a management GUI is also in the works.

Module Design

An individual data processing stream is called a "path." Paths are linear strings of "modules," which can be written to do a wide range of tasks. Modules are written in C++ and directly built into the DDX, allowing them to be highly optimized. The first module in every path is a particular kind of module called an "inlet." Inlets are responsible for loosely describing the data and producing it. Paths and their constituent modules are dynamically instantiated via JSON configuration documents, called "schemes." Each module can publish pre-initialization settings as well as live actions, which can be updated as data changes. Live actions can be triggered by arbitrary network devices, an attached DDX GUI, or other modules and paths in the same DDX daemon instance. Modules can safely call each other's methods in most cases, allowing communication about data across any point in the unidirectional data streams.

GPL Licensing

Because the bulk of the DDX's power lies in its modules, open-sourcing it was a natural decision. Anyone can write modules which suit their needs or integrate other modules into their own DDX builds with ease.

Connectivity

The DDX is based on the Qt framework, which contains an array of connectivity solutions. Inlets can be written to receive data from serial ports and emulators, the Internet, databases, other DDX daemon instances, and much more. To simplify data management, inlets are read-only with respect to other modules, but modules in a path can write back to the originating devices by calling functions published by inlets.

DDX-RPC Protocol

The DDX includes an extensible communication protocol known as the DDX-RPC which can be used for data relaying, daemon management, and more.

Path Durability

Paths are meant to operate their primary functions whenever possible, even if a particular module loses functionality. As such, module design guidelines and restrictions encourage developers to make modules which report fatal errors and potentially trigger additional data saving systems but do not halt data flow. This keeps data loss due to non-essential module failure to a minimum.

Official Modules

2B Tech is working on a number of official modules for general purpose data management. These will be available soon.

ddx's People

Contributors

3000farad avatar

Stargazers

 avatar Preston Mueller avatar

Watchers

James Cloos avatar Craig avatar  avatar David Kopala avatar  avatar Drew Meyers avatar

Forkers

cjwhome

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.