Johannes describes an “Indie IoT.” His vision is appealing. He believes users should be in control of the devices … in control of the data … be free to modify the devices they own. This is hardly radical stuff. Yet, this is far from the state of IoT today…
I would add that we should [put] our time [where it matters]. In particular, those of us that work in software can influence the direction of IoT by building code that enables the kind of IoT world we want to live in.
Yes! I’m glad, Peter, that you and Moddable are fellow travelers on this rarely traveled road.
This idea echoes back to the start of the Free Software movement, which has long focused on the idea of “free” as in “freedom” — the freedom to fully understand the software you are using and to be able to modify it however you like…
I agree with his further discussion that while having the source code to every IoT product, and the permission to modify it would be wonderful, we can do much better than today’s typical IoT products without requiring it in many cases. For one:
… the knowledge, skills, and time required to modify the software are out of reach of many in the software developer community, and any causal user of the product.
Oh, all the code I would examine and modify, if I had time! I have the knowledge and the skills, but certainly not the time. So in particular if the code isn’t open, it’s important to make products easily connectable, controllable and observable without any third party in the loop.
Peter suggests this can be accomplished simply by making “local network services” the default for IoT products. He describes it as:
… build[ing] into the product a [local-area] network service that allows other devices to receive status about the state of the IoT product and to send commands to control its operation.
On some level, this idea is “Duh”. Isn’t that how the internet works? But on some other level, this is a revolutionary idea. I can hear thousands of IoT developers and product managers exclaim in amazement: “What do you mean, I don’t have to go through the vendor’s cloud API?”
Yes, indeed, Virginia, there is a better way of doing IoT and it starts with local network services, not some vendor’s cloud. Local network services make IoT products:
- cheaper to produce and operate for the vendor;
- cheaper to buy for the user;
- much more flexible and powerful for the user;
- much more likely to grow the IoT market as a whole, because it opens up many otherwise closed avenues for innovation;
- an avenue for vendors to specialize in what they are really good at. Ever had to use some embedded device’s awful web user interface? Something you simply know a hardware engineer was forced to hack together although he really would have liked to work on real hardware engineering like reducing power consumption instead? If things are pluggable, others with expertise can plug their expertise in, and everyone benefits.
- Yep, it does hurt two kinds of vendors: those whose products suck, but because they have an excellent distribution channel, we have to put up with them (good riddance to them), and those whose goal is being an overlord over my house, and by implication, me. Well, demanding local networking services (and turning off the vendor cloud) is how the “subjects” of those would-be overlords revolt in IoT land. We don’t demand panem et circenses, but IoT local network services. (Care to join us?)
The next question then becomes: just what local network services? What’s the architecture going to look like so we can grow a big industry ecosystem around it, all without screwing the users? I don’t think anybody has all the answers yet, but this is going in the right direction! I will have some more thoughts in a future post.