Live data from Hacker News

MQTT: An Implementer's Perspective

vasters.com

1–10 of 19 posts

Re: MQTT: An Implementer's Perspective

#2
Great write up! We found many of the same issues as you did when we tried connecting devices, so we created dweet.io.

We are not a substitute for MQTT, but we made dweet to help you get your things online quickly and easily so you can concentrate on making apps. Standards take forever to hash out, so we made something that can get you going really quickly.

Have you had a chance to look into dweet? https://dweet.io is the homepage, so let me know if you have any questions.

Thank you again

Re: MQTT: An Implementer's Perspective

#3
This write up is right on the mark. There are quite a few things about MQTT that seem to have the goal of supporting legacy expediency. At the same time, these dubious design elements undermine the nominal goals of the standard and in some cases flat out contradict those goals.

We know how to design modern, efficient, flexible wire protocols that can be driven at the rates required by M2M communication patterns. MQTT does not fit this description nor even makes an attempt to reflect best practices within its current scope.

Re: MQTT: An Implementer's Perspective

#4
post #2

Great write up! We found many of the same issues as you did when we tried connecting devices, so we created dweet.io. We are not a substitute for MQTT, but we made dweet to help you get your things online quickly and easily so you can concentrate on making apps. Standards take forever to hash out, so we made something that can get you going really quickly. Have you had a chance to look into dweet? https://dweet.io is…

This comment's sales pitch tone really comes to a crescendo around "Have you had a chance to look into dweet?", just FYI you may want to avoid this type of language in the future.

Re: MQTT: An Implementer's Perspective

#5

This write up is right on the mark. There are quite a few things about MQTT that seem to have the goal of supporting legacy expediency. At the same time, these dubious design elements undermine the nominal goals of the standard and in some cases flat out contradict those goals. We know how to design modern, efficient, flexible wire protocols that can be driven at the rates required by M2M communication patterns. MQTT…

Do you have some ideas for an alternative? Is it plausible, for example, to extend CoAP to cover MQTT use cases?

Re: MQTT: An Implementer's Perspective

#7

This write up is right on the mark. There are quite a few things about MQTT that seem to have the goal of supporting legacy expediency. At the same time, these dubious design elements undermine the nominal goals of the standard and in some cases flat out contradict those goals. We know how to design modern, efficient, flexible wire protocols that can be driven at the rates required by M2M communication patterns. MQTT…

For the life of me I can't find anywhere that says "extensibility" is a goal of MQTT. The main goals are clearly stated to be "simplicity" and "lightweight". Extensibility is the enemy of both. A lot of Clemens' points are based on the concept that MQTT is supposed to be extensible. When you realize that's not even a goal, most of his concerns become moot. He says "I'm not trying to create another AMQP" but if you think about what he's actually saying, it's quite the opposite.

Re: MQTT: An Implementer's Perspective

#8
post #7

This write up is right on the mark. There are quite a few things about MQTT that seem to have the goal of supporting legacy expediency. At the same time, these dubious design elements undermine the nominal goals of the standard and in some cases flat out contradict those goals. We know how to design modern, efficient, flexible wire protocols that can be driven at the rates required by M2M communication patterns. MQTT…

For the life of me I can't find anywhere that says "extensibility" is a goal of MQTT. The main goals are clearly stated to be "simplicity" and "lightweight". Extensibility is the enemy of both. A lot of Clemens' points are based on the concept that MQTT is supposed to be extensible. When you realize that's not even a goal, most of his concerns become moot. He says "I'm not trying to create another AMQP" but if you th…

There are not many modern app-level protocols and much fewer messaging protocols that don't allow for any end-to-end message metadata; at a minimum declaring what the payload content of a message is, when the message was generated, and an end-to-end ID. Content-type could be a mere byte the client sends to the app and where 0x01 spells "JSON". CONNECT shows how you can have a bitfield that can control the presence of headers. You can control the presence of 4 subsequent optional headers with 4 shape options in one byte. That's as simple as what happens in CONNECT and just as compact.

There are also not many modern app-level protocols that constrain their opcode-set to 4 bits quasi forever, so extensibility also means to have runway for future extension.

Re: MQTT: An Implementer's Perspective

#9
I've been working on a project to do building monitoring. I'm building a library in C that talks to an Akka/Scala backend.

I initially chose MQTT to connect from the C library (that runs on the device) to the Akka system, via RabbitMQ's support for MQTT.

As I get deeper into the implementation, I'm thinking about ripping out MQTT. I just don't know what purpose it has. I think a better pattern is to have some kind of TCP terminator that the client/device connects to, which then fans out into an AMQP-like messaging system. Pushing messaging away from the core, far towards the edge doesn't seem like a good idea in environments where you really care about whether something is up/connected, and also, the wire protocol you use from the cloud to your device can be a lot different from that which you'd use in a core/cloud/racked messaging system.

I also don't care for MQTT's security model.

All in all, I'm pretty disappointed with it as a protocol. I'd take something written in protobuf and well-documented any day over mqtt.

My project, in case anyone's interested: https://github.com/prefiat/iotelemetri-feederd

Re: MQTT: An Implementer's Perspective

#10
post #7

This write up is right on the mark. There are quite a few things about MQTT that seem to have the goal of supporting legacy expediency. At the same time, these dubious design elements undermine the nominal goals of the standard and in some cases flat out contradict those goals. We know how to design modern, efficient, flexible wire protocols that can be driven at the rates required by M2M communication patterns. MQTT…

For the life of me I can't find anywhere that says "extensibility" is a goal of MQTT. The main goals are clearly stated to be "simplicity" and "lightweight". Extensibility is the enemy of both. A lot of Clemens' points are based on the concept that MQTT is supposed to be extensible. When you realize that's not even a goal, most of his concerns become moot. He says "I'm not trying to create another AMQP" but if you th…

> A lot of Clemens' points are based on the concept that MQTT is supposed to be extensible.

No, I think they are based on the combination of factors:

(1) A lot of MQTT choices violate the stated design goals in a way which makes sense only to support extensibility,

(2) However, the specific way that MQTT specifies these things also makes them useless for extensibility.

(Plus, an extra serving of speculation about IBM's motivations heaped on top.)

Post reply on HN