IBM's Open Source Quarks Pushes IoT Analytics to the Edge

IBM has open sourced new technology called Quarks to push Internet of Things (IoT) analytics from centralized systems out to the actual edge devices that are collecting and spewing out vast amounts of data.

By taking the analytics to the devices -- instead of the devices streaming data to a central analytics engine -- IBM says organizations can save on communications costs, react quicker to streaming events and reduce the processing load of the main analytics server.

Of special importance to developers, the technology is designed to simplify some tedious infrastructure and housekeeping chores so they can code more. "Quarks provides a consistent and easy to use programming model to allow application developers to focus on their application rather than issues like device connectivity and threading," said IBM's Mike Spicer in an IBM developerWorks blog post yesterday.

IBM's Web site for Quarks describes it thusly:

Quarks is a programming model and runtime that can be embedded in gateways and devices. An open source solution for implementing and deploying edge analytics on varied data streams and devices, Quarks can be used in conjunction with vendor and open source data and analytics solutions such as Apache Kafka, Spark and Storm. Quarks is API driven and modular.

Those APIs driving Quarks are written in Java. Quarks supports Java 7, Java 8 and the Android variant. Thus the micro-kernel style runtime allows for small-footprint analytics on IoT "things" -- devices, sensors, systems and so on -- such as Raspberry Pis or smartphones.

The Topology of Quarks
[Click on image for larger view.] The Topology of Quarks (source: IBM)

What's more, those devices can quickly react to local events and stream data about an event only if it's needed for a particular analytics use case, IBM said. "This allows all relevant data to be delivered the moment an event of interest occurs -- rather than just relying on a periodic heartbeat of information, which may not include the signals necessary or might arrive too late to take action on," Spicer said.

If the analytics can't be performed on a device, Quarks will stream the data to a back-end server to leverage more computing power and memory.

For that communication, Quarks supports MQTT -- "the messaging standard for IoT" -- along with IBM's own Watson IoT platform that runs as a device model on MQTT. It can also use Apache Kafka, another open source project gaining prominence as a high-throughput, distributed publish-subscribe messaging system for collecting data streams. Developers can also create their own custom message hubs to use with Quarks, IBM says on the Quarks GitHub site.

IBM said it open sourced Quarks and put it up on GitHub under an Apache License Version 2.0 to foster community development. It has also submitted it to the Apache Software Foundation as a potential incubation project to provide governance and guidance.

"With the growth of the Internet of Things there is a need to execute analytics at the edge," the company said. "Given the diverse nature of edge devices, local analytics is best addressed by an open community of software experts and device experts committed to expanding the capabilities and real-world use of Quarks."

Spicer echoed that thought. "We encourage companies and individuals to join the Quarks community to enable edge analytics and innovate around the Internet of Things," he said. "You can find out more and get involved at"

About the Author

David Ramel is an editor and writer for Converge360.