Why language choices can be irrelevant when choosing the right IoT OS

This is the first in a series of two blogs exploring the finding from the latest Eclipse Foundation IoT Developer Survey.

A couple of months ago we posted a blog inviting developers to contribute to the 3rd Eclipse Foundation IoT Developer Survey. The 2017 results are now published with a total of 713 respondents, from all over the world. The survey gives an insight into the current state of play in the making of the internet of things in 2017. As well as bigger trends about IoT adoption across various industries, the survey also provides a developer perspective on the methods they use today to build the IoT devices and solutions around us.

Looking at the top programming languages used to build IoT solutions today, over 15 were listed with Java (60.9%) and C (60.5%) coming out as the top, followed by the likes of C++, Python and Javascript. As expected, the results produced subtle differences between constrained devices, IoT gateways and the cloud. Programming language ultimately is dependent on the target destination of the developed software, as shown in the graphs below.

When comparing some of these results with other developer surveys such as the latest Stackoverflow developer survey for example (dominated by Javascript -62.5%, Java -39.7%, C# -34% or Python 32%), IoT development shows the prevalence of “legacy” languages over the new scripting darling. The fact that some devices and code needs to be supported for 10 years probably explains the situation. What this really shows is how hard it is to do IoT development without reusing a number of C or Java libraries. The growth of Javascript and Python, however, demonstrate that more developers turn to these languages to do iterative and agile development, even in the once slow-moving embedded space.

So what does this mean for developers when building IoT solutions and the platforms they choose?

It would be natural to think that they will be looking for Operating Systems that will support this variety of languages and libraries. So it won’t be a surprise to see that, Linux was the OS of choice for IoT devices because of the number of distributions, tools, languages and libraries that make development faster. The kernel itself might be the reason for the success, with its well known and straightforward behaviour plus the ability to use drivers to adapt it to the various hardware types found in the field.

What might come as a surprise though is to see that among the various Linuxes in use in IoT, Ubuntu and Ubuntu Core were found to be a close second with 44%. Is it really a surprise though?

Both Ubuntu and Ubuntu Core are language agnostic meaning developers can work with their programming language of choice and more importantly it’s quite simple for them to install new languages and libraries thanks to the package managers. Building multiple services for gateways and other smart devices in an open source environment and in their preferred language then becomes a very attractive option.

The introduction of snaps with Ubuntu Core has also brought a new way of working in the IoT space. Developers are now able to control exactly what they ship regardless of what OS it’s going to run on. This makes a developer’s life easier by saving the need to statically build everything in whether it is for a large scale deployment, beta or testing.

Next week we’ll publish the second blog in this series exploring the survey from a business perspective.

Internet of Things

From home control to drones, robots and industrial systems, Ubuntu Core and Snaps provide robust security, app stores and reliable updates for all your IoT devices.

Newsletter signup

Select topics you’re
interested in

In submitting this form, I confirm that I have read and agree to Canonical’s Privacy Notice and Privacy Policy.

Related posts

Robotics Recap: Learning, Programming & Snapping ROS 2

Robotics@Canonical puts a strong focus on the migration from ROS to ROS 2. ROS 2 benefits from many improvements, especially robot security. Our goal is to...

How to manage snap updates

Updates are an integral part of the software lifecycle. Quite often, they bring improvements, vital security patches – and sometimes, unfortunately, bugs,...

Canonical enables Linux desktop app support with Flutter

By Chris Sells (Google) & Ken VanDine (Canonical) Google’s goal for Flutter has always been to provide a portable framework for building beautiful UIs that...