What's the right way to design an IoT product to not be dependent on a startup's cloud servers? - Allow the app/device to point to a different host (running an open source version of the backend)? - Support LAN connectivity without round-tripping to a third party server? - Allow the user to load their own firmware onto the device? I don't know where the line is for these things, it seems to be a balance of convenienc…
Not designing an IoT product in the first place seems to me the right way to avoid this issue. The IoT feature can usually be achieved otherwise and seems to be added in so the company can have more power/control over the customer.
If you are adamant on making this IoT anyway, the only option is a distributed and/or federated network with an optional offline mode and option use of one's own network and server.