19 February 2015 AllSeen Alliance 1 Open Sourcing the Internet of Things Greg Burns Technical Steering Committee Chair AllSeen Alliance
Jul 16, 2015
19 February 2015 AllSeen Alliance 1
Open Sourcing the Internet of Things
Greg BurnsTechnical Steering Committee Chair
AllSeen Alliance
2
“Companies will win over Internet of
Things not in the boardroom, but on
the command line. The consortium
that gets excellent code to market
first, with a community that provides
great documentation and an inviting
atmosphere, will win. So far, only
AllSeen has done that, with code
available for download today.”
Matt Asay, VP Mobile at Adobe, via readwrite.com
19 February 2015 AllSeen Alliance 3
History of AllJoyn
• Late 2009 – Released as API Framework For Bluetooth Peer-To-Peer
• Connectivity
• Provided a protocol for rapid protocol development.
• Used DBus serialization format (standard on Linux platforms)
• Implemented distributed message-based software bus
• Extended to include WiFi and other reliable transport protocols
• Focused on proximal peer-to-peer applications (gaming, multi-screen, file sharing)
• Early 2011 - AllJoyn Released as Open Source Project on AllJoyn.org
• Supported Android, Linux and Windows PCs
• Late 2013 - AllSeen Alliance Formed
• To promote AllJoyn technology as the standard for IoT
19 February 2015 AllSeen Alliance 4
The problem to be solved
DISCOVERNearby Friendly
Devices
IDENTIFYServices Running on Those Devices
ADAPTTo Devices
Coming & Going
MANAGEDiverse
Transports
INTEROPERATEAcross Different OS’s
EXCHANGEInformation &
Services
SECUREAgainst Nearby
Bad Actors
The Problem To Be Solved
19 February 2015 AllSeen Alliance 5
AllJoyn Mesh-of-Stars Network Architecture
Router nodes
•Discovery/advertising
•Presence/session-management
•Publish/subscribe support
Leaf nodes
•Application code
•Authentication and encryption
App
App
App
AllJoyn
Router
App
App
App
AllJoyn
Router
App
App
App
AllJoyn
Router
App
AllJoyn
Router
App
AllJoyn
Router
19 February 2015 AllSeen Alliance 6
IoT and IoP
Standards Exist to Enable Interoperability
• AllJoyn is a standard protocol for developing standard protocols
The AllSeen Alliance is First and Foremost an Open Source Project
• Takes a “code first” approach to standardization
• Code is normative specifications are informative
The Standardization Mission of the AllSeen Alliance is Twofold:
• Maintain and evolve AllJoyn as the core framework for IoT
• Define open vertical standards as software interfaces on top of the core framework
These Software Interfaces are Formalized in Two Ways
• A description in a standardized XML schema
• An embodiment in an approved open source implementation
19 February 2015 AllSeen Alliance 7
I can send notificationsI have control panel
I have lighting interface
I can send notifications.I have control panelI have a clock interface
I display notifications.I have the clock interface!
I display notifications.I have the clock interface!
I display notifications.I have the clock interface!
I can send and display notifications
I can send notifications
The AllJoyn software framework is a collaborative open source project of the AllSeen Alliance
72°
120
80
Devices Describe Their Capabilities Via Discoverable Self-Describing Service Interfaces
19 February 2015 AllSeen Alliance 8
Path to Interoperability
To Pass Certification, Products Must Be Based on the Open Source
Implementation
• Eliminates common cause of failed IoP – misinterpretation of the specification
• Certification testing ensures compliance at interface level
• Device to device IoP tests provide functional compliance
Function of Many Working Groups is Definition of Interfaces for Specific Verticals
• Approved interfaces can become part of the standard
• Deliverables from working groups include working code, unit tests, and
compliance tests
• Devices that implement an interface must implement it completely
19 February 2015 AllSeen Alliance 9
Software Architecture
AllJoyn Core
Application Layer
AllJoyn Service Frameworks
Onboarding
Physical Layer
Authentication
& Encryption
Leaf Node
Serialization
& Deserialization“About”
& Introspection
Router
Discovery
Control Panel Notifications Lighting Etc
AllJoyn Core
Management Functions
Physical Layer(s)
Routing Node
Message Router
Advertising
& Discovery
Sessions &
Presence
Multicast
Fan-out
Store &
Forward
Subscription
& Filtering
19 February 2015 AllSeen Alliance 10
AllJoyn Core Implementations
Standard Core Library
• Implemented in C++
• Targets HLOS applications
• Platform-specific language bindings
• High-level abstraction
• Multi-thread support
• Synchronous and asynchronous APIs
• Dynamic object creation via introspection
• Library size around 600K bytes
Thin Core Library
• Implemented in C
• Targets embedded RTOS
applications
• C APIs
• Directly exposes AllJoyn message
layer
• Single thread message handler
• Blocking send/receive calls
• Static object and interface definitions
• Library size around 80K bytes
19 February 2015 AllSeen Alliance 11
AllJoyn Base Services
ONBOARDING
NOTIFICATIONS CONTROL PANEL
CONFIGURATION
19 February 2015 AllSeen Alliance 12
C&C and IRB
AllSeen Alliance Branded Products Must Meet Certification & Compliance Requirements
• Currently a “self-certification” process
• Must demonstrate that standard interfaces are being correctly used
• Must pass feature level interoperability tests
• Must be based on a compliant base implementation of the open source code
Interface Review Board
• A body composed of AllSeen Alliance members charged with approving interface
definitions
• Ensures interfaces a consistent and conform to best practices
• Ensures interfaces are non-overlapping
• Ensures interfaces are reasonably atomic
19 February 2015 AllSeen Alliance 13
Sample Interface Definition
<node name="/About"
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation="http://www.allseenalliance.org/schemas/introspect.xsd">
<interface name="org.alljoyn.About">
<property name="Version" type="q" access="read"/>
<method name="GetAboutData">
<arg name="languageTag" type="s" direction="in"/>
<arg name="aboutData" type="a{sv}" direction="out"/>
</method>
<method name="GetObjectDescription">
<arg name="objectDescription" type="a(sas)" direction="out"/>
</method>
<signal name="Announce">
<arg name="version" type="q"/>
<arg name="port" type="q"/>
<arg name="objectDescription" type="a(sas)"/>
<arg name="metaData" type="a{sv}"/>
</signal>
</interface>
</node> See About Interface Specification:
http://allseenalliance.org/docs-and-downloads/documentation/alljoyn-about-feature-10-interface-specification
19 February 2015 AllSeen Alliance 14
AllSeen Alliance Project Structure
Working Groups
• Provides an umbrella for a collection of related projects
• Each working group chair gets a voting seat on the Technical Steering Committee (TSC)
Projects
• Projects are where code gets committed to the AllSeen Alliance
• Each project has maintainer and one or more committers
• Committers are responsible for conducting code reviews and maintaining the integrity of the
project
• Anyone (member or not) can contribute to any project
Sub-Committees Under the TSC
• Perform various functions not necessarily related to code contribution
• Interface Review Board, Security Committee, Tools and Infrastructure Committee
19 February 2015 AllSeen Alliance 15
Project Workflow
Proposal
• One or more members make a proposal for a new project
• Scope and timeline must be well defined
• Project contributors, committers, and maintainer must be identified
Incubation
• Design underway, code is being contributed
Mature
• Shows a track record of ongoing contributions
• Ready or close to production quality release
• Compliance test cases delivered to C&C working group
Foundational
• Vetted for patent protection by membership
19 February 2015 AllSeen Alliance 16
Technical Steering Committee (TSC)
TSC Membership
• Software architects and domain experts representing premier members
• Working group chairs
Responsibilities
• Approve projects and assign mature projects to working groups
• Approve features and set schedules for releases
• Act on recommendations from IRB, security and other subcommittees
• Manage budget for technical services
• Provide technology updates and briefings for the broader membership
19 February 2015 AllSeen Alliance 17
Current Working Groups
Core
Data-Driven API
Developer
Tools
Gateway
Lighting
Smart Home
19 February 2015 AllSeen Alliance 18
Collaboration Scorecard
Projects
• 9 Working Groups
• 31 Projects
• 5367 Files
Contributions
• 83 Individual Contributors
• 17 Member Companies
• >3000 Contributions
Code
• >620,000 SLOC
• 250,000 Comment Lines
• 7 Programming Languages
19
Alliance Wiki: https://wiki.allseenalliance.org
• Documents, downloads, and developer tools
• Source Code, release overviews, roadmaps
• Training & Service Framework details
• Working Groups, New Proposals & meeting minutes
Forums: https://ask.allseenalliance.org/questions
Certification: https://allseenalliance.org/certification
Releases & Roadmaps:
https://wiki.allseenalliance.org/release/overview
Public Mail Lists: https://lists.allseenalliance.org/mailman/listinfo
Showcase: https://allseenalliance.org/showcase
Monthly Newsletter: https://allseenalliance.org/news-and-
events/newsletters
For More Information
19 February 2015 AllSeen Alliance 20
Thank you
Follow us on
For more information on AllSeen Alliance, visit us at:
allseenalliance.org & allseenalliance.org/news/blogs