IBM Developer Blog

Follow the latest happenings with IBM Developer and stay in the know.

From a niche protocol to THE open-source messaging protocol for IoT

Before the Internet of Things was a thing, or really back around the time that the term Internet of Things was first mentioned in print (late 90s), I was collaborating with Arlen Nipper (now of CirrusLink) on devising a protocol to communicate with SCADA systems in the oil and gas industry. What started out as a highly niche protocol for a specific industry quickly became THE open-source protocol for any IoT device communication out in the wild.

MQTT, a publish-subscribe messaging model

MQTT is a messaging protocol, built on top of TCP/IP, that is based on the publish-subscribe messaging model. Publishers send the messages, subscribers receive the messages they are interested in, and brokers pass the messages from the publishers to the subscribers. Publishers and subscribers are MQTT clients, which only communicate with an MQTT broker. MQTT clients can be any device or application (from microcontrollers like the Arduino to a full application server hosted in the Cloud) that runs an MQTT library and that connects to an MQTT broker over a network. MQTT brokers manage the receiving of messages from publishers and the sending of messages to the subscribers (as well as managing the the lists of topics subscribers are interested in).

MQTT goes open source

As the Internet of Things took off, so did MQTT. The first open source MQTT broker, Mosquitto, was created in 2008, which in 2014, became the Eclipse Mosquitto project. In 2012, the Eclipse Paho project provided open-source MQTT client libraries for Java, C, JavaScript, and Python, and since then the list of MQTT client libraries has grown. In late 2014, MQTT Version 3.1.1 becomes an OASIS standard, paving the way in 2016 for MQTT to become an ISO standard.

MQTT takes over IoT

MQTT is the leading protocol for connecting IoT devices, overtaking HTTP, a mainstay in the Internet realm, in 2017. What’s more, MQTT has been chosen as the messaging protocol for IoT platforms for Amazon, Microsoft, and (of course) IBM, as well as many open source and other commercial broker products. IBM’s Watson IoT Platform provides not only massive-scale secure connectivity for MQTT devices, but also device management, data storage, and data analytics in the IBM Cloud. MQTT has also stood the test of scalability by becoming the messaging protocol behind Facebook Messenger.

What’s next for MQTT

What’s next for MQTT? We didn’t make any changes to the MQTT protocol for the first ten years of its life, suggesting we did a pretty good job of anticipating the needs of the market and its users. As the Internet matured, along with industrial devices and connectivity, and the advent of high-scale hosting in the Cloud, we realized that MQTT needed some additional features. It was important to me that we stayed true to the “founding principles” of MQTT: mainly that it was a compact, easy to understand and easy to implement specification. MQTT v5 was published in late 2018, and is on track to be ratified as an OASIS, and then ISO, standard in early 2019.

Meanwhile, every day, hundreds of millions of devices and applications send and receive data and commands across the Internet of Things, using MQTT.