Open Sourcing the Internet of Things Greg Burns Technical Steering Committee Chair AllSeen Alliance 24 March 2015 AllSeen Alliance 1
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 2
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 24 March 2015 AllSeen Alliance 3
The Problem To Be Solved The problem to be solved DISCOVER Nearby Friendly Devices IDENTIFY Services Running on Those Devices ADAPT To Devices Coming & Going MANAGE Diverse Transports INTEROPERATE Across Different OS s EXCHANGE Information & Services SECURE Against Nearby Bad Actors 24 March 2015 AllSeen Alliance 4
AllJoyn Mesh-of-Stars Network Architecture AllJoyn Router nodes Router Discovery/advertising Presence/session-management AllJoyn Router Publish/subscribe support Leaf nodes AllJoyn Router lication code Authentication and encryption AllJoyn Router AllJoyn Router 24 March 2015 AllSeen Alliance 5
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 24 March 2015 AllSeen Alliance 6
Devices Describe Their Capabilities Via Discoverable Self-Describing Service Interfaces I can send notifications. I have control panel I have a clock interface I can send notifications 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 I have control panel I display notifications. I have the clock interface! 72 120 80 The AllJoyn software framework is a collaborative open source project of the AllSeen Alliance I have lighting interface 24 March 2015 AllSeen Alliance 7
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 roved 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 24 March 2015 AllSeen Alliance 8
Software Architecture Leaf Node lication Layer AllJoyn Service Frameworks Onboarding Control Panel Notifications Lighting Etc Authentication & Encryption Advertising & Discovery Serialization & Deserialization Sessions & Presence AllJoyn Core AllJoyn Core Physical Layer Routing Node Physical Layer(s) About & Introspection Management Functions Multicast Fan-out Store & Forward Router Discovery Subscription & Filtering Message Router 24 March 2015 AllSeen Alliance 9
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 24 March 2015 AllSeen Alliance 10
AllJoyn Base Services ONBOARDING CONFIGURATION NOTIFICATIONS CONTROL PANEL 24 March 2015 AllSeen Alliance 11
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 24 March 2015 AllSeen Alliance 12
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 24 March 2015 AllSeen Alliance 13
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 24 March 2015 AllSeen Alliance 14
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 24 March 2015 AllSeen Alliance 15
Technical Steering Committee (TSC) TSC Membership Software architects and domain experts representing premier members Working group chairs Responsibilities rove projects and assign mature projects to working groups rove 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 24 March 2015 AllSeen Alliance 16
Current Working Groups Analytics & Telemetry Core Gateway Base Services Data- Driven API Lighting Certification & Compliance Developer Tools Smart Home 24 March 2015 AllSeen Alliance 17
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 24 March 2015 AllSeen Alliance 18
For More Information 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-andevents/newsletters 19
Thank you Follow us on For more information on AllSeen Alliance, visit us at: allseenalliance.org & allseenalliance.org/news/blogs 24 March 2015 AllSeen Alliance 20