Recon, and Warp, and Fabrics, Oh My! Decoding Four Important SwimOS Terms

by Brad Johnson, on Aug 22, 2019 1:25:23 PM

Naming is critical for understanding any new technology, so I wanted to set straight some common terms and important acronyms you’ll run across in the swimOSphere.

First, let’s start with the basics:

  • swimOS is actually two acronyms together. The first is “swim” which is short for “software in motion.” Unlike stateless RESTful architectures, which primarily move data from edge nodes to a centralized datastore, swimOS apps continuously move data and application logic together, in order to maximize the efficiency of streaming applications. This is what we mean by “software in motion.” The “OS” is simply short for “open source” and helps us differentiate builds across our open source swimOS and our private repositories.

  • Fabrics are core to the distributed architecture of swimOS. Fabrics weave a shared, general-purpose compute plane across non-uniformly distributed, heterogeneous sets of machines. A swimOS app can be comprised of multiple fabrics (such as an edge fabric and a cloud fabric) or a single fabric can connect an infinite number of machines. It really depends on the use case. What’s important to remember about fabrics is that they provide a real-time, stateful, uniform compute environment for an otherwise distributed and non-uniform collection of machines. This empowers developers to program against a fabric, without ever having to worry about individual devices. Everything you need to create a swimOS fabric is available in the open source swimOS repositories on GitHub.

    We also have an enterprise product, which we call DataFabric. This is our production-ready offering of swimOS with additional management, availability and performance features. If you’re interested in learning more, you can read about DataFabric here.
Getting to Know Recon and Warp

Next, I want to cover two acronyms (edit: an acronym and a portmanteau) that are important to understanding the swimOS platform: Recon and Warp. Understanding the roles of Recon and Warp in swimOS will provide a solid foundation for building out custom swimOS APIs for your use case.

Let’s get to know Recon and Warp:

  • Recon is short for “record notation,” and I wrote about it in a recent blog post. Recon is a data model which adopts the basic elements of JSON and XML. It’s object notation with attributes, like if JSON and XML had a baby. Recon combines the simplicity of JSON with the expressiveness of XML, and forms a standardized data model for all swimOS apps. Because Recon is just an augmented form of JSON, swimOS developers can easily convert most common messaging protocols into Recon format.

  • Warp is short for “Web Agent Remote Protocol.” Warp implements the Recon data model in a way that it optimized for streaming. The purpose of the WARP protocol is to enable bidirectional, continuously consistent, network real-time communication between stateful distributed processes, called Web Agents. WARP is extensible, forward compatible, and easy to implement in any networked environment. In particular, WARP works in all major web browsers, using existing networking technologies. To facilitate human understanding of the protocol and its operation, the first version of WARP is text-based. To avoid the explosion of grammars found in other human-readable protocols, like HTTP, and to aid extensibility, WARP protocol envelopes are defined as a set of structurally typed Recon records.

Hopefully you're now a bit more familiar with some of the basic swimOS terms and concepts. If you want to learn more about the architectural philosophies behind swimOS or dive into the nuts and bolts of the swimOS platform, make sure to check us out on GitHub!

Learn More

Let us know what you're building using the open source swimOS platformYou can get started with swimOS here and make sure to STAR us on GitHub.

Topics:Stateful ApplicationsSWIM AIEdge ComputingSwim Enterprisedistributed computingHTTPweb applicationsswimOSRESTWARPstreamingoperating systemsweb agentsapistreaming apiopen sourceopen source software