Blog of Mender, an open source over-the-air update tool for embedded Linux devices, covering IoT updates and device security.
HN commenters call Mender a nice solution for A/B partition updates, though one sees the blog article as an ad for the product.
I think JavaFX could have been more successful if they would have managed it differently. I really liked it. The JavaFX developers were all great to deal with and would help you as much as they could.
One of the problems in my opinion is that once you went up the chain beyond the developers, it seemed like there were some people that didn't understand what they were doing or didn't care or possibly both. They had targets to meet (or something) and the health of the project was a secondary concern. Part of this could be seen by the messaging saying they were investing in JavaFX, mobile, etc., but most of the commits to the repo were done by a few people. I can't remember what the numbers were, but I remember being shocked and thinking that if one of the top two contributors disappeared the project would be in trouble.
However, the biggest mistake in my opinion was forcing JavaFX into the JDK way too quickly. You can tell that's the type of decision that comes from the top down. They wanted to be able to say the JDK had a next generation GUI toolkit and checking that box was more important than letting the project develop in a healthy manner.
Before JavaFX went into the JDK it was really easy to contribute to the project via the dedicated bug tracker and you could get quick, friendly, helpful feedback directly from the developers. Bugs were fixed and would land in the next release. After it was part of the JDK you had to use bugs.jdk.com and it became much harder…
I've never used anything in the product space, but I've read through some of the docs because IoT deployment interests me in the context of most network devices having terrible deployment and update strategies.
My favorite sales pitch was always Mender (https://mender.io) because it can be as simple as .img files and slice based booting. Unfortunately they changed their pricing a couple years ago and went from a hobbyist friendly pricing structure where you could scale down to $120 / year to charging for scale and features where the minimum cost to use delta updates is $3k per year. If you want something like mutual TLS authentication it's "call us" pricing.
When I looked at Balena I thought the whole architecture looked like a mess of complexity and containers when a simple .img would suffice for most use cases (IMO). It's also too expensive to get into without having a well understood target market for whatever IoT product you're planning to build. IE: No hobbyists or enthusiasts that just want to learn without having something sellable planned out.
IMHO all of the IoT deployment solutions charging tons of money for features and scale are a good example of where platforms like Cloudflare could reshape the industry. I think by going "all in" on Cloudflare Pages/Functions/Workers, etc. someone could build a "Cloudflare Native" platform that can afford to dominate the unserved (low-end) portion of those markets, but with the ability to scale up to accommodate the…
Disclaimer: I'm with Mender.io and author of the article.
The Yocto Project is a popular build system for your own embedded Linux distribution.
Mender integrates with the Yocto Project with a layer (https://github.com/mendersoftware/meta-mender), but is a separate project for end-to-end OTA, which includes the client and the management server. Both are licensed under Apache 2.0 thus it is freely available and you're not locked into a hosted-only backend.
Although this is an older blog post, here is how you can port the Mender client to a non-Yocto build system: https://mender.io/blog/porting-mender-to-a-non-yocto-build-system
OpenEmbedded/Yocto is one such Linux "distro", https://www.yoctoproject.org/ecosystem/iot
There is also the open-source Zephyr RTOS for IoT, of Intel WindRiver lineage, under Linux Foundation governance, https://www.zephyrproject.org
Edit: See http://mender.io for OTA updates (open-source client and server). If IoT device vendors separate their application code from the base operating system, e.g. via containers or virtualization, it may be possible for a vendor-authorized subscription service (like Mender) to deliver OTA updates for security-critical components.
The source of this article is Mender.io, which is an open source embedded linux distro that includes built-in OTA updates:
http://mender.io/
I can't speak to their quality as I haven't tried it yet. I have used Resin.io quite a bit and it's great if it fits your use case (and the pricing model makes sense for you).
Working in the IoT space can be... fun. Here's a high-level PDF on good OTA practices I've seen passed around before: https://mender.io/resources/product-briefs/_resources/Requirements%20for%20OTA.pdf