Subject: [T2TRG] Splot Object Model

From: Robert Quattlebaum <[email-masked]>
Date: Fri, 23 Nov 2018 19:19:15 -0800

Hello everyone,

I've been working diligently over the past six months on developing an
experimental object model, network protocol, and implementation for
thing-to-thing communication, as well as more general monitoring and
control of IoT devices, sensors, and actuators.

I'm bringing it up here because it seems right up the alley of this
research group and I thought it might make for interesting discussion.

Here are the general themes:

*   Emphasis on a simple object model that is both expressive and easy
    for developers to learn and use.
*   The fundamental control surface objects (Functional Endpoints) are
    polymorphic and support hierarchical relationships.
*   Primary interaction is via properties and performing mutations on
    those properties.
*   Methods/queries are available for when properties aren't a natural
    fit.
*   Avoids numeric identifiers, preferring short mnemonic labels.

Here are some of the reference use cases that were kept in mind while
developing the object model in order to help guide its development:

*   Lighting (Supports scenes, smooth transitions, groups)
*   Network equipment configuration, like smart PoE switches
*   Low power environmental sensor networks
*   Cross-device notifications (e.g.microwave sends start notification
    to smart screen that allows user to cancel or add more time from
    the smart screen)
*   Power control and monitoring

My work can currently be broken up into an assortment of related
projects:

*   The Splot¹ Object Model (SOM), which defines the fundamental
    mechanisms of interaction. This is largely complete and
    well-understood.
*   The Splot Security Model (SSM), which defines security
    interactions and behaviors in terms of the SOM. While the general
    structure has been worked out, I'm still in the process of
    refining, documenting, and implementing.
*   The Simple Monitoring and Control Protocol (SMCP), which is an
    application of the SOM (and, eventually, the SSM) that uses CoAP
    and CBOR and (eventually) COSE and OSCORE.
*   A set of general-purpose trait definitions.
*   Implementations of the above in Java.

I've written up two relatively short informal introduction documents
which should give you a flavor of how everything is intended to work:

*   [Introduction to the Splot Object Model (SOM)](https://goo.gl/PbSKdx)
*   [Introduction to the SMCP](https://goo.gl/itGrYS)

More formal and through documentation is in the process of being
written, but a great deal of additional information can be found in
the Javadocs:

*   [Splot for Java API Documentation](https://goo.gl/QzuFqZ)

Specifically, the documentation for the following objects may be
particularly informative about the object model:

*   [`m2m.base.FunctionalEndpoint`](https://goo.gl/UxJFmg)
*   [`m2m.base.Technology`](https://goo.gl/mHziS9)

If you are curious about the experimental reference implementation,
the git repository can be found here: <https://goo.gl/iKNgiS>

Thoughts and feedback are welcome.

-/- Robert Quattlebaum

------

¹ I find it difficult to work on projects that don't have names, thus
have a tendency to name projects using random innocuous words, in this
case a word from Polish.