by Emmanuel Baccelli, Oliver Hahm, Hauke Petersen and Kaspar Schleiser
The Internet of Things (IoT) is expected to be the next ‘big thing’. To date, however, there is no de facto standard software platform to program memory and energy-constrained IoT devices . We expect an evolution of IoT software platforms that can be roughly compared to the recent evolution of software platforms powering smartphones.
Over the course of a few years, there has been an acceleration in the evolution of software platforms powering smart handheld devices - from a state where dozens of closed-source, slow-progress, rudimentary proprietary solutions where used, to a state where just two major players (iOS and Android) have imposed new de facto standards in terms of software platform interoperability, programmability and automatic updating.
The up side of this evolution is quicker-paced progress and the development of innumerable applications built on top of these platforms, which interact in innovative ways with one another, and with the cloud. It has become so easy to develop such applications (the infamous ‘Apps’) that hundreds of thousands of developers have been able to produce millions of Apps, which have been installed/upgraded billions of times on smartphones and tablets. Arguably, the attribute of (re)programmability has had the most significant impact in this field, even more so than the evolution of handheld hardware.
On the dark side, companies pushing iOS and Android use such software platforms as tools to achieve questionable goals e.g., more or less covertly accumulating and monetizing personalized information. Furthermore, the true level of openness of iOS or Android is debatable, and their not being fully open facilitates the task of covertly accumulating personal information. The public is increasingly aware of this pitfall in terms of security and privacy, and it is therefore unlikely that people will accept IoT software platforms intrinsically tied to such monetization, or lacking enough openness. In contrast, prominent examples have achieved high impact in the domain of computer networks, while remaining open, and therefore more trustworthy: for instance, community-driven efforts such as Linux, or the IETF , each fundamental to the emergence of the Internet as we know it today. While Linux demonstrated the power of open source software development and became the go-to operating system for Internet hosts, the IETF is an outstanding example of the positive impact of open standards, transparent standardization processes, and open discussion forums.
Until recently, IoT software platforms were in a comparable state to that of smartphone software platforms before Android and iOS. It is likely, however, that new standards will be set in the near future, in terms of IoT software platform openness, API, automated software updates and other characteristics that are necessary to enable a modern, large scale, secure ecosystem. Such an evolution will be game-changing for the IoT, and will fuel a new world of distributed applications developed by a large variety of actors, on top of the dominant open software platform(s). As yet it is unclear which IoT software platforms will emerge as dominant.
In practice, IoT software platforms face conflicting requirements: interoperability with the Internet, memory-constrained embedded programming, and portable, open-source code. Over the last decade, significant progress has been made in order to accommodate such requirements. Pioneer open source software platforms such as Contiki or TinyOS provided first attempts at accommodating these requirements, by exploiting non-standard coding paradigms, or by limiting code portability and the set of functionalities offered by the software platform (for instance, Arduino environment). Recently, more powerful but comparably low memory-footprint software platforms became available.
A prominent example is RIOT , an open source IoT operating system which enables programmers to develop applications on typical IoT devices, with no learning curve (assuming prior experience with POSIX and Linux). On a wide variety of IoT hardware, RIOT enables the use of the standard coding languages (ANSI C and C++), well-known debugging tools (gdb, Valgrind etc.), and standard programming paradigms (such as full multi-threading), while being energy efficient and real-time capable. One way to gauge this effort is to make a parallel with IETF protocols such as 6LoWPAN or CoAP, which adapt IP to memory and energy-constrained IoT devices, without losing interoperability with the rest of the Internet. Similarly, a modern IoT operating system such as RIOT enables a full-fledged operating system on IoT devices with resources that are too limited for Linux to run on, without losing interoperability with state-of-the-art development tools and programmers.
Figure 1: Typical device memory characteristics, and matching operating systems available on traditional Internet hosts vs IoT devices
RIOT is developed by an international community of open source developers (co-founded in 2013 by Inria, Freie Universität Berlin, and Hamburg University of Applied Sciences in the context of the SAFEST project), using transparent decision processes based on rough consensus, open discussion forums, open-source code, and open standards. The near-future goal of RIOT is to power a modern, large scale, evolutionary, and secure cyber-physical ecosystem, comprising heterogeneous IoT devices, distributed processes and applications (see Figure 1). Such applications are expected to leverage spontaneous wireless networks, Internet connectivity, the cloud and a dense, interconnected environment of communicating devices. In the mid and long term, such IoT applications are expected to not only enable optimization of existing processes, but also entirely new processes and the emergence of an enhanced reality, in which our interface with the Internet will no longer be predominantly a screen, but rather the objects of the cyber-physical system embodied by the Internet of Things itself.
The SAFEST Project, co-funded by ANR and BMBF, http://safest.realmv6.org
 C. Bormann et al.: “Terminology for Constrained node Networks", RFC 7228, Internet Engineering Task Force, 2014.
 The Internet Engineering Task Force (IETF), http://www.ietf.org
 RIOT: The Friendly Operating System for the Internet of Things. http://www.riot-os.org